Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
 DSUM  [new]
vremennyy
Member

Откуда:
Сообщений: 121
ДВС!
Согласно справки:
DSum(выражение, подмножество [, условия])...
, где подмножество - обязательный аргумент. Строковое выражение, определяющее набор записей, которые образуют подмножество. Это может быть имя таблицы или имя запроса, для которого не требуются параметры.

Вопрос: возможно ли вместо имени таблицы или имени запроса написать сам запрос. типа "Select *" и т.д.?
16 май 19, 11:33    [21886048]     Ответить | Цитировать Сообщить модератору
 Re: DSUM  [new]
__Michelle
Member

Откуда:
Сообщений: 3031
vremennyy,

Можно.
Но отчего Вы сами не попробовали?

Что такое "ДВС"? Ругательство, может?
16 май 19, 11:45    [21886060]     Ответить | Цитировать Сообщить модератору
 Re: DSUM  [new]
Прогер_самоучка
Member

Откуда:
Сообщений: 67560
__Michelle
Что такое "ДВС"?
ИМХО,
ДВС - Доброго Времени Суток.
16 май 19, 12:06    [21886082]     Ответить | Цитировать Сообщить модератору
 Re: DSUM  [new]
Панург
Member

Откуда: настоящему индейцу завсегда везде ништяк
Сообщений: 4165
vremennyy
Вопрос: возможно ли вместо имени таблицы или имени запроса написать сам запрос. типа "Select *" и т.д.?

__Michelle
Можно.
?
16 май 19, 12:08    [21886086]     Ответить | Цитировать Сообщить модератору
 Re: DSUM  [new]
__Michelle
Member

Откуда:
Сообщений: 3031
Панург,

Сама удивляюсь.
Но, оказывается, получается.

Недавно, недели две назад, столкнулась с этим.
Не поверила.
Но проверила.
И такой сюрприз.
16 май 19, 12:18    [21886096]     Ответить | Цитировать Сообщить модератору
 Re: DSUM  [new]
__Michelle
Member

Откуда:
Сообщений: 3031
Панург,

Ой, нет.
Я перепутала.

Это в условии можно подзапрос использовать.
Типа такого:
DLookup("T", "Tab2", "N=(SELECT TOP 1 5 FROM Tab1)")


Простите. Поторопилась.)))
16 май 19, 12:32    [21886111]     Ответить | Цитировать Сообщить модератору
 Re: DSUM  [new]
Кривцов Анатолий
Member

Откуда:
Сообщений: 237
vremennyy
возможно ли вместо имени таблицы или имени запроса написать сам запрос. типа "Select *" и т.д.?
Нельзя.
Если вы используете функцию в коде, то можно, например, так:
x = CurrentDB.OpenRecordset("SELECT Sum([Сумма]) FROM...").Field(0)
Еще можно в условиях одной функции по подмножеству (например DSum к таблице1) использовать другую функцию по подмножеству (DLookup, DMin, DMax к таблице2)
А еще можно, как написала Michelle. Т.е. в аргументе "условия" можно указывать любую конструкцию, допустимую для WHERE в запросе, возвращающем данные из одной таблицы или сохраненного запроса.

Если покажете текст запроса и объясните, где собираетесь использовать функцию - продолжим.
16 май 19, 12:59    [21886143]     Ответить | Цитировать Сообщить модератору
 Re: DSUM  [new]
vremennyy
Member

Откуда:
Сообщений: 121
Кривцов Анатолий
vremennyy
возможно ли вместо имени таблицы или имени запроса написать сам запрос. типа "Select *" и т.д.?
Нельзя.
Если вы используете функцию в коде, то можно, например, так:
x = CurrentDB.OpenRecordset("SELECT Sum([Сумма]) FROM...").Field(0)
Еще можно в условиях одной функции по подмножеству (например DSum к таблице1) использовать другую функцию по подмножеству (DLookup, DMin, DMax к таблице2)
А еще можно, как написала Michelle. Т.е. в аргументе "условия" можно указывать любую конструкцию, допустимую для WHERE в запросе, возвращающем данные из одной таблицы или сохраненного запроса.

Если покажете текст запроса и объясните, где собираетесь использовать функцию - продолжим.


