Как передать результаты запроса из подчиненной формы в отчет с использованием VBA? - PullRequest
0 голосов
/ 11 июня 2019

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

Отчет имеет источник записи, связанный с запросом qryrpt. Если я добавлю критерий в qrypt, он будет постоянно запрашивать параметр для ввода. Я хочу избежать этого, поскольку параметр совпадает со значением в текстовом поле подчиненной формы. Есть ли лучший способ сделать это? Может ли кто-нибудь указать мне правильное направление?

Private Sub createreport_Click()

Dim Task As String
Dim SearchResults

Me.txtSearch.Value = Me.SearchResults
Task = "SELECT * FROM tblA WHERE ((Location Like ""*" & SearchResults & 
"*""))"

Me.frmDatasheet.Form.RecordSource = Task

Me.SearchResults.Value = Reports!rptName.txtheading
DoCmd.OpenReport "rptName", acViewPreview

End Sub

Ответы [ 2 ]

0 голосов
/ 11 июня 2019

Я сам прошел через это сам.Пожалуйста, смотрите это .Используя процедуру события _Click кнопки подчиненной формы, используйте последний параметр DoCmd OpenArgs, чтобы отправить предварительно сформированный список с разделителями (сначала набор записей, а затем другие параметры) с процедурой .OpenReport.В процедуре _Open Event отчета используйте Split с вышеупомянутым разделителем для правильного разделения параметров.

0 голосов
/ 11 июня 2019

как предложил @ june7 - это одна возможность

Я бы предпочел по-другому

создать запрос и сохранить как reportQuery_Task с запросом, как показано ниже

SELECT * FROM tblA

используйте этот запрос в качестве источника записей в своем отчете rptName

Private Sub createreport_Click()

Dim Task As String
Dim SearchResults


Me.txtSearch.Value = Me.SearchResults
Task = "SELECT * FROM tblA WHERE ((Location Like ""*" & SearchResults & 
"*""))"

Me.frmDatasheet.Form.RecordSource = Task

'used this to change your query at run time based on the user selected criteria.
CurrentDb.QueryDefs("reportQuery_Task").sql = Task

Me.SearchResults.Value = Reports!rptName.txtheading
DoCmd.OpenReport "rptName", acViewPreview

End Sub
...