在此自定义函数中添加第二个地址行(Filemaker Pro)

时间:2009-12-15 21:39:07

标签: function filemaker

我想在此自定义函数中添加第二个Address字段(即Apt。#101)。如果你想,你可以解释一下Case(不是IsEmpty的工作原理,我愿意尝试在我自己中添加第二个地址字段......

Let(
[
    x1 = Name;
    x2 = x1 & Case(not IsEmpty(Address); Case(not IsEmpty(x1); "¶") & Address);
    x3 = Case(not IsEmpty(City); City & ", ") & Case(not IsEmpty(State); Upper ( State ) & " ") & Zip;
    x4 = x2 & Case(not IsEmpty(x3); "¶") & x3;
    x5 = x4 & Case(not IsEmpty(Country); Case( not IsEmpty(x4); "¶") & Country)
];

    x5

)

3 个答案:

答案 0 :(得分:1)

Let( [

   x1 = Customer::FullName;
   x2 = x1 & Case(not IsEmpty(Address1); Case(not IsEmpty(x1); "¶") & Address1);
   x3 = x2 & Case(not IsEmpty(Address2); Case(not IsEmpty(x2); "¶") & Address2);
   x4 = Case(not IsEmpty(City); City & ", ") & Case(not IsEmpty(State); Upper ( State ) & " ") & ZipCode;
   x5 = x3 & Case(not IsEmpty(x4); "¶") & x4 ];

x5

)

答案 1 :(得分:0)

我建议不要使用let语句,这似乎让它更加混乱。最终目标是,您希望将一堆地址值连接在一起。如果地址值不为空,则需要在相关元素后面添加换行符(或城市的逗号+空格)。像这样:

LeftWords (
    Case (not IsEmpty(Customer::FullName) ; Customer::FullName & "¶" ) &
    Case (not IsEmpty(Address1) ; Address1 & "¶" ) &
    Case (not IsEmpty(Address2) ; Address2 & "¶" ) &
    Case (not IsEmpty(City) ; City & ", " ) &
    Case (not IsEmpty(State) ; Upper (State ) & " " ) &
    ZipCode
; 9999 )

argg为9999的LeftWords函数(或其他一些适当大的值)会删除任何尾随的换行符或空格,如果city,state和zip都为空,则可能会发生这种情况。

答案 2 :(得分:0)

使用List()功能:

List( 
 Address Line 1;
 Address Line 2;
 Substitute( List( Sity, Upper( State ); ZIP ); "¶"; " " );
 Country ) )

这里的想法是List()函数忽略空值,因此您不必测试它们是否为空。使用地址线,它将自动忽略空白;使用sity-state-ZIP行,它将为您提供有效的列表,您只需要替换分隔符。

如果您正在使用FM Advanced,请定义一个自定义函数以加入具有给定分隔符的列表:

/* Join( separator; list *) */
Substitute( list; "¶"; separator )

这样会更简单。