Access VBA使用DCount函数查询时提示'Total_Sum'相关报错如何解决?
报错修复方案
你遇到的参数表达式错误是由货币型字段与普通数值的类型匹配问题导致的,直接修改代码即可解决:
MyCnt = DCount("*", "tbl_Data", "[Total_Sum] > CCur(200)")
如果是固定美元场景也可以直接用货币标记写法:
MyCnt = DCount("*", "tbl_Data", "[Total_Sum] > $200")
这里把DCount第一个参数替换为*是为了避免字段名识别冲突,同时提升统计效率,如果你需要排除Total_Sum为Null的记录,可以改回[Total_Sum]。
[] 符号的适用场景
Access中表名、字段名外层的[]是标识符转义符号,使用规则如下:
- 当标识符名称包含空格、特殊字符(如&、-、@等),或者与Access内置关键字重名时,必须加[]避免表达式解析错误,例如名为
Total Amount的带空格字段,必须写为[Total Amount] - 当标识符名称仅由字母、数字、下划线组成,且不与内置关键字重名时,[]可以省略,你用到的
Total_Sum就符合该条件,加不加[]都不会触发语法问题 - 无法确定标识符是否会触发解析冲突时,统一加[]是更稳妥的编码习惯
额外排查步骤
如果修改代码后仍然报错,按以下顺序排查即可:
- 确认
tbl_Data表中Total_Sum字段拼写完全正确,Access对标识符不区分大小写,但不能存在拼写误差 - 新建一个空查询,切换到SQL视图输入
SELECT COUNT(*) FROM tbl_Data WHERE [Total_Sum] > CCur(200)运行,若查询也报错说明是表/字段本身的配置问题,和VBA代码无关 - 确认代码执行时
tbl_Data没有被独占锁定,也没有被重命名、移动到其他数据库容器中
内容的提问来源于stack exchange,提问作者Shaves
相关产品推荐
相关产品推荐

