我是Access 2010的新手。我建立了一个小型CRM / Invoicing数据库作为练习并使用了一段时间。我使用了很多来自Northwind的例子来学习,但我不太了解传递参数。
我有两张发票数据表(索引和数据),索引表中的PK是客户看到的实际发票号,然后它也是数据表中的FK。我设置了一个查询,让我的报告处理所有项目和总计,并将其设置在报告上。如果直接调用报告,则会询问参数是否包含发票编号(索引表中的PK)
我现在要做的是在发票表单上放置一个“查看发票”按钮,并将“Invoice_Index”表中的“InvoiceNumber”参数传递给报表,这样我就不会被提示输入每次我想通过点击表格上的“查看发票”按钮查看发票/报告。
答案 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