0

类似于我的第一个问题。我想在包含以下字段的文本框中显示我的地址

{Company}
{AddLine1}
{AddLine2}
{ZIP}{State}{City} 
{Country}

我(希望你们中的一些人)关注的线路是{ZIP} {City} {State}。我想要生成的是一致的寻址格式,这样即使数据库中的 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}))

问题是当只有一个城市(没有输入州或邮政编码)时,公式本身不会显示。但是,当其他人在场时,它会显示。

任何人都可以看到此代码中的错误???这太痛苦了

谢谢您的帮助。

期待你们的回音!

4

2 回答 2

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)
于 2012-08-23T16:03:00.810 回答
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 公式中解决它们(因为它们的长度是恒定的)。我会添加逗号并间隔文本对象。

于 2012-08-23T16:18:33.620 回答