﻿<?xml version='1.0' encoding='UTF-8'?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>Релиб / Access / Базы данных  / Можно ли полям назначить результат вычисления SQL-запроса? / Latest Posts</title><generator>InstantForum.NET v4.1.4</generator><description>Релиб</description><link>http://www.relib.com/forums/</link><webMaster>robot@relib.com</webMaster><lastBuildDate>Wed, 03 Dec 2008 06:13:20 GMT</lastBuildDate><ttl>20</ttl><item><title>RE: Можно ли полям назначить результат вычисления SQL-запроса?</title><link>http://www.relib.com/forums/Topic858276-20-1.aspx</link><description>Может, я не понял проблемы, но, насколько я знаю, полю нельзя напрямую присвоить значение SQL-запроса, т.к. SQL-запрос по сути возвращает _набор_значений_ (даже если в этом наборе только 1 запись) а полю можно задать только одно значение.В случае, если вам необходимо присвоить полю значение, возвращаемое запросом, то лучше поступить следующим образом:1. Создаете новый модуль2. Создаете в нем Public Function, которая будет возвращать вам значение из вашего SQL-запроса. (Кстати, функция может быть с параметрами, что расширяет возможность реализации ваших самых буйных фантазий :))3. Полю на форме присваиваете вашу функцию.Вот пример функции, которая возвращает НДС для указанного продуктав зависимости от принадлежности его к тому или иному типу.(Все продукты хранятся в таблице DICT_PRODUCT, каждый продукт принадлежит к тому или иному типу. Все типы хранятся в DICT_ProdType. В последней таблице есть поле [NDS])Итак,Аргумент функции - lngID_Product - ид.номер продуктаНа выходе имеем значение НДС-----------Public Function GetNDS(lngID_Product As Long) As ByteDim cnn As ADODB.ConnectionDim strSQL$Set cnn = CurrentProject.ConnectionDim rst As ADODB.RecordsetSet rst = New ADODB.RecordsetstrSQL = &amp;quot;SELECT DICT_Product.ID_Prod, DICT_Product.ID_ProdType, DICT_ProdType.stNDS FROM DICT_ProdType INNER JOIN DICT_Product ON DICT_ProdType.ID_ProdType = DICT_Product.ID_ProdType WHERE DICT_Product.ID_Prod = &amp;quot; &amp;amp; lngID_Product &amp;amp; &amp;quot;;&amp;quot;rst.Open strSQL, cnn, adOpenForwardOnly, adLockReadOnlyWith rstIf Not .EOF Then 'если переданный аргумент соответствует                 'существующему продукту, то запрос вернет одну и                 'только одну запись.                 'поэтому можно сразу присвоить функции значение                  'stNDS из текущей строки рекордсетаGetNDS = !stNDSElseMsgBox &amp;quot;не найден стандартный НДС. Будет использован НДС=0&amp;quot;GetNDS = 0End IfEnd WithEnd Function---------------Теперь в форме, имеющей поля txtProductID и  txtNDS, для поля txtNDS можно в свойстве &amp;quot;данные&amp;quot; смело использовать следующую конструкцию:=GetNDS([txtProductID])</description><pubDate>Sat, 25 Jun 2005 20:37:00 GMT</pubDate><dc:creator>skan</dc:creator></item><item><title>RE: Можно ли полям назначить результат вычисления SQL-запроса?</title><link>http://www.relib.com/forums/Topic858276-20-1.aspx</link><description>Тоже присоединяюсь к вопросу!Есть запрос на выборку, с агрегатными функциями. Т.е. Запрос выдаёт только 3 значения (3 суммы). В запросе 3 условия. Как можно запустить этот запрос и результат присвоить какому либо полю?Пробовал так:Dim table As DAO.RecordsetDim SQL_Query As VariantSQL_Query = &amp;quot;SELECT .....&amp;quot;DoCmd.RunSQL SQL_QuerySet table = CurrentDb.OpenRecordset(SQL_Query, dbOpenDynaset)If Not table.EOF Then Pole1 = table.Fields(0)Не работает :(</description><pubDate>Mon, 30 May 2005 14:17:00 GMT</pubDate><dc:creator>Flaer</dc:creator></item><item><title>RE: Можно ли полям назначить результат вычисления SQL-запроса?</title><link>http://www.relib.com/forums/Topic858276-20-1.aspx</link><description>я согласен что хранить вычисляемые значения в базе это не очень.&lt;BR&gt;Просто если выбирать - делать это запросе при выборке или чтобы &lt;BR&gt;это делалось автоматически, я подумал что можно бы и автоматически.&lt;BR&gt;Тем более что мне постоянно нужно вытаскивать из прайса сумму количеств по одной строке. Я хотел сделать Итого с автовычислением.&lt;BR&gt;Оно а работало бы быстрее. ;) </description><pubDate>Tue, 22 Feb 2005 13:53:00 GMT</pubDate><dc:creator>Sunny1004</dc:creator></item><item><title>RE: Можно ли полям назначить результат вычисления SQL-запроса?</title><link>http://www.relib.com/forums/Topic858276-20-1.aspx</link><description>У меня такое чувство, что на самом деле этого не надо, можно обойтись мирными способами.&lt;BR&gt;Может ты сформулируешь, что ты хочешь получить на выходе, и подумаем, каким образом это можно сделать.&lt;BR&gt;А хранить в базе результаты вычислений данных, это денормализация.</description><pubDate>Tue, 22 Feb 2005 12:17:00 GMT</pubDate><dc:creator>Ирча</dc:creator></item><item><title>RE: Можно ли полям назначить результат вычисления SQL-запроса?</title><link>http://www.relib.com/forums/Topic858276-20-1.aspx</link><description>Полям чего? Таблицч - думаю нет. Во-первых в Access нет тригеров, а во-вторых появляется избыточность информации (а зачем это нужно?). Формы или отчета - да, конечно можно.</description><pubDate>Tue, 22 Feb 2005 11:22:00 GMT</pubDate><dc:creator>SavE</dc:creator></item><item><title>RE: Можно ли полям назначить результат вычисления SQL-запроса?</title><link>http://www.relib.com/forums/Topic858276-20-1.aspx</link><description>Поле.ControlSource = CurrentProject.Connection.Execute(&amp;quot;Select fldSumm From MyQuery&amp;quot;).GetString...не уверен что так прокатит... можно тогда и:Private Sub lalala()&lt;BR&gt;Поле = CurrentProject.Connection.Execute(&amp;quot;Select fldSumm From MyQuery&amp;quot;).GetString&lt;BR&gt;End Sub</description><pubDate>Mon, 21 Feb 2005 06:43:00 GMT</pubDate><dc:creator>Deminik</dc:creator></item><item><title>Можно ли полям назначить результат вычисления SQL-запроса?</title><link>http://www.relib.com/forums/Topic858276-20-1.aspx</link><description>Можно ли полям назначить результат вычисления SQL-запроса?&lt;BR&gt;Как в exel...то есть одному полю назначить, например, сумму других?&lt;BR&gt;В пределах одной строки и таблцы хотя бы...</description><pubDate>Sun, 20 Feb 2005 18:35:00 GMT</pubDate><dc:creator>Sunny1004</dc:creator></item></channel></rss>