2016-01-20 50 views
1

我有表格frmScreen,它有3个字段File_Number, id, country。作为数据source.The report具有相同的数据源Microsoft Access VBA将参数传递给报告

我有调用报告rptScreen窗体上的一个按钮时,数据是从Screen表提取。我想通过文件名作为参数报告,使报告仅显示

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

+0

为什么'file'和'name'之间有空格?你碰巧看到[这个答案](http://stackoverflow.com/a/25447941/2679750)?它可能有帮助。 –

+0

@MarkC。这就是字段名称是如何由别人设计的,不幸的是我无法更改字段名称。 – user580950

+1

当你输入“Me.”时,intellisense会给你作为字段名称的选项吗?我非常怀疑它的'文件名' –

回答

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.OpenReportWhereCondition,它将包含表中的所有行。这可能不是你真正想要的,但现在让我们尝试一些基本的工作。
相关问题