последовательность событий в ACCESS - PullRequest
0 голосов
/ 09 июня 2010

как правильно выполнить следующие действия:

  1. получение ДАТЫ в качестве пользовательского ввода
  2. выполнение запроса
  3. создание отчета, использующего запрос

это решение, о котором я думал:

  1. имеет форму, которая принимает пользовательский ввод
  2. запустите запрос
  3. откройте отчет

как правильно это сделать>?

Ответы [ 3 ]

2 голосов
/ 09 июня 2010

Запрос может ссылаться на форму, поданную как входной параметр, который может использоваться в качестве запроса результатов к отчету.

  • Так что есть форма с пользовательским вводом даты.
  • Поместите кнопку, которая откроет отчет.
  • отчет должен использовать запрос / встроенный sql, который использует поле из формы в качестве ввода.

Как правило, отчет, когда он запускается без открытой формы, запрашивает значение «поля формы».

Таким образом, в общем случае вы создаете форму отчетов, из которой вы можете получать отчеты, которые имеют необходимыеполя для отчетов.

2 голосов
/ 10 июня 2010

Я не согласен с этим подходом, поскольку мне не нравится привязывать отчеты к определенным формам.

Вместо этого я использую диалоговую форму (как здесь), которая открывается в событии OnOpen отчета, изаписывает источник записей отчета.

Если вы хотите, чтобы отчет мог быть запущен без всплывающего диалогового окна, вы можете сделать его условным для OpenArgs, или, скажем, если свойство Filter уже установлено (чтопроисходит, если вы используете DoCmd.OpenReport с аргументом WHERE.

Мне нравится делать отчеты и диалоги максимально независимыми, и часто я буду использовать модуль автономного класса в качестве структуры хранения данных и проверяю егов событии OnOpen.Если общедоступной переменной для соответствующего экземпляра модуля класса является Nothing, просто запустите отчет, в противном случае извлеките данные из свойств экземпляра модуля класса и запишите источник записей.

Таким образом, выможет иметь диалоговую форму и отчет полностью независимыми.Оба должны ничего не знать друг о друге, но оба будут использоваться с модулем класса (хотя форме не нужно ничего знать о экземпляре модуля класса).

Для получения более подробной информации просто спросите.

Это сложная тема, и я потратил годы на ее разработку, чтобы сделать приложения максимально удобными в обслуживании.Разделение объектов пользовательского интерфейса друг от друга - это одна из вещей, которая способствует лучшему повторному использованию и, следовательно, лучшему удобству обслуживания и расширяемости.

(конечно, вам не нужно использовать модули классов - выможет использовать пользовательские типы, массивы или что-то еще, но мне нравится возможность иметь несколько экземпляров одной и той же структуры, что и является целью модуля класса)

1 голос
/ 09 июня 2010

Я бы создал кнопку в форме, в которой вы строите запрос и открываете отчет в режиме предварительного просмотра (при условии, что они не хотят просто автоматически отправлять его на принтер по умолчанию) в процедуре события Click для кнопки.

...