找回密码
 立即注册

QQ登录

只需一步,快速开始

李想锅锅

初级会员

36

主题

123

帖子

347

积分

初级会员

积分
347

[处理中] 表达式咨询

李想锅锅
初级会员   /  发表于:2024-1-22 10:48  /   查看:1209  /  回复:7
1金币
本帖最后由 李想锅锅 于 2024-1-22 11:46 编辑

各位老师好:


{IIF(First(机构代码, "保函数据字段") = "01" Or First(机构代码, "保函数据字段") = "12" Or First(机构代码, "保函数据字段") = "21" Or First(机构代码, "保函数据字段") = "23", "False", "True")}

我有个表达式,目前我想保函数据字段这个数据集里面的机构代码满足其中一个值就显示,否则不显示,请问这个表达式应该怎么写?
目前这个表达式好像都是显示的,有点问题.

另外我这边还有个诉求,也是同样的表达式,比如都满足的条件的时候,就显示,否则不显示。
{IIF(First(机构代码, "保函数据字段") = "01" And First(机构代码, "保函数据字段") = "12" And First(机构代码, "保函数据字段") = "21" And First(机构代码, "保函数据字段") = "23", "False", "True")}

因为我之前的写法都是只写一个,比如{IIF(First(机构代码, "保函数据字段") = "01", "False", "True")}  这种是会生效的,机构代码 = "01" 就显示,否则不显示。

请问如果想满足Or  或者And 的时候写法该怎么写,目前Or  或者And 好像得到的是一个恒定值,一直都是显示, 我怀疑是那个First的原因,但是我不知道改怎么处理,请问有老师知道这种写法吗? 谢谢



7 个回复

倒序浏览
Bella.YuanWyn认证
超级版主   /  发表于:2024-1-22 11:55:49
沙发
您好,看您的描述应该使用Switch函数,因为您的条件是Or,此时如果条件1为false,即使其他3个条件某个是true,表达式返回的也是false,简单理解就是只要某个条件返回是false,那么整个表达式只会返回false。

正确的写法是使用switch函数分开去做判断。参考下图,您用switch函数测试看看。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
李想锅锅
初级会员   /  发表于:2024-1-22 13:44:49
板凳
Bella.Yuan 发表于 2024-1-22 11:55
您好,看您的描述应该使用Switch函数,因为您的条件是Or,此时如果条件1为false,即使其他3个条件某个是tru ...

老师,您第一个表达式,输入北京,他的结果应该是也是false,
回复 使用道具 举报
李想锅锅
初级会员   /  发表于:2024-1-22 14:01:53
地板
本帖最后由 李想锅锅 于 2024-1-22 14:05 编辑
李想锅锅 发表于 2024-1-22 13:44
老师,您第一个表达式,输入北京,他的结果应该是也是false,

老师,我试了一下,switch这种写法也不行。
我就是想,当这个字段值在数据集里面,比如,地区 = “华北” 或者 等于东北” 等于 西南”的时候,只他们返回的结果是false,  这种iff的表达式写法,谢谢老师
回复 使用道具 举报
Bella.YuanWyn认证
超级版主   /  发表于:2024-1-22 17:55:31
5#
李想锅锅 发表于 2024-1-22 14:01
老师,我试了一下,switch这种写法也不行。
我就是想,当这个字段值在数据集里面,比如,地区 = “华北 ...

您好,目前逻辑没有问题,但是看您使用了First函数,是不是这个函数影响的,可以删除这个函数直接使用字段测试看看。如果还是有问题,建议您上传可复现问题的demo,以及想要实现的效果,我们具体看看,不然这样从文字描述,不确定双方理解是否一样。
回复 使用道具 举报
李想锅锅
初级会员   /  发表于:2024-1-24 15:38:55
6#
本帖最后由 Felix.Li 于 2024-1-24 18:11 编辑

{IIF(First(机构代码, "保函数据字段") = "01" Or First(机构代码, "保函数据字段") = "12" Or First(机构代码, "保函数据字段") = "21" Or First(机构代码, "保函数据字段") = "23", "False", "True")}

老师,我也怀疑是用了First函数的原因。
其实我的诉求就是:
当我数据集"保函数据字段"这里面 机构代码 = "01" 或者"12" 或者 "21"的时候,返回的是False。
当我数据集"保函数据字段"这里面 机构代码 = "01" 并且"12" 并且 "21"的时候,返回的是False。
目前我是想知道这两种情况下,表达式的写法,如果是First原因影响,那正确的写法,老师您知道吗?

老师,这么说您应该明白我的意思了吧,麻烦各位老师了。

回复 使用道具 举报
Felix.LiWyn认证
超级版主   /  发表于:2024-1-24 18:14:20
7#
主要看你的数据。如果你的数据在明细行。那其实
机构代码 = "01" 或者"12" 或者 "21"

这个实际逻辑走的时候会每一条数据走一次这个逻辑。
如果用的是first,那每一个数据都用的是第一个值,所以其实你的这个写法其实都没有问题。
用或或者并且,其实看咱们自己的业务逻辑,这个都没错。
我们怀疑的只是用first会导致你的所有数据都取的是第一条,但是第一条永远都不满足。如果是在明细行,其实就不能加first。

如果还有问题,最好其实可以带上Demo和数据。然后说业务逻辑,或许可以更好的解决
回复 使用道具 举报
Felix.LiWyn认证
超级版主   /  发表于:2024-1-31 10:43:54
8#
您好,您的问题是否已经解决。如果没有,可以在付一下Demo。我们一起查看一下
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部