【问题标题】:Filter portal for most recently created record by group按组过滤最近创建的记录的门户
【发布时间】:2017-09-17 20:55:24
【问题描述】:

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

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

  • 客户
  • 表 1 获取汇总方法

表 1 获取汇总方法表如下所示:

地点:

  • MaxDate 是一个汇总字段 = 日期的最大值
  • MaxDateGroup 是一个计算字段 = GetSummary ( MaxDate ; 客户IDCategory)
  • ShowInPortal = If (Date = MaxDateGroup ; 1 ; 0 )
  • 表格按 ClientIDCategory 排序

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

客户表如下所示:

地点:

  • 门户记录按 ClientIDCategory 排序

我被难住的问题 2:
我只希望 ShowInPortal 值等于 1 的行应该出现在门户中。我尝试使用以下公式创建门户过滤器:表 1 Get Summary Method::ShowInPortal = 1。但是,使用该过滤器会从门户中删除所有行。

非常感谢任何帮助。

【问题讨论】:

  • 您是否尝试将 MaxDateGroup 放入门户以查看每行的计算结果?
  • 嗨@AndreasT,我能够解决问题 1。用于 MaxDateGroup 的计算返回的是数字而不是文本。这导致它忽略了“红色”和“蓝色”。但是仍然无法弄清楚问题2。我将 MaxDateGroup 添加到门户中,但我没有看到它对问题 2 有什么帮助。
  • 嗯,在我看来,问题在于门户过滤器在排序之前运行,这意味着不会有任何记录显示 ShowInPortal 字段评估为真,因为门户需要为开始工作。所以 ShowInPortal 在这种情况下总是假的。

标签: filemaker


【解决方案1】:

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

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

另外,您需要将 ShowInPortal 字段更改为未存储的计算字段:

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

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

如果需要,我可以将示例文件发送给您。

【讨论】:

  • 嗨@AndreasT。谢谢你的建议。不幸的是,它似乎对我不起作用。我将上面的代码块剪切并粘贴到 MaxDate 的计算中。当我向调查表中添加新记录时,MaxDate 为空白。
  • 上传示例文件here
  • 有效!谢谢!
猜你喜欢
  • 1970-01-01
  • 2015-11-05
  • 2021-12-13
  • 1970-01-01
  • 2018-09-07
  • 2015-12-26
  • 2012-04-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多