2017-10-13 20 views
0

私はFilemaker pro 14を使用しています。今月のパフォーマンスの動的なチャート作成に、runsqlを使用して月単位で注文します。Filemaker Pro Executesqlは、複数の合計値で空を返します

私は、2つの別々のフィールドのためにSELECT SUMに "Let"関数を使用します。

次に、以下のような2つの区切りデータが得られます。

私の問題は、2つのデータセットを直接分割して区切られたデータセットを返すことができないことです。例えば

List1: 100;150;200 
List2: 1000;1200;1500 

望ましい結果:

List3: List1/List2 ==> 0.1;0.125;0.133 

実際の結果は(唯一の結果を返さ):

List3: 0.0010013818 

データで割っがすべてのように一緒に接続されているようです

100150200/100012001500 

アドバイスはありがとうございます。

答えて

1

結果は実際には予想される動作です。あなたが発見したように、FileMakerにList1をList2で分割するように指示すると、各リストを数値としてキャストしてから分割します。これは、すべての非数値文字を削除し、2つの長い文字列を作成し、最初の文字列を2番目の文字列で分割します。

FileMaker Pro Advancedをお使いですか?その場合は、この問題を解決する最も簡単な方法は、このようなカスタム関数を使って、次のようになります。

/* 
======================================================= 
    MathLists ©2017 Drakeling Technologies 
    Created by Jeff Drake 19 Oct 2017 

    Parameters: list1 ; list2 ; separator 

    Purpose: applies the specified operator to each value in list 1 and the corresponding value in list 2, e.g. 
    MathLists ("100;150;200" ; "1000;1200;1500" ; "/" ; ";") = ".1;.125;.1333333333333333" 

    Dependencies: none 
======================================================= 
*/ 


Let ([ 
     //CHANGE EACH LIST TO RETURN-DELIMITED. 
     #list1 = Substitute (list1 ; separator ; ¶) ; 
     #list2 = Substitute (list2 ; separator ; ¶) ; 

     //STORE THE MAXIMUM NUMBER OF VALUES TO PROCESS. 
     #maxValues = Max (ValueCount (#list1) ; ValueCount (#list2)) ; 

     //STORE THE ORIGINAL SEPARATOR. 
     $ƒMathLists = If (IsEmpty ($ƒMathLists) ; separator ; $ƒMathLists) 

] ; //end define Let 

    Substitute (

     List (

     //IF THERE IS AT LEAST ONE PAIR OF VALUES REMAINING, RECURSE THE FUNCTION. 
     If (#maxValues > 1 ; 
       MathLists (LeftValues (#list1 ; #maxValues - 1) ; LeftValues (#list2 ; #maxValues - 1) ; operator ; $ƒDivideLists)) ; //end If 

     //DIVIDE THE nth VALUE FROM LIST 1 BY THE nth VALUE FROM LIST 2. 
     Evaluate (GetValue (#list1 ; #maxValues) & operator & GetValue (#list2 ; #maxValues)) 

    ) //end List 

     //RESTORE THE ORIGINAL SEPARATOR WHEN DONE. 
     ; ¶ ; $ƒMathLists 

    ) //end Substitute 

    //CLEAR THE ORIGINAL SEPARATOR WHEN DONE. 
    & Let ($ƒMathLists = "" ; "") 

) //end Let 

私は、コードの拡張性を作ったので、あなたは、加算、減算、乗算、または除算することができ、これに応じて、指定した4つの演算子のうちの1つです。

希望に役立ちます!

関連する問題