0

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

thingID, #, itemHistory

事情 1, 1 和亚当在一起

事情 1、2 和克莱尔在一起

事情 1、3 和 Ben 在一起

第 1、4 件事是和戴夫在一起的

我在列表视图中显示这些(按 infoNumber asc 排序),并且用户意识到它实际上是“1,3,2,4”,我希望向上和向下箭头可见以便用户切换它们,即单击 infoNumber=3 记录上的向上箭头会将其设置为 2,而旧的 infoNumber=2 将设置为 3。

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

我的想法:

Set Variable[$clickedDown, infoNumber] #我们点击的记录的infoNumber

如果 [ $clickedDown != 1 ]

设置字段 [ infoNumber, clickedDown -1 ]

# 但是如何使用 infoNumber = clickedDown-1 移动到记录?

万一

4

2 回答 2

0

我这样做的方式是进行多次查找,这是我采用一种方式的解决方案。

# 首先你点击了某个东西,记录它当前的 infoNumber

设置变量 [ $infoNumber, infoNumber ]

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

设置字段 [ infoNumber = -2]

错误捕获 [开]

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

如果 [ 获取 (LastError = 401) ]

# 没有结果然后只是重新搜索临时并将其设置回原来的样子

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

设置字段 [ infoNumber, $infoNumber ]

别的

设置字段 [ infoNumber, $infoNumber ]

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

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

万一

# 回到你之前的布局

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

于 2012-06-06T12:31:40.563 回答
0

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

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

History 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

请注意,尽管History Previous关系可能引用多条记录,但您可以依靠关系排序来为您提供对第一条记录的访问,无论是从它获取数据(在Set Variable步骤中)还是将数据设置到其中(在第一个设置字段步骤中)。

于 2012-06-13T22:47:08.147 回答