【问题标题】:Filemaker Pro Executesql returns empty with multiple sum valueFilemaker Pro Executesql 返回具有多个总和值的空
【发布时间】:2021-05-25 23:52:47
【问题描述】:

我正在使用 Filemaker pro 14。现在正在使用 executesql 绘制我的月份表现的动态图表,按月份排序。

我使用“Let”函数为两个单独的字段选择 SUM。

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

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

例如:

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

期望的结果:

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

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

List3: 0.0010013818 

似乎除以数据都连接在一起像

100150200/100012001500

非常感谢任何建议。

【问题讨论】:

    标签: filemaker


    【解决方案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
    
             //PERFORM THE MATHEMATICAL OPERATION ON THE nth VALUE FROM EACH LIST.
             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
    

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

    希望有帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-05
      相关资源
      最近更新 更多