Foxtable(狐表)用户栏目专家坐堂 → [求助]判断值是否为空的表达式是什么?


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

主题:[求助]判断值是否为空的表达式是什么?

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


加好友 发短信
等级:幼狐 帖子:118 积分:966 威望:0 精华:0 注册:2016/7/12 15:44:00
[求助]判断值是否为空的表达式是什么?  发帖心情 Post By:2016/8/3 14:20:00 [只看该作者]

在IFF()函数中

根据值是否为空判断要怎么编写代码?,

比如

要根据【章节号】这一列是否有值返回值应该怎么编写?

是我下面这样吗?

IIF(【章节号】><"",TRUEVALUE,FALSEVALUE)


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


加好友 发短信
等级:婴狐 帖子:15 积分:205 威望:0 精华:0 注册:2012/2/24 12:31:00
  发帖心情 Post By:2016/8/3 14:34:00 [只看该作者]

IIF

IIF函数根据一个表达式的计算结果,返回两个值中的一个。

语法:

IIF(expression, TrueValue, FalseValue)

expression: 表达式
TrueValue: 表达式成立的时候,返回此值
FalseValue:表达式不成立的时候,返回此值

示例

Dim Val As Integer = 1000
Dim
m As String = IIF(Val > 500, "大", "小")

上面的语句完全等效于:

Dim Val As Integer = 1000
Dim
m As String
If
Val > 500 Then
    m =
"大"
Else

    m =
"小"
End
If

可以看出,对于一些简单的分支判断,使用IIF函数能够让代码显得更为简洁。


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


加好友 发短信
等级:婴狐 帖子:15 积分:205 威望:0 精华:0 注册:2012/2/24 12:31:00
  发帖心情 Post By:2016/8/3 14:39:00 [只看该作者]

关于空值

表达式用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


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


加好友 发短信
等级:幼狐 帖子:118 积分:966 威望:0 精华:0 注册:2016/7/12 15:44:00
  发帖心情 Post By:2016/8/3 15:05:00 [只看该作者]

<IIF([@a,章节号] is Null, " SSSSSSSSSS",  [@A,大纲] & "" & [@A,章节号] & "节及SSSSSS")>

为何这个表达式在WORD报表中不能得到值呢?


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/8/3 15:25:00 [只看该作者]

试试改一下,分别测试

 

[@a,章节号]

 

<[@a,章节号] = "">

 

<IIF([@a,章节号] = "", " SSSSSSSSSS",  "AAAAAA")>

 

<IIF([@a,章节号] = "", " SSSSSSSSSS",  [@A,大纲] & "" & [@A,章节号] & "节及SSSSSS")>


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


加好友 发短信
等级:幼狐 帖子:118 积分:966 威望:0 精华:0 注册:2016/7/12 15:44:00
  发帖心情 Post By:2016/8/3 15:34:00 [只看该作者]

好像都不行


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


加好友 发短信
等级:幼狐 帖子:118 积分:966 威望:0 精华:0 注册:2016/7/12 15:44:00
  发帖心情 Post By:2016/8/3 15:38:00 [只看该作者]

Word报表模板中表达式是这样的

<IIF([@开案表,章节号] = "",  [@开案表,测试大纲] ,  [@开案表,测试大纲] & "" & [@开案表,章节号] & "节及FLTM  BO 131-03-2014") >

生成的报表时时这样的

<IIF(4.1 = "",  WSS-M99P2222-C1 ,  WSS-M99P2222-C1 & "" & 4.1 & "节及FLTM  BO 131-03-2014") >


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/8/3 16:45:00 [只看该作者]


 回到顶部