将参数传递到表单中的报表

时间:2012-02-23 04:29:47

标签: ms-access report ms-access-2010 parameter-passing

我是Access 2010的新手。我建立了一个小型CRM / Invoicing数据库作为练习并使用了一段时间。我使用了很多来自Northwind的例子来学习,但我不太了解传递参数。

我有两张发票数据表(索引和数据),索引表中的PK是客户看到的实际发票号,然后它也是数据表中的FK。我设置了一个查询,让我的报告处理所有项目和总计,并将其设置在报告上。如果直接调用报告,则会询问参数是否包含发票编号(索引表中的PK)

我现在要做的是在发票表单上放置一个“查看发票”按钮,并将“Invoice_Index”表中的“InvoiceNumber”参数传递给报表,这样我就不会被提示输入每次我想通过点击表格上的“查看发票”按钮查看发票/报告。

2 个答案:

答案 0 :(得分:3)

考虑DoCmd.OpenReport Method。它允许您在打开报告时指定 WhereCondition 。并且 WhereCondition 将像查询中的WHERE子句一样运行。

因此,如果您的表单有一个名为txtInvoiceNumber的文本框,其中包含InvoiceNumber来过滤报告,以及报告的记录来源中相应字段的名称是否为{ {1}},您可以在发票表单上的命令按钮的单击事件中使用这样的代码。

  
InvoiceNumber

如果Dim strWhereCondition As String strWhereCondition = "InvoiceNumber = " & Me.txtInvoiceNumber DoCmd.OpenReport "YourReportName", , , strWhereCondition 是数字数据类型,则应该有效。如果它实际是文本数据类型,请在构建 WhereCondition 时在InvoiceNumber附近添加引号。

Me.txtInvoiceNumber

(此建议假设您将修改报告使用的查询以消除现有参数。)

答案 1 :(得分:0)

要连接字符串,您需要在要放在一起的部分之间使用&符号。您还可以将所有这些行合并为一行。尝试明确说明您想要的属性,而不是依赖于默认属性。

Me.OpenReport "YourReportName", , , "InvoiceNumber = " & Me.txtInvoiceNumber.Value