2017-10-13 84 views
0

我正在使用Filemaker專業版14.現在通過使用executionql動態繪製我的月表現,按月排序。Filemaker Pro Executesql返回空值與多個總和值

我使用「讓」函數來選擇兩個單獨的字段的總和。

然後我得到如下兩組分隔數據的結果。

我的問題是我不能通過直接劃分兩組數據來返回一組分隔數據?

例如:

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時,它將每個列表投射爲一個數字,然後進行分割。這將刪除所有非數字字符並創建兩個長字符串,然後將第一個字符除以第二個字符。

您使用的是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 

我所做的代碼可擴展的,這樣你就可以加,減,乘或除,這取決於您指定的四個運算符中。

希望有幫助!