Microsoft Access VBA:筛选报告的按钮

时间:2017-05-03 15:32:50

标签: ms-access access-vba ms-access-2010

我在Microsoft Access中创建了一个报告,该报告向用户提供存储在名为报告数据的数据表中的标识号,位置,注释等数据。当我点击打开报告时,它将加载所有超过2000页的1页报告(每个IDENT NO 1)。但是,我只想通过输入要加载/显示的IDENT NO来选择用户选择的1个报告。

我创建了一个按钮,下面的代码如下所示,我希望按用户在点击时输入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

2 个答案:

答案 0 :(得分:0)

看起来你的IdentNo是一个文本字段。您需要使用单引号来限定它。所以:

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

如果它不是文本(即Int或Double),那么你会按照它的方式进行;不需要单引号。

答案 1 :(得分:0)

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

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

我做过有撇号和无撇号的测试。没有我得到两个弹出输入提示,撇号只弹出InputBox。但是,在这两种情况下,报告仍然打开过滤和数据。因此,您的问题可能会继续发生。可能需要直接检查您的数据库。如果您想提供,可以上传到文件共享网站,如Box.com,并发布链接到该文件。

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

建议名称中不要使用空格或标点符号/特殊字符(仅限下划线异常)。