实例名的嵌套If/Then语句

281
4
06-03-2022 11:23 am
GaryBowles1
通过
临时贡献者III
我试图使用嵌套的if语句在收件箱中对实例名进行颜色编码。我有4个案例,我需要检查:
案例1 -无泄漏

如果(- length ($ {leak_id} = 0), concat(“<字体颜色=“绿色”> < b > ", $ {location_name} < / b >, < /字体>),”)

案例2 -发现泄漏但未修复

如果(- length ($ {leak_id} > 0)和- length ($ {leak_repair_date} = 0), concat(“<字体颜色=“红色”> < b > ", $ {location_name}”——需要维修的,< / b >, < /字体>),”)

案例3 -泄漏修复,没有重新检查

如果(- length ($ {leak_id} > 0)和- length ($ {leak_repair_date} > 0)和- length (leak_recheck_date} = 0), concat(“<字体颜色=“橙色”> < b > ", $ {location_name}”——需要逐字逐句的,< / b >, < /字体>),”)

案例4 -泄漏修复和重新检查

If(string-length(${leak_id}>) and string-length(${leak_repair_date}>0) and string-length(leak_recheck_date}>0), concat('', ${location_name}, ' - LEAK repair & RE-CHECKED ', '', ''), ")

所以,把这些放在一起就得到了:

如果(- length ($ {leak_id} = 0), concat(“<字体颜色=“绿色”> < b > ", $ {location_name} < / b >, < /字体>),如果(- length ($ {leak_id} > 0)和- length ($ {leak_repair_date} = 0), concat(“<字体颜色=“红色”> < b > ", $ {location_name}”——需要维修的,< / b >, < /字体>),如果(- length ($ {leak_id} > 0)和- length ($ {leak_repair_date} > 0)和- length (leak_recheck_date = 0), concat(“<字体颜色=“橙色”> < b > ", $ {location_name}”——需要逐字逐句的,< / b >, < /字体>),如果(- length ($ {leak_id} > 0)和- length ($ {leak_repair_date} > 0)和- length (leak_recheck_date} > 0), concat(“<字体颜色=“蓝色”> < b > ", $ {location_name},泄漏修复与复核,< / b >, < /字体 >', ‘’)))))

我可以使用嵌套的if/then实例名,如果是,我错过了什么??

谢谢,

——加里

标签(2)
0荣誉
4回复
Philip-Wilson
通过 Esri杰出贡献者
Esri杰出贡献者

@GaryBowles1

是的,嵌套的if()语句适用于实例名。

看起来你把最后一个if()语句的右括号放在了false条件的错误位置。在你的单数例子中,后面有一个右括号,后面跟着“for最终的false条件”。在你的组合if()语句中,后没有右括号,这意味着“在concat中,并且最后嵌套的if()没有false条件。

我没有测试这个,但它应该工作(我也发现它更容易打破if()语句为每个条件到不同的行,然后你可以把它们全部移回一行,当放回XLSForm):

如果(- length ($ {leak_id} = 0), concat(“<字体颜色=“绿色”> < b > ", $ {location_name} < / b >, < /字体>),如果(- length ($ {leak_id} > 0)和- length ($ {leak_repair_date} = 0), concat(“<字体颜色=“红色”> < b > ", $ {location_name}”——需要维修的,< / b >, < /字体>),如果(- length ($ {leak_id} > 0)和- length ($ {leak_repair_date} > 0)和- length (leak_recheck_date = 0), concat(“<字体颜色=“橙色”> < b > ", $ {location_name}”——需要逐字逐句的,< / b >, < /字体>),if(string-length(${leak_id}>) and string-length(${leak_repair_date} >0) and string-length(leak_recheck_date}>0), concat('', ${location_name}, ' - LEAK repair & RE-CHECKED ', '', ''), "))))

问候,

菲尔。

0荣誉
GaryBowles1
通过
临时贡献者III

菲尔,

谢谢你的帮助,我得到了在连接转换的语句:

if(string-length(${leak_id}=0), concat('

',${location_name},' - NO LEAKS','
'), if(string-length(${leak_repair_date},' - NEEDS REPAIR ','
'), if(string-length(${leak_repair_date}>0) and string-length(${leak_recheck_date}=0) and string-length(${leak_recheck_date}=0), concat('
',${location_name},' - NO LEAKS'),' - NEEDS RE-CHECK ', '
'), if(string-length(${leak_reair_date}>0) and string-length(${leak_recheck_date}>0) and string-length(${leak_recheck_date}>0), concat('
',${location_name}, ' - LEAK repair & RE-CHECKED ', '
'), "))))

然而,它似乎并没有起作用:

garybowles1_0 - 1654615174334. - png

在提交的4个调查中的嵌套if语句中有3个条件。

建议吗?

谢谢,

——加里

0荣誉
Philip-Wilson
通过 Esri杰出贡献者
Esri杰出贡献者

@GaryBowles1

您是否能够共享XLSForm (xlsx文件和任何媒体/脚本)以及关于填写哪些问题以使实例名在每种情况下工作的说明。

我需要用您的确切调查进一步研究它,就像您使用if()语句设置了一个简单的实例名一样,它正在工作。

问候,

菲尔。

0荣誉
GaryBowles1
通过
临时贡献者III

菲尔,

附件是与条码扫描相关的调查表格和.csv文件。我已经能够通过使用boolean()和not(boolean())函数而不是string-length()来实现这一点。我还发现html格式(

)如下所述://www.gobook3.com/t5/arcgis-survey123-blog/survey123-tricks-of-the-trade-quick-guide-to/ba-..。

不工作,我必须使用旧的可靠 html格式。

这一切都是为了区分收件箱中的调查。如果我们可以设置多个收件箱,那就太好了。我已将其添加到想法部分。

谢谢,

——加里

0荣誉