通过脚本在列表视图中选择不同的记录

时间:2012-06-06 11:35:33

标签: filemaker

我在 Filemaker 11 中有一个表格,其中包含字段thingID, infoNumber (#), itemHistoryinfoNumber显示我们认为项目历史记录发生的顺序(有时这是不正确的,需要重新排列)。

  

thingID,#,itemHistory

     事情1,1,与亚当一起

     

事情1,2,与克莱尔在一起

     

事情1,3,与本

     事情1,4,与戴夫的关系

我在列表视图中显示这些内容(由infoNumber asc排序),并且用户意识到它实际上是“1,3,2,4”,我想要向上用户可以切换向下箭头,即单击带有infoNumber = 3的记录上的向上箭头将其设置为2,将旧的infoNumber = 2设置为3。

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

我的想法:

  

设置变量[$ clickedDown,infoNumber]#我们点击的信息号

的记录      

如果[$ clickedDown!= 1]

     

设置字段[infoNumber,clickedDown -1]

     

#但是如何使用infoNumber = clickedDown-1 ??

移动到记录      

结束如果

2 个答案:

答案 0 :(得分:0)

我这样做的方法是做几个Finds,这是我的单向解决方案。

  

#首先,你点击了某些内容,记录了当前的infoNumber

     

设置变量[$ infoNumber,infoNumber]

     

#使用-2(任意)作为临时占位符

     

设置字段[infoNumber = -2]

     

错误捕获[开]

     

执行查找[thingID = $ thingID,infoNumber = $ infoNumber - 1]

     

如果[Get(LastError = 401)]

     

#没有结果然后只是重新搜索临时并将其重新设置为它   是

     

执行查找[thingID = $ thingID,infoNumber = -2]

     

设置字段[infoNumber,$ infoNumber]

     

否则

     

设置字段[infoNumber,$ infoNumber]

     

执行查找[thingID = $ thingID,infoNumber = -2]

     

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

     

结束如果

     

#回到之前的布局

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

答案 1 :(得分:0)

你可以通过使用关系来做到这一点。创建一个新的表格(例如,历史记录上一页),并使用以下谓词将其链接到列表布局的表格事件(例如,历史记录):

History::ThingID = History Previous::ThingID
History::infoNumber > History Previous::infoNumber

历史记录上一页:: 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

请注意,虽然历史记录上一页关系可能会引用多条记录,但您可以依赖关系排序来提供对第一条记录的访问权限,这两种记录都是从它获取数据时(在设置变量步骤)并将数据设置到其中(在第一个设置字段步骤中)。