表达式不计算?
其中总分列的计算表达式为:
[语文] + [数学] + [英语] + [物理] + [化学]
现在的问题是,必须输入每一科的成绩,总分列的内容才会计算得出,例如第一个同学“陈成进”,因为没有参加英语考试,英语成绩为空,导致他的总分为空,当然如果英语成绩输入0,总分能正常计算得出,但是零分和没有参加考试是有区别的。显然如果有办法让没有输入成绩的科目,作为零参与计算,那么问题就很好解决。
为此我们将总分列的计算表达式修改为:
IsNull([语文],0) + IsNull([数学],0) + IsNull([英语],0) +
IsNull([物理],0) + ISNull([化学],0)
IsNull函数我们前面已经介绍过,在这里用于判断某一科目的成绩是否为空,如果为空,则返回0,否则返回该科目的成绩。
关于空值
表达式用Null表示空值,例如将折扣列的表达式设为:
IIF([数量] > 1000, 0.1, Null)
意思是:如果数量大于1000,折扣设为0.1,否则无折扣。
可以用 Is Null语句判断某列内容是否为空。
例如在订单表中,金额列的公式可以设为:
IIf([折扣] Is Null, [数量] * [单价], [数量] * [单价] * (1 -
[折扣]))
意思是,如果折扣列没有输入内容,那么金额等于:
[数量] * [单价]
如果已经输入折扣,那么金额等于:
[数量] * [单价] * (1 - [折扣])
实际上,上面的公式用ISNULL函数来编写更为简单:
[数量] * [单价] * (1 - ISNULL([折扣],
0))
但是有的时候,我们是没有办法用ISNULL函数的,只能用Is
Null语句,例如使用表达式筛选时,需要从订单表中筛选出折扣为空的行,那么筛选表达式为:
[折扣] Is Null
关于筛选,会有专门的章节讲述。
ISNULL函数可以返回列的值,所以多用于计算,而Is Null语句返回一个逻辑值,所以多用于条件筛选,关于Is
Null语句的实际应用,我们将在开发指南中接触到。
如果要判断内容是否不为空,可以加上Not关键词,例如:
[折扣] Is Not Null