Функция в форме. Если обратиться к существующему запросу или таблице, то проблем нет. С условиями тоже проблем нет. "Не хотелось бы" сохранять запрос.

Сам запрос типа
SELECT tb_1.ID, tb_3.O, tb_1.K
FROM tb_3 INNER JOIN (tb_2 INNER JOIN tb_1 ON tb_2.ID = 1.KP) ON tb_3.ID = tb_2.KV;


В условиях tb_1.ID, tb_3.O, сумма tb_1.K.

Скорее всего тут ответ
Кривцов Анатолий
Нельзя.
Но вдруг есть варианты...
16 май 19, 14:13    [21886260]     Ответить | Цитировать Сообщить модератору
 Re: DSUM  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 5719
vremennyy
Вопрос: возможно ли вместо имени таблицы или имени запроса написать сам запрос. типа "Select *" и т.д.?

Или я чего-то не понимаю....
Зачем сохраненный запрос?
HELP: "Условие-необязательное строковое выражение, ограничивающее диапазон данных, для которых производится суммирование значений. Например, аргумент условие часто является эквивалентом предложения WHERE инструкции SQL"
16 май 19, 14:33    [21886299]     Ответить | Цитировать Сообщить модератору
 Re: DSUM  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 5719
вдогонку:ведь запрос это та же таблица с неким отбором данных
16 май 19, 14:37    [21886308]     Ответить | Цитировать Сообщить модератору
 Re: DSUM  [new]
vremennyy
Member

Откуда:
Сообщений: 121
sdku
vremennyy
Вопрос: возможно ли вместо имени таблицы или имени запроса написать сам запрос. типа "Select *" и т.д.?

Или я чего-то не понимаю....
Зачем сохраненный запрос?
HELP: "Условие-необязательное строковое выражение, ограничивающее диапазон данных, для которых производится суммирование значений. Например, аргумент условие часто является эквивалентом предложения WHERE инструкции SQL"


Режите без ножа: сохраненный запрос нужен для того, чтобы обратиться к нему в DSum - так поясняет справка. Только вопрос как раз в том, возможно ли без сохранения.

С условием проблемы нет.
16 май 19, 15:08    [21886355]     Ответить | Цитировать Сообщить модератору
 Re: DSUM  [new]
vremennyy
Member

Откуда:
Сообщений: 121
sdku
вдогонку:ведь запрос это та же таблица с неким отбором данных


и?
16 май 19, 15:08    [21886356]     Ответить | Цитировать Сообщить модератору
 Re: DSUM  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 5719
vremennyy
Режите без ножа: сохраненный запрос нужен для того, чтобы обратиться к нему в DSum - так поясняет справка. Только вопрос как раз в том, возможно ли без сохранения.
С условием проблемы нет.
Запрос строится на таблице или нескольких таблицах(при этом условие будет использовать значение(я) поля(ей, которые можно возвратить,например, ф-цией Dlookup) в других таблицах). И зачем нужен "посредник" в виде запроса,когда можно обратиться напрямую к таблице. А лучше всего выложите свои наработки и поясните чего хотите.
Очень хоча взглянуть на схему БД
16 май 19, 15:51    [21886403]     Ответить | Цитировать Сообщить модератору
 Re: DSUM  [new]
Кривцов Анатолий
Member

Откуда:
Сообщений: 237
vremennyy
Функция в форме.
Исчерпывающий ответ. В форме, это, как минимум, два варианта - в модуле формы и в вычисляемом поле.
Если у вас это в модуле формы, то чем не устраивает предложенный вариант
x = CurrentDB.OpenRecordset("SELECT Sum([Сумма]) FROM...").Field(0) ?
При желании это можно обернуть в универсальную функцию, получающую SQL выражение и возвращающую значение первого поля из первой записи (или Null, если записей нет). Эту функцию можно использовать и в вычисляемых полях.

Если, всё же, исследуем DSum, то попробуйте так:
DSum("[K]", "[tb_1]", "ID=1 AND KP In (SELECT tb_2.ID FROM
tb_3 INNER JOIN tb_2 ON tb_3.ID = tb_2.KV WHERE tb_3.O=2)").
17 май 19, 10:54    [21887000]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить