2017-05-03 91 views
0

我已经在Microsoft Access中创建了一个报告,该报告为用户提供了存储在称为报告数据的数据表中的标识号,位置,注释等数据。当我点击打开报告时,它将加载所有2000+页面报告(每个IDENT NO)。但是,我只想输入要加载/显示的IDENT NO,以便用户选择1报告。Microsoft Access VBA:按钮来筛选报告

我用下面的代码创建了一个按钮,我想通过用户在点击时输入IDENT NO来过滤我的报告(当用户单击按钮时,弹出窗口会询问IDENT NO,然后我只想打开与该IDENT NO关​​联的单个报告)。然而,当我这样做时,它只会加载我想要的1页报表,但是没有其他数据字段被填充。我一直在玩代码一段时间了,但我不能似乎找出问题是基于下面的代码还是由于另一个问题。

作为参考,识别号码采用带破折号的数字形式,然后是如下所示的版本:1940-1或1940-2或2910-1都是识别号码的示例。

Private Sub Command33_Click() 

Dim id As String 
    id = InputBox("Enter the identification number:", "Report Filter") 

'if a value was entered, open and filter report 
If Len(Trim(id)) > 0 Then 
    DoCmd.OpenReport "RARL Requests Report", acViewPreview, , "[IDENT NO] like " & id, acWindowNormal 
End If 


End Sub 

回答

0

您的ID'数字'是文本值。所以ID字段是文本类型。文本字段的过滤器参数需要撇号分隔符。使用不带*通配符的LIKE运算符只能使用=符号。

DoCmd.OpenReport "RARL Requests Report", acViewPreview, , "[IDENT NO] = '" & id & "'", acWindowNormal

我做了一个测试使用和不使用撇号。没有我有两个弹出式输入提示,撇号只有输入框弹出。但是,在这两种情况下,报告仍然是打开的,并通过数据进行过滤因此,您的问题可能会出现其他问题。可能需要直接审查你的数据库。如果你想提供,可以上传到Box.com等文件共享站点并发布链接到该文件。

很难验证InputBox条目。即使条目无效导致用户感到沮丧,报告也会运行。使用用户选择ID的表单上的组合框会更好。

在名称中不允许有空格或标点符号/特殊字符(仅下划线)。

+0

是否可以修改上述内容,以便打开任何以用户输入内容开始的报告。例如,如果我有IDENT NO的1940-1,1940-2和1940-3的报告,并且用户只输入1940到InputBox,它会显示所有这3个报告? – Xcelrate

+0

''[IDENT NO] LIKE'“&id&”*'“' - 组合框仍然是我推荐的方法。只需设置为不限制输入到列出的值。但该列表仍然会在那里引导用户输入有效的完整身份证号码。 – June7

+0

我明白你的意思了。是否有一个组合框功能,我可以替换该代码行中的InputBox,以便我仍然单击该按钮打开组合框选择?如果是这种情况,其余的代码是否需要额外的修改? – Xcelrate

0

看起来像您的IdentNo是一个文本字段。你需要用单引号将其范围。所以:

If Len(Trim(id)) > 0 Then 
    DoCmd.OpenReport "RARL Requests Report", acViewPreview, , "[IDENT NO] like '" & id & "'", acWindowNormal 
End If 

如果没有文字(即int或double),那么你会做你有它的方式;没有单引号需要。