Filemaker 2013,动态改变列表

时间:2014-10-09 14:43:14

标签: listview foreach filemaker

FM脚本noob在这里,得到了自己的Filemaker副本,到目前为止发现它非常有趣。

但是我想知道当增量超过一定数量时是否可以限制列表中显示的内容。

例如说我有一个任务列表,附上会议记录。

理想情况下,我希望保持总计的分钟数,当它们达到450以上(平均工作日的分钟数)时,它会停止显示更多记录。

基本上我可以快速了解一下我今天可能完成的任务。

或者换句话说,可以在Filemaker

中复制以下PHP代码
<?php

$foo=0; //running total of mins

foreach($tasks as $task){

$foo=$foo + $task['mins'];

if($foo > 450){break;}else{echo "Task: ".$task['name']."<br>";}

}

?> 

3 个答案:

答案 0 :(得分:0)

您可以遍历已排序的任务列表,并将用于限定任务的主键添加到返回分离的全局字段。超过小时时退出循环。然后使用此全局字段作为指向任务的关系中的源。

Set Variable [ $hours = 0 ]
Set Variable [ $MaxHours = 8 ]
Loop
    Exit Loop If ($hours > $maxHours)
    Set Field [ myTable::globalKeyField ; myTable::globalKeyField & "¶" & task::id ]
    Set Variable [ $hours = $hours + myTable::duration ]
    Go To Record/Request [ Next ]
End Loop

答案 1 :(得分:0)

我首先要在任务数据库中创建运行总计。如果您有一个按现有排序定义排序的自引用TO(无论您使用哪个初始堆栈列表),那么为TotalMinutes创建一个calc字段,定义为Min + sum(totalpriorrecords)。为了简洁,我在这里的指导上吝啬,但是totalpriorrecords将通过TO关系和您正在使用的现有等级。

您可以通过创建TO来完成任务,并与布局的表上下文建立关系,其中布局表的calc或设置字段MinutesinaDay设置为450,然后REL使用task ::分钟&lt;上下文:MinutesinaDay

在FM13中,我认为您也可以使用针对现有TO的一些SQL查询技巧更轻松地执行此操作,并保存多个TO以获取所需内容。

一旦你完成了有限的任务,你就可以创建价值表或门户网站,只显示总数为450的项目的任务列表。

答案 2 :(得分:0)

  

基本上我可以快速了解一下我的任务   今天可能会完成。

在Filemaker中,您找到要显示的记录(或省略那些您不显示的记录)。

但是,根据摘要进行查找是不可能的。恕我直言,你问题的最简单的解决方案是显示所有任务并有条件地格式化你感兴趣的组。条件格式的公式将是=

Tasks::sRunTotal < 450

其中sRunTotal是摘要字段,总分钟数(正在运行)。其余的记录将继续显示在下面,没有任何不良影响,用另一种颜色/字体/你将会是什么。

或者,如果您愿意,可以对记录进行脚本循环,直到:

Tasks::sRunTotal > 450

然后使用Omit Muliple Records []脚本步骤省略剩余记录。