Foxtable(狐表)用户栏目专家坐堂 → 表达式问题


  共有10612人关注过本帖树形打印复制链接

主题:表达式问题

帅哥哟,离线,有人找我吗?
实话实说
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2649 积分:19390 威望:0 精华:1 注册:2008/9/12 9:19:00
表达式问题  发帖心情 Post By:2011/5/28 7:34:00 [只看该作者]

谁能帮忙列一个带除法的表达式:差异率 = 差异 / 库存数,要求清零处理。建议狐爸加入帮助。


 回到顶部
帅哥哟,离线,有人找我吗?
hhbb
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:等待验证 帖子:386 积分:2482 威望:0 精华:1 注册:2011/5/10 11:13:00
  发帖心情 Post By: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


 回到顶部
帅哥哟,离线,有人找我吗?
实话实说
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2649 积分:19390 威望:0 精华:1 注册:2008/9/12 9:19:00
  发帖心情 Post By:2011/5/28 11:17:00 [只看该作者]

帮助我看过,那都是加减计算,除法就麻烦点,要嵌套分母不能为零的条件。这样一个简单的除法就有好几个条件要考虑:清零;空值;除法分母不能为零等。请帮助写一下1楼的除法代码,我测试一下看能否满足我的要求。


 回到顶部
帅哥哟,离线,有人找我吗?
hhbb
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:等待验证 帖子:386 积分:2482 威望:0 精华:1 注册:2011/5/10 11:13:00
  发帖心情 Post By:2011/5/28 11:52:00 [只看该作者]

无非是多作些判断罢了

IIF([第二列] =0 or [第一列] /[第二列]  =0,null,[第一列] /[第二列])



 回到顶部