Microsoft Access VBA:筛选报告的按钮

Microsoft Access VBA: Button to Filter Report

我在 Microsoft Access 中创建了一个报告,它为用户提供数据,包括标识号、位置、注释等,这些数据存储在一个名为 Report Data 的数据 table 中。当我单击打开报告时,它将加载所有 2000+ 1 页报告(每个 IDENT NO 1 个)。但是,我只希望用户通过输入 IDENT NO 选择的 1 份报告为 loaded/displayed.

我用下面的代码创建了一个按钮,我想通过用户在单击时输入的 IDENT NO 来过滤我的报告(当用户单击该按钮时,弹出窗口会要求输入 IDENT NO ,然后我只想打开与该 IDENT NO 关联的单个报告)。但是,当我这样做时,它只会像我希望的那样加载 1 页报告,但是 none 的其他数据字段已填写。我已经研究了一段时间的代码,但是我似乎无法弄清楚问题是基于下面的代码,还是由于其他问题。

作为参考,标识号采用带破折号的数字形式,然后是类似这样的版本: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

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

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

如果它不是文本(即 Int 或 Double),那么您将按原样进行;不需要单引号。

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

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

我在使用和不使用 postrophes 的情况下进行了测试。没有我得到两个弹出输入提示,只有 postrophes 弹出了 InputBox。但是,在这两种情况下,报表仍会打开过滤并包含数据。因此,您的问题可能存在其他问题。可能需要直接审查您的数据库。如果要提供,可以上传到一个文件共享站点如Box.com和postlink到文件。

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

建议名称中不要有空格或 punctuation/special 个字符(下划线除外)。