Как собрать входные данные через форму и перейти к запросу отчета в Access - PullRequest
2 голосов
/ 04 октября 2010

У меня есть Access 2003 MDB, где я хотел бы представить небольшую форму для ввода пользователем двух параметров «Дата начала» и «Дата окончания». Благодаря другому пользователю Stack Overflow («Кевин Росс») я узнал, как встроить элемент управления формы непосредственно в запрос, который используется в отчете, который я хотел бы отобразить.

SELECT q1.CasesAssigned, q2.WarningsIssued  
FROM 
    (SELECT COUNT(*) AS CasesAssigned 
    FROM vwCaseDetail 
    WHERE DateAssigned Between [Forms]![frmReporting]![txtStartDate] 
        AND [Forms]![frmReporting]![txtEndDate]) as q1,  
    (SELECT COUNT(*) AS WarningsIssued 
    FROM vwWarningDetail 
    WHERE DateIssued Between [Forms]![frmReporting]![txtStartDate] 
        AND [Forms]![frmReporting]![txtEndDate]) as q2

Я пробовал два разных способа открыть отчет и передать ввод пользователя:

  1. После того, как пользователь введет параметры, я вызываю DoCmd.OpenReport "myReport", acViewPreview. Проблема в том, что отчеты открываются и закрываются так быстро, что я их даже не вижу. В идеале я хотел бы закрыть форму сбора данных и затем открыть отчет.

  2. Внутри события Report_Open у меня есть код, который открывает форму, которая собирает вводимые пользователем данные. Откроется форма сбора данных, однако в отчете мне все еще предлагается ввести эти два параметра. Кажется, что отчет не собирает параметры из формы сбора данных.

Есть ли какие-либо предложения о том, как правильно передавать данные, собранные в форме, в отчет? Спасибо.

1 Ответ

3 голосов
/ 08 февраля 2011

Ну

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

Вы можете выполнить свои реквизиты следующим образом:

  1. Создайте форму, содержащую поля, соответствующие вашим желаемым параметрам (например, два текстовых поля с именем Param1 и Param2, в форме с именем Form1)

  2. Создайте запрос, который извлекает данные для вашего отчета, ссылаясь в поле условий на параметры в форме (в примере [Forms]![Form1]![Param1] и [Forms]![Form1]![Param2]). Также щелкните правой кнопкой мыши на пустом месте построителя запросов и выберите «параметры». Сообщите все параметры (со всеми строками [Forms]![Form1]![Param1] и [Forms]![Form1]![Param2]) с правильным типом данных. Давайте назовем этот запрос Query1

  3. Создание отчета на основе Query1. Позволяет назвать этот отчет как Report1

  4. Вернитесь к Form1, создайте кнопку (используйте Мастер, она быстрее) для вызова Report1.

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

В других частях вашего приложения вместо прямого вызова Report1 вызовите форму1, которая будет управлять запросом и отображением Report1.

...