以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 表达式问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=10281) |
-- 作者:实话实说 -- 发布时间:2011/5/28 7:34:00 -- 表达式问题 谁能帮忙列一个带除法的表达式:差异率 = 差异 / 库存数,要求清零处理。建议狐爸加入帮助。 |
-- 作者:hhbb -- 发布时间:2011/5/28 11:02:00 -- 表达式不计算? 其中总分列的计算表达式为: [语文] + [数学] + [英语] + [物理] + [化学] 现在的问题是,必须输入每一科的成绩,总分列的内容才会计算得出,例如第一个同学“陈成进”,因为没有参加英语考试,英语成绩为空,导致他的总分为空,当然如果英语成绩输入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 |
-- 作者:实话实说 -- 发布时间:2011/5/28 11:17:00 -- 帮助我看过,那都是加减计算,除法就麻烦点,要嵌套分母不能为零的条件。这样一个简单的除法就有好几个条件要考虑:清零;空值;除法分母不能为零等。请帮助写一下1楼的除法代码,我测试一下看能否满足我的要求。 |
-- 作者:hhbb -- 发布时间:2011/5/28 11:52:00 -- 无非是多作些判断罢了 IIF([第二列] =0 or [第一列] /[第二列] =0,null,[第一列] /[第二列]) |