如何使用VBA将查询结果从子表单传递到报表?

时间:2019-06-10 22:48:51

标签: vba ms-access access-vba

我有一个子窗体,其中有一个数据表,一个文本框和一个按钮。我希望能够通过单击子窗体按钮使用文本框上的值将数据表上的记录输入到报表上。

该报告具有一个链接到查询qryrpt的记录源。如果我在qrypt上设置了条件,它将不断要求输入参数。我想避免这种情况,因为该参数与子窗体文本框中的值相同。有更好的方法吗?有人可以指出我正确的方向吗?

b()

2 个答案:

答案 0 :(得分:0)

@ 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

答案 1 :(得分:0)

我只是自己经历了一次。请参阅this。使用子窗体按钮的_Click事件过程,使用DoCmd的最后一个参数OpenArgs发送带有.OpenReport过程的预构建定界列表(记录集,然后是其他参数)。在报表的_Open Event Procedure中,将Split与上述定界符配合使用,以适当地细分您的参数。