Передача значений отчета в запрос - PullRequest
0 голосов
/ 27 февраля 2011

Я новичок в Microsoft Access, так как мой опыт в основном .NET. Я уверен, что то, что я пытаюсь сделать, очень просто, но мне нужно какое-то направление. У меня есть отчет и запрос. Запрос возвращает одно числовое значение на основе одного числового критерия.

Выберите сумму из таблицы, где id = [тема]

Я разместил текстовое поле в своем отчете, чтобы я мог указать идентификатор для этого запроса и получить в итоге сумму. Похоже, что DLookUp - это то, что я хочу, но независимо от того, как я его создаю, я получаю «#Error» в текстовом поле при запуске отчета.

В настоящее время мой DLookUp выглядит так (я просто жестко запрограммировал его сейчас для простоты):

=DLookUp("[total]","myquery","[topic] = 3")

Как передать значение из поля в отчете в запрос, чтобы я мог вернуть одно числовое значение запроса?

Спасибо.

Ответы [ 2 ]

2 голосов
/ 27 февраля 2011

Если у вас есть запрос с именем myquery , с параметром с именем topic :

Select total from table where id = [topic]

Вы можете изменить myquery на это:

Select total from table;

Тогда ваш DLookUp может быть таким:

=DLookUp("[total]","myquery","id = 3")

Однако, в этом случае myquery не слишком полезен. Вы можете напрямую прислониться к столу.

=DLookUp("[total]","table","id = 3")

Если вместо 3 вы хотите подставить значение из текстового поля, txtId , попробуйте это так:

=DLookUp("[total]","myquery","id = " & Me.txtId)

Кстати, таблица не является хорошим выбором для имени таблицы. См. Имена проблем и зарезервированные слова в Access

1 голос
/ 27 февраля 2011

Запрос возвращает одно значение, поэтому вам не требуется оператор where, поэтому:

 =DLookUp("[total]","myquery")

Вы также можете использовать DSum или DCount, если хотите пропустить запрос, тогда вам понадобится оператор where. Другая странная проблема возникает, когда вы используете элемент управления с тем же именем, что и выбранное поле для чего-либо, кроме поля.

РЕДАКТИРОВАТЬ комментарий

Допустим, у вас есть запрос, AQuery:

 SELECT ID, AField FROM ATable 

Вы можете сказать:

 =DLookUp("Afield","AQuery","ID=" & [ANumericReportField])

Или

 =DLookUp("Afield","ATable","ID=" & [ANumericReportField])

Вы также можете сказать:

 =DSum("ANumericField","ATable","ATextField='" & [ATextReportField] & "'")
...