Filemaker 通过脚本在列表视图中选择其他记录

Filemaker 通过脚本在列表视图中选择其他记录,filemaker,Filemaker,我在Filemaker 11中有一个表,其中包含以下字段:thingID、infoNumber、itemHistory。infoNumber显示我们认为项目历史记录发生的顺序,有时这是不正确的,需要重新安排 thingID,itemHistory 第一件,第一件,是亚当 第一件,第二件,是克莱尔 第一件事,第三件事,是本 第一件事,第四件事是和戴夫在一起的 我在infoNumber asc排序的列表视图中显示这些,用户意识到它实际上是1,3,2,4,我想让上下箭头可见,以便用户切换它们,即单击i

我在Filemaker 11中有一个表,其中包含以下字段:thingID、infoNumber、itemHistory。infoNumber显示我们认为项目历史记录发生的顺序,有时这是不正确的,需要重新安排

thingID,itemHistory

第一件,第一件,是亚当

第一件,第二件,是克莱尔

第一件事,第三件事,是本

第一件事,第四件事是和戴夫在一起的

我在infoNumber asc排序的列表视图中显示这些,用户意识到它实际上是1,3,2,4,我想让上下箭头可见,以便用户切换它们,即单击infoNumber=3的记录上的向上箭头将其设置为2,旧的infoNumber=2将设置为3

当用户单击列表视图中的按钮时,如何编写脚本来切换这些选项

我的想法是:

将变量[$clickedDown,infoNumber]设置为我们单击的记录的infoNumber

如果[$clickedDown!=1]

设置字段[信息编号,单击向下-1]

但是我如何移动到infoNumber=clickedDown-1的记录

如果结束


我做这件事的方法,是做几个发现,这里是我的单程解决方案

首先你点击了一些东西,记录下它当前的信息号

设置变量[$infoNumber,infoNumber]

使用-2作为临时占位符

设置字段[infoNumber=-2]

错误捕获[打开]

执行Find[thingID=$thingID,infoNumber=$infoNumber-1]

如果[Get LastError=401]

没有结果,只需重新搜索临时内容并将其设置回需要的内容即可 是

执行Find[thingID=$thingID,infoNumber=-2]

设置字段[infoNumber,$infoNumber]

否则

设置字段[infoNumber,$infoNumber]

执行Find[thingID=$thingID,infoNumber=-2]

设置字段[infoNumber,$infoNumber-1]

如果结束

回到以前的布局


我很想知道是否有更好的方法

您可以通过使用关系来实现这一点。创建一个新的表引用(如History Previous),并使用以下谓词将其链接到列表布局的表引用(如History):

History::ThingID = History Previous::ThingID
History::infoNumber > History Previous::infoNumber
按历史记录对关系排序Previous::infoNumber,降序

这将为您提供一组相关的历史记录,这些记录将出现在相关内容列表的前面。由于排序,第一条记录将是上一条记录

现在,当您运行脚本时,您可以:

If [ Count ( History Previous::ThingID ) > 0 ]
Set Variable [ $infoNumber, History Previous::infoNumber ]
Set Field [ History Previous::infoNumber, History::infoNumber ]
Set Field [ History::infoNumber, $infoNumber ]
End If
请注意,尽管历史上一个关系可能引用多条记录,但在设置变量步骤中从第一条记录获取数据和在第一个设置字段步骤中将数据设置到第一条记录时,您可以依靠关系排序来访问第一条记录