我在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
答案 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。
建议名称中不要使用空格或标点符号/特殊字符(仅限下划线异常)。