Access VBA无法通过DoCmd.OpenReport传递记录集变量至报表参数
Access VBA 传递记录集变量到报表参数的问题解决
你当前的写法错误在于把变量名当成字符串字面量传递了,导致Access将[FactCode]识别为需要用户输入的参数,而非变量的实际值。
正确的写法分两种情况:
直接使用变量值:
因为Code是文本类型,需要用单引号把变量值包裹起来,拼接成合法的筛选字符串:DoCmd.OpenReport "你的报表名称", acViewPreview, , "[Code]='" & FactCode & "'"从记录集取字段值:
直接调用记录集的字段值(比如rst!FactCode)拼入筛选条件:DoCmd.OpenReport "你的报表名称", acViewPreview, , "[Code]='" & rst!FactCode & "'"
验证方法:
可以先把筛选字符串存入变量,用MsgBox输出确认格式是否正确,避免语法错误:
Dim strFilter As String strFilter = "[Code]='" & FactCode & "'" MsgBox strFilter ' 正常应该显示类似 [Code]='LXFT48' 的内容,而非 [Code]=[FactCode] DoCmd.OpenReport "你的报表名称", acViewPreview, , strFilter
你之前用固定字符串"[Code]=""LXFT48"""能生效,是因为Access里双引号用于转义字符串内的双引号,最终等价于[Code]='LXFT48',传递的是具体的文本值,而非参数占位符。
内容的提问来源于stack exchange,提问作者Todd Faver
相关产品推荐
相关产品推荐

