Добавьте вторую адресную строку в эту пользовательскую функцию (Filemaker Pro) - PullRequest
0 голосов
/ 16 декабря 2009

Я хочу добавить второе поле адреса в эту пользовательскую функцию (т. Е. Кв. № 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 ]

1 голос
/ 16 декабря 2009
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

)
0 голосов
/ 05 июля 2013

Используйте функцию 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 )

Это упростит задачу.

0 голосов
/ 21 декабря 2009

Я бы порекомендовал покончить с оператором 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 )

Функция LeftWords с аргументом 9999 (или другим подходящим большим значением) удаляет любой завершающий символ новой строки или пробела, что может произойти, если город, штат и почтовый индекс все пусты.

...