按组筛选最近创建的记录的门户网站

时间:2017-09-17 20:55:24

标签: filemaker

我的“客户”表上有一个门户网站。相关表格包含随时间更新的调查结果。对于客户端和类别的每个组合(相关表中的字段),我只希望门户显示最近收集的行。

Here is a link to a trivial example that illustrates the issue I'm trying to address。我在这个例子中有两个表(在ClientID上相关):

  • 客户
  • 表1获取摘要方法

表1获取摘要方法表如下所示: enter image description here

其中:

  • MaxDate是摘要字段=最大日期
  • MaxDateGroup是计算字段= GetSummary(MaxDate; ClientIDCategory)
  • ShowInPortal = If(Date = MaxDateGroup; 1; 0)
  • 该表按ClientIDCategory
  • 排序

问题1我很难过:
ShowInPortal应该在第3行(PKTable01 = 5),第4行(PKTable01 = 6)和第6行(PKTable01 = 4)中等于1。我不确定FM为什么将1Red和1Blue解释为同一类别,或者我只是误解了GetSummary函数的作用。

Clients表如下所示: enter image description here

其中:

  • 门户记录按ClientIDCategory
  • 排序

问题2我很难过:
我只希望门户网站中出现ShowInPortal值等于1的行。我尝试使用以下公式创建门户网站过滤器:表1获取摘要方法:: ShowInPortal = 1.但是,使用该过滤器会从门户网站中删除所有行。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

一种解决方案是使用ExecuteSQL来获取最大日期。这消除了对Summary函数和排序的需要,并按预期工作。建议将其作为数字返回,以避免日期格式出现任何问题。

GetAsTimestamp ( 
    ExecuteSQL (
    "SELECT DISTINCT COALESCE(MaxDate,'')
        FROM Survey 
    WHERE ClientIDCategory = ? "
    ; "" ; "";ClientIDCategory )
)

此外,您需要将ShowInPortal字段更改为未存储的calc字段,其中包含:

If ( GetAsNumber(Date) = MaxDateGroupSQL ; 1 ; 0 )

然后在此字段上过滤门户网站。

如果需要,我可以发送样本文件。