2017-10-13 78 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 

我所做的代码可扩展的,这样你就可以加,减,乘或除,这取决于您指定的四个运算符中。

希望有帮助!