Access VBA求助:点击命令按钮按组合框筛选打开Invoice报表报错
问题分析与修正代码
你的VBA代码存在语法和逻辑错误,以下是具体修正方案:
核心错误点
- 文本类型字段的筛选值未用单引号包裹,Access会将其误识别为字段而非字符串值
- 逻辑运算符
and未遵循VBA关键字大写规则(需写为And) - 字符串拼接时引号未正确闭合,末尾多余了一个双引号
- 重复执行了两次
DoCmd.OpenReport语句
修正后的基础代码
假设三个组合框绑定的都是文本类型字段,修正后的代码如下:
DoCmd.OpenReport "Invoice", acViewReport, , _ "[Customer Type] = '" & Me.ltyp & "' And " & _ "[Name of the Customer] = '" & Me.lcnm & "' And " & _ "[Cash Memo/Tax Invoice Number] = '" & Me.lmnum & "'", acWindowNormal
进阶优化(支持空筛选条件)
如果允许用户不选择部分组合框(即筛选条件可为空),可以添加空值判断逻辑,避免空值导致的筛选错误:
Dim strWhere As String ' 逐步构建筛选条件 If Not IsNull(Me.ltyp) Then strWhere = strWhere & "[Customer Type] = '" & Me.ltyp & "' And " End If If Not IsNull(Me.lcnm) Then strWhere = strWhere & "[Name of the Customer] = '" & Me.lcnm & "' And " End If If Not IsNull(Me.lmnum) Then strWhere = strWhere & "[Cash Memo/Tax Invoice Number] = '" & Me.lmnum & "' And " End If ' 移除末尾多余的"And " If Len(strWhere) > 0 Then strWhere = Left(strWhere, Len(strWhere) - 5) End If ' 打开报表 DoCmd.OpenReport "Invoice", acViewReport, , strWhere, acWindowNormal
内容的提问来源于stack exchange,提问作者Saikat Paul
相关产品推荐
相关产品推荐

