#ms-access
#ms-access
Вопрос:
У меня есть отчет MS Access 2007, основанный на запросе, который имеет некоторые параметры, которые можно изменить, выбрав значения в списках, которые находятся в заголовке отчета. Поток выглядит следующим образом:
- Пользователь выбирает параметры в списках
- Пользователь нажимает кнопку «Создать». К нему прикреплено событие OnClick, которое просматривает все списки, выбирает их выбор, собирает инструкцию SQL и устанавливает ее в качестве источника для базового запроса MS Access.
- Единственный способ, который я смог найти для правильного обновления отчета, — это сначала выполнить
Me.Requery
, а затем закрыть и снова открыть отчет. ПростоMe.Requery
этого было недостаточно. - После повторного открытия отчета все выбранные элементы в списках теряются. Но у меня они сохранены в переменной, и я мог бы вернуть их обратно, но я не могу найти подходящее событие.
Я пробовал Report Load
, Open
, Current
events — ни один из них не работал. Для Current
события я вижу, что выбор устанавливается, но затем немедленно отменяется. Может ли кто-нибудь подсказать мне, какое другое событие я мог бы попробовать или, может быть, немного другой подход все вместе?
Ответ №1:
Мне кажется, это можно было бы сделать проще, предоставив пользователю форму с этими элементами управления в виде списка, позволить ей сделать там свой выбор, а затем передать критерии выбора в качестве параметра WhereCondition в DoCmd.OpenReport.
На этой странице параметром whereecondition является «Строковое выражение, которое является допустимым предложением SQL WHERE без слова WHERE«.
Комментарии:
1. Согласен, но это делает интерфейс неуклюжим — вам нужно что-то выбрать здесь, а затем посмотреть результаты там.. Я бы хотел, чтобы все было максимально простым в использовании, иначе мои «пользователи» просто воздержатся от использования БД (у них есть такая опция — просто придерживаться старого доброго списка Excel)
2. Как насчет наличия формы (возможно, непрерывной), содержащей КАК параметры, ТАК И результаты параметризованного запроса? Это может быть лучшим пользовательским интерфейсом для ПРОСМОТРА данных на экране. И затем вы можете создать отчет (и добавить кнопку печати в форму), если ваши пользователи хотят, чтобы распечатка выглядела лучше, чем прямая распечатка самой формы.