按组筛选最近创建的记录的门户
Filter portal for most recently created record by group
我的 "Clients" table 上有一个门户。相关 table 包含随时间更新的调查结果。对于客户和类别的每个组合(相关 table 中的一个字段),我只希望门户显示最近收集的行。
Here is a link to a trivial example that illustrates the issue I'm trying to address。我在这个例子中有两个 table(与 ClientID 相关):
- 客户
- Table 1 获取摘要方法
Table 1 获取摘要方法 table 如下所示:
其中:
- MaxDate 是一个汇总字段 = 日期的最大值
- MaxDateGroup 是一个计算字段 = GetSummary ( MaxDate ;
客户端ID类别)
- ShowInPortal = If ( Date = MaxDateGroup ; 1 ; 0 )
- table 按 ClientIDCategory
排序
第 1 期我被难住了: .
ShowInPortal 在第 3 行 (PKTable01 = 5)、第 4 行 (PKTable01 = 6) 和 table 以上。我不确定为什么 FM 将 1Red 和 1Blue 解释为同一类别,或者我只是误解了 GetSummary 函数的作用。
客户 table 看起来像这样:
其中:
- 门户记录按 ClientIDCategory
排序
第 2 期我被难住了:
我只希望 ShowInPortal 值等于 1 的行出现在门户中。我尝试使用以下公式创建门户过滤器:Table 1 Get Summary Method::ShowInPortal = 1。但是,使用该过滤器会从门户中删除所有行。
非常感谢任何帮助。
一种解决方案是使用 ExecuteSQL 获取最大日期。这消除了对摘要函数和排序的需要,并按预期工作。建议 return 将其作为数字以避免任何日期格式问题。
GetAsTimestamp (
ExecuteSQL (
"SELECT DISTINCT COALESCE(MaxDate,'')
FROM Survey
WHERE ClientIDCategory = ? "
; "" ; "";ClientIDCategory )
)
此外,您需要将 ShowInPortal 字段更改为未存储的计算字段:
If ( GetAsNumber(Date) = MaxDateGroupSQL ; 1 ; 0 )
然后在此字段上过滤门户。
如果你想要的话,我可以把样本文件发给你。
我的 "Clients" table 上有一个门户。相关 table 包含随时间更新的调查结果。对于客户和类别的每个组合(相关 table 中的一个字段),我只希望门户显示最近收集的行。
Here is a link to a trivial example that illustrates the issue I'm trying to address。我在这个例子中有两个 table(与 ClientID 相关):
- 客户
- Table 1 获取摘要方法
Table 1 获取摘要方法 table 如下所示:
其中:
- MaxDate 是一个汇总字段 = 日期的最大值
- MaxDateGroup 是一个计算字段 = GetSummary ( MaxDate ; 客户端ID类别)
- ShowInPortal = If ( Date = MaxDateGroup ; 1 ; 0 )
- table 按 ClientIDCategory 排序
第 1 期我被难住了: .
ShowInPortal 在第 3 行 (PKTable01 = 5)、第 4 行 (PKTable01 = 6) 和 table 以上。我不确定为什么 FM 将 1Red 和 1Blue 解释为同一类别,或者我只是误解了 GetSummary 函数的作用。
客户 table 看起来像这样:
其中:
- 门户记录按 ClientIDCategory 排序
第 2 期我被难住了:
我只希望 ShowInPortal 值等于 1 的行出现在门户中。我尝试使用以下公式创建门户过滤器:Table 1 Get Summary Method::ShowInPortal = 1。但是,使用该过滤器会从门户中删除所有行。
非常感谢任何帮助。
一种解决方案是使用 ExecuteSQL 获取最大日期。这消除了对摘要函数和排序的需要,并按预期工作。建议 return 将其作为数字以避免任何日期格式问题。
GetAsTimestamp (
ExecuteSQL (
"SELECT DISTINCT COALESCE(MaxDate,'')
FROM Survey
WHERE ClientIDCategory = ? "
; "" ; "";ClientIDCategory )
)
此外,您需要将 ShowInPortal 字段更改为未存储的计算字段:
If ( GetAsNumber(Date) = MaxDateGroupSQL ; 1 ; 0 )
然后在此字段上过滤门户。
如果你想要的话,我可以把样本文件发给你。