可以使用nz函数或iif函数嵌套isnull函数将控制转换成0。
例如:
select nz(销售数量,0) from 销售记录;
或者
select iif(isnull(销售数量),0,销售数量)
from 销售记录;
你的问题实际上涉及一个概念:任何有空值(null)参与的计算,结果仍为空值(null)。
库存余量:[物料入库数量总计]![入库数量之总计]-[物料发放数量总计]![数量之总计]
对于红笔 库存余量=10-3 =7 正常显示
而黑笔 库存余量=10-null =null 由于为null,自然没有显示。
解决方法可以使用nz()函数,nz()函数会将数值类型的null转化为0,将文本类型的null转化为""(即空字符串),这样就可以正确参与计算了。
所以你可以将上面公式改为
库存余量:nz([物料入库数量总计]![入库数量之总计])-nz([物料发放数量总计]![数量之总计])
即可正确计算了。
我明白了,null+1+1=null 而不是=2,您要解决的是如何把null 变成0
有2种方法:(本人推荐用第一种方法)
第一:用Nz([碳粉])。当一个 Variant 为 Null 时,使用 Nz 函数可以返回 0、零长度字符串 (" ") 或其他指定值。例如,可以使用该函数将 Null 值转换为其他值并防止它通过表达式扩散。
Nz(variant, [valueifnull])
Nz 函数具有以下参数:
参数说明
variant 数据类型为 Variant 的变量。
Valueifnull 可选参数(除非在查询中使用)。一个 Variant,提供当 variant 参数为 Null 时的返回值。该参数使您能够返回一个除 0 或零长度字符串以外的其他值。
注释 如果在查询的表达式中使用不带 ValueIfNull 参数的 Nz 函数,则对包含空值的字段,其返回结果为零长度字符串。
Nz 函数对可能包含 Null 值的表达式是很有用的。要使表达式即使在包含 Null 值时也能计算得到一个非 Null 值,可使用 Nz 函数来返回 0、零长度字符串或一个自定义的返回值。
另一种方法是用iif()函数。
iif(表达式,value1,value2),表达式为ture返回value1值,为false时返回value2的值。可设为iif(isnull([碳粉]),0,[碳粉])。
ACCESS 里面, 应该是使用 IIF 函数。
select
IIF ( afield1 IS NULL, 0, afield1) AS field1
bfield2
from table1 a left join table2 bon afield3=bfield4
注: ACCESS 里面好像是没有 CASE WHEN 的, IIF 主要用来实现 CASE WHEN 的功能。
这里的
IIF ( afield1 IS NULL, 0, afield1)
等价于
CASE WHEN afield1 IS NULL THEN 0 ELSE afield1 END
也就是 假如afield1字段为空的话, 那么显示 0 , 否则显示 afield1
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)