Microsoft Access VBA将参数传递给报表

时间:2016-01-20 15:07:43

标签: vba ms-access access-vba

我的表单frmScreen有3个字段File_Number, id, country。数据从Screen表中作为数据源提取。report具有相同的数据源

我在窗体上有一个调用report rptScreen的按钮。我想将文件名作为参数传递给报表,以便报表仅显示

Select * from Screen where File_Number=<parameter passed through the form?

我在StackOverflow上检查过以前的帖子,但它并没有帮助我。

那么如何传递参数以及我应该在报告中做些什么更改,以便将File_Number字段作为参数并仅显示与查询匹配的记录

我的代码如下所示

stLinkCriteria = "[File Number]=" & "'" & Me![File Number] & "'"
   DoCmd.OpenReport "rptScreen", acViewPreview, , stLinkCriteria

错误:报告仅针对file number

显示所有数据而不是记录

1 个答案:

答案 0 :(得分:1)

更改报告的Row Source以返回所有行...

SELECT * FROM [Screen]

然后,您可以使用DoCmd.OpenReport打开报告,并使用其 WhereCondition 选项按照您的意愿过滤报告的数据...

stLinkCriteria = "[File_Number]='" & Me![File Number].Value & "'"
Debug.Print stLinkCriteria '<- check this in Immediate window; Ctrl+g will take you there
DoCmd.OpenReport "rptScreen", acViewPreview, , stLinkCriteria

注意:

  1. ScreenAccess reserved word。虽然这可能不会给这里造成麻烦,但为了安全起见,我在SELECT声明中括起了这个名字。但如果可能的话,最好给那个表另一个名字。
  2. 我认为Screen.File_Number是有效字段,而Me![File Number]是指表单上的控件。但由于早期对这些名称的空间与下划线的混淆,这种推定似乎不稳定。
  3. 如果您直接打开报告(例如从导航窗格中),而不是使用DoCmd.OpenReport WhereCondition ,它将包含表格中的所有行。这可能不是你真正想要的,但是现在让我们试着让一些基本工作。
相关问题