Dynamics 365表字段编辑器fx公式拼接地址时If语句参数报错
Dynamics 365 FX字段拼接地址报错:If语句参数数量无效
我在Dynamics 365表字段编辑器里,想把多个地址字段拼接成单个多行字符串,创建了fx字段并使用以下代码填充,但报错提示If语句参数数量无效。
我的代码:
Concatenate( If(!IsBlank(billto_name), billto_name & Char(10), ""), If(!IsBlank(billto_contactname), billto_contactname & Char(10), ""), If(!IsBlank(billto_line1), billto_line1 & Char(10), ""), If(!IsBlank(billto_line2), billto_line2 & Char(10), ""), If(!IsBlank(billto_postalcode) || !IsBlank(billto_city), Concatenate(billto_postalcode, " ", billto_city) & Char(10), ""), If(!IsBlank(billto_stateorprovince), billto_stateorprovince & Char(10), ""), If(!IsBlank(billto_country), billto_country, "") )
我试了这个代码的好几种变体,但都报同样的错。想问下是不是漏了什么细节,还是fx公式本身有功能限制?
解决办法
问题根源:Dynamics 365的FX公式中,
If函数仅支持两个参数:If(条件, 满足条件时的结果),不支持传统三参数的If(条件, 真结果, 假结果)写法,你原来的代码用了三参数If,这就是报错的直接原因。修正后代码:去掉每个
If的第三个参数(空字符串分支),因为Concatenate会自动忽略空值,不影响最终拼接结果:
Concatenate( If(!IsBlank(billto_name), billto_name & Char(10)), If(!IsBlank(billto_contactname), billto_contactname & Char(10)), If(!IsBlank(billto_line1), billto_line1 & Char(10)), If(!IsBlank(billto_line2), billto_line2 & Char(10)), If(!IsBlank(billto_postalcode) || !IsBlank(billto_city), Concatenate(billto_postalcode, " ", billto_city) & Char(10)), If(!IsBlank(billto_stateorprovince), billto_stateorprovince & Char(10)), If(!IsBlank(billto_country), billto_country) )
- 优化建议:如果担心最后一行可能多出不必要的换行符,可以用
TrimEnds函数去除末尾的空白字符(包括换行):
TrimEnds( Concatenate( If(!IsBlank(billto_name), billto_name & Char(10)), If(!IsBlank(billto_contactname), billto_contactname & Char(10)), If(!IsBlank(billto_line1), billto_line1 & Char(10)), If(!IsBlank(billto_line2), billto_line2 & Char(10)), If(!IsBlank(billto_postalcode) || !IsBlank(billto_city), Concatenate(billto_postalcode, " ", billto_city) & Char(10)), If(!IsBlank(billto_stateorprovince), billto_stateorprovince & Char(10)), If(!IsBlank(billto_country), billto_country) ) )
内容的提问来源于stack exchange,提问作者benjist
相关产品推荐
相关产品推荐

