筛选最近按照小组搜索的记录
我在我的“客户”桌上有一个门户。相关表格包含随时间更新的调查结果。对于客户端和类别(相关表中的字段)的每个组合,我只希望门户显示最近收集的行。筛选最近按照小组搜索的记录
Here is a link to a trivial example that illustrates the issue I'm trying to address。我在这个例子中(相关的客户端ID)两个表:
- 客户
- 表1获取方法提要
其中:
- MAXDATE是汇总字段= M最大日期
- MaxDateGroup是一个计算的字段= GetSummary(MaxDate; ClientIDCategory)
- ShowInPortal =如果(日期= 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获取摘要方法:: ShowInPortal = 1.但是,使用该过滤器会从门户网站中删除所有行。
任何帮助,非常感谢。
一个解决方案是使用ExecuteSQL来获取最大日期。这消除了对摘要功能和排序的需求,并按预期工作。建议将其作为数字返回以避免与日期格式有关的任何问题。
GetAsTimestamp (
ExecuteSQL (
"SELECT DISTINCT COALESCE(MaxDate,'')
FROM Survey
WHERE ClientIDCategory = ? "
; "" ; "";ClientIDCategory)
)
此外,您还需要将ShowInPortal字段更改为一个未保存计算字段:
If (GetAsNumber(Date) = MaxDateGroupSQL ; 1 ; 0)
然后在这一领域过滤门户。
如果需要,我可以向您发送示例文件。
Hi @AndreasT。感谢您的建议。不幸的是,它似乎并没有为我工作。我将上面的代码块剪切并粘贴到MaxDate的计算中。当我将新记录添加到调查表时,MaxDate为空。 –
上传了示例文件[here](https://www.dropbox.com/s/hgd9ke51q3o5tco/Portal%20Show%20last%20By%20Group%20for%20Stack%20Overflow.fmp12.zip?dl=0) – AndreasT
Works!谢谢! –
您是否曾尝试将MaxDateGroup放入门户以查看每行的计算结果? – AndreasT
嗨@AndreasT,我能够解决问题1.用于MaxDateGroup的计算是返回一个数字而不是文本。这导致它忽略了“红色”和“蓝色”。尽管如此,仍然不知道问题2。我在门户中添加了MaxDateGroup,但我没有看到它会如何帮助解决问题2. –
好吧,在我看来,问题在于门户过滤器在排序之前运行,这意味着不会有任何记录ShowInPortal字段的计算结果为true,因为需要对门户进行排序以使求取总结起作用。所以ShowInPortal在这种情况下总是是错误的。 – AndreasT