Filemaker Pro Executesql返回空,带有多个和值

时间:2017-10-13 03:25:48

标签: filemaker

我正在使用Filemaker专业版14.现在使用executionql按月计算我的月份性能的动态图表。

我用"让"函数SELECT SUM用于两个单独的字段。

然后我得到两组分隔数据的结果,如下所示。

我的问题是我不能通过直接划分两组数据来返回一组分隔数据?

例如:

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

期望的结果:

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

实际结果(仅返回一个结果):

List3: 0.0010013818 

似乎除了所有连接在一起的数据,如

100150200/100012001500

任何建议都非常感谢。

1 个答案:

答案 0 :(得分: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

我已经使代码可扩展,因此您可以根据指定的四个运算符中的哪一个进行加,减,乘或除。

希望有所帮助!