我在 Filemaker 11 中有一个表格,其中包含字段thingID, infoNumber (#), itemHistory
。 infoNumber
显示我们认为项目历史记录发生的顺序(有时这是不正确的,需要重新排列)。
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 ??
移动到记录结束如果
答案 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
请注意,虽然历史记录上一页关系可能会引用多条记录,但您可以依赖关系排序来提供对第一条记录的访问权限,这两种记录都是从它获取数据时(在设置变量步骤)并将数据设置到其中(在第一个设置字段步骤中)。