从 DoCmd.OpenReport 将参数传递给 Access 2010 报告
Posted
技术标签:
【中文标题】从 DoCmd.OpenReport 将参数传递给 Access 2010 报告【英文标题】:Pass parameters to Access 2010 report from DoCmd.OpenReport 【发布时间】:2013-02-18 13:53:48 【问题描述】:我有一个表单,它有 2 个文本框和 1 个按钮。文本框是日期从和日期到。单击该按钮时,会运行一些 VBA 代码,该代码会循环查询结果 (qryInvoicesBetweenDates),获取发票 ID 并生成发票的打印预览。问题是,我无法弄清楚如何在循环中将当前 ID 传递给报告。我只需要给 DoCmd.OpenReport 他 invoice_number 变量。
VBA 代码:
Dim qdf As QueryDef
Set qdf = CurrentDb.QueryDefs("qryInvoicesBetweenDates")
Dim rs As DAO.Recordset
qdf.Parameters(0) = tbFrom.Value
qdf.Parameters(1) = tbTo.Value
Set rs = qdf.OpenRecordset()
Do Until rs.EOF = True
' Set the invoice number to the current row
'invoice_number = rs.N
invoice_number = rs.Fields(0).Value
' Preview the invoice
Dim stDocName As String
stDocName = "InvoiceForWork"
DoCmd.OpenReport stDocName, acPreview
Loop
非常感谢。
【问题讨论】:
【参考方案1】:您可以在 OpenReport 中使用 where 语句:
DoCmd.OpenReport stDocName, acPreview,,"ID=" & Rs!invoice_number
其中 ID 是报告中对应于Rs!invoice_number
的字段的名称。上面的例子是数字数据类型,文本数据类型需要引号。
【讨论】:
以上是关于从 DoCmd.OpenReport 将参数传递给 Access 2010 报告的主要内容,如果未能解决你的问题,请参考以下文章
从 DoCmd OpenReport 打印报表时触发 Microsoft Access 中的事件
MS.Access - 在 DoCmd.OpenReport [where 条件] 中使用 2 个过滤条件从表单打印报表