У меня есть модуль в большой базе данных Access, который пытается подсчитать количество уникальных записей в таблице, используя функцию ECount (Extended D-Count), написанную Алленом Брауном (здесь: http://allenbrowne.com/ser-66.html).
Как он упоминает в руководстве по его использованию:
Вы не можете встроить ссылку на форму в аргументах. Например, это не будет работать:
ECount ("*", "Клиенты", "Город = Форм! Клиенты! Город")
Вместо этого объедините значение в строку:
ECount ("*", "Клиенты", "City = "" "& Forms! Customers! City &" "" ")
К сожалению, запрос, отправляемый в ECount (параметр" domain "), сам вызывает другой запрос, основанный наформа для ввода. Итак, в итоге я косвенно пытаюсь ECount использовать переменную формы, даже если в самой строке запроса нет записанной переменной формы, поэтому я получаю:
Выполнитьошибка 3061: слишком мало параметров. Ожидается 1. В строке: «Set rs = db.OpenRecordset (strSql) "
Запрос, отправляемый в OpenRecordset:" ВЫБЕРИТЕ Ключ ОТ Report7Query WHERE (Ключ не является нулевым) И (MainCategory = "Источник" И 1 = 1 И ([Состояние] = 'AR ")')) GROUP BY Key; ".Этот запрос генерируется на основе входных данных для формы, и Report7Query вызывает другой запрос с именем CustomQuery, который (я думаю) опирается на форму (также называемую CustomQuery) для своих входных данных.
Если я просто пытаюсь запустить Report7Query снет открытых форм, появляется диалоговое окно с запросом «Forms! CustomQuery! ConsolidatedSelection.Value», который является переменной в форме CustomQuery.То же самое происходит, если я просто пытаюсь открыть запрос CustomQuery.Интересно, что если я открою форму CustomQuery в представлении «Дизайн» и затем выполню либо Report7Query, либо запрос CustomQuery, либо даже приведенный выше оператор выбора в своем собственном запросе, то все это будет работать.
Я пробовал многочисленные подходы кисправить это, например, с помощью QueryDefs, но я не могу заставить ECount работать.Интересно, что DCount прекрасно работает с точно таким же запросом.