MS Access中DSum函数使用IN子句返回空值的技术咨询
解决MS Access中DSum函数使用IN条件返回空值的问题
嘿,我来帮你搞定这个DSum函数的问题!你现在遇到的情况是在Access控件源里用IN条件时返回空值,其实大概率是几个常见的小问题导致的,咱们一步步排查:
先确认数据是否存在:
先在Access里新建一个查询,把你的条件放进去测试:SELECT * FROM tbl_data WHERE Fin_Yr='2016' and Qtr='Q1' and sProg_index in ('2.2a','2.2b')如果这个查询都没有返回任何记录,那DSum自然会返回空值——这说明你的数据里根本没有符合条件的记录,得先检查数据本身。
检查字段数据类型匹配:
这是最容易踩坑的点!比如Fin_Yr如果是数字类型(不是文本),那你写Fin_Yr='2016'就错了,应该去掉单引号写成Fin_Yr=2016。同样检查Qtr和sProg_index的类型,确保条件里的格式和字段类型一致:- 文本类型字段:值要加单引号(比如
Qtr='Q1') - 数字类型字段:值不能加引号(比如
Fin_Yr=2016)
- 文本类型字段:值要加单引号(比如
调整控件源里的引号写法:
在Access的控件源中,双引号需要用两个双引号来转义。如果你的条件里用了双引号包裹,可能会出问题,试试两种写法:
写法1(单引号包裹字符串值):= DSum("Sites","tbl_data","Fin_Yr='2016' and Qtr='Q1' and sProg_index in ('2.2a','2.2b')")写法2(双引号转义后包裹):
= DSum("Sites","tbl_data","Fin_Yr=""2016"" and Qtr=""Q1"" and sProg_index in ('2.2a','2.2b')")换成OR条件替代IN:
有时候Access在控件源里对IN的解析偶尔会有小问题,你可以把IN换成OR的组合写法试试,效果是一样的:= DSum("Sites","tbl_data","Fin_Yr='2016' and Qtr='Q1' and (sProg_index='2.2a' or sProg_index='2.2b')")
按照上面的步骤排查,应该就能解决返回空值的问题啦!
内容的提问来源于stack exchange,提问作者Bra Tabs
相关产品推荐
相关产品推荐

