与我的第一个问题类似。我想在包含以下字段的文本框中显示我的地址
{Company}
{AddLine1}
{AddLine2}
{ZIP}{State}{City}
{Country}
关注我的行(希望你们中的一些人)是{ZIP} {City} {State}。我想要生成的是一致的寻址格式,因此即使ZIP,城市或州字段在数据库中留空,也不会有空格或缩进。此行仍应与其余行对齐,而不是缩进。我还希望在它们相关的拉链,州,城市之间插入逗号,并将其留在没有的地方。为此,我写了一个公式。下面:
If isnull({BILL_TO.ZIP}) or trim({BILL_TO.ZIP})= "" Then "" else {BILL_TO.ZIP}
+
(If isnull({BILL_TO.State}) or trim({BILL_TO.State})= "" Then ""
else(If not isnull({BILL_TO.ZIP}) and length(trim({BILL_TO.ZIP})) <> 0 Then ", " else "") + {BILL_TO.State})
+
(If isnull({BILL_TO.CITY}) or length(trim({BILL_TO.CITY})) = 0 Then ""
else(
If (not isnull({BILL_TO.State}) and length(trim({BILL_TO.State})) <> 0)
or
(not isnull({BILL_TO.Zip}) and length(trim({BILL_TO.Zip})) <> 0)
Then ", " else "")+ {BILL_TO.CITY}))
问题是,当只有一个城市(没有输入州或邮政编码)时,公式本身将不会显示。然而,当其他人出现时,它会显示。
任何人都可以看到此代码中的错误???它杀了我
感谢您的帮助。
期待您的回复!
答案 0 :(得分:1)
在该公式中有很多if-then-elses正在进行,因此很难说,但是如果它没有显示任何可能意味着您在某个地方使用某个字段而不首先处理其null条件。更简单的事情可能是你最好的选择:
local stringvar output;
if not(isnull({Customer.Postal Code})) then output:=trim({Customer.Postal Code}) + ', ';
if not(isnull({Customer.Region})) then output:=output + trim({Customer.Region}) + ', ';
if not(isnull({Customer.City})) then output:=output + trim({Customer.City}) + ', ';
left(output,length(output)-2)
答案 1 :(得分:0)
为每个数据库字段创建公式字段。例如:
// {@CITY}
If Isnull({BILL_TO.CITY}) Then
""
Else
Trim({BILL_TO.CITY})
// {@STATE}
If Isnull({BILL_TO.STATE}) Then
Space(2)
Else
Trim({BILL_TO.STATE})
// {@ZIP}
If Isnull({BILL_TO.ZIP}) Then
Space(5) //adjust to meet your needs
Else
Trim({BILL_TO.ZIP})
将每个公式字段嵌入文本对象中。
格式化文本对象及其字段以满足您的需要。
**编辑**
我有数据质量问题,在STATE和ZIP公式中解决它们(因为它们将是一个恒定的长度)。我会添加逗号并隔开文本对象。