Filemaker:在每个相关记录中设置特定字段的最佳方式

时间:2010-09-06 10:57:32

标签: filemaker

我有一个FileMaker脚本来计算一个值。我有来自表A 1 记录,其关系指向表B n 记录。为这些 n 相关记录设置B::Field到此值的最佳方法是什么?

执行Set Field [B::Field; $Value]只会设置 n 相关记录的第一个的值。然而,以下是有效的:

Go to Related Record [Show only related records; From table: "B"; Using layout: "B_layout" (B)]
Loop
    Set Field [B::Field; $Value]
    Go To Record/Request/Page [Next; Exit after last]
End Loop
Go to Layout [original layout]

有没有更好的方法来实现这一目标?我不喜欢这样一个事实:为了以编程方式设置一些值(模型)(控制器),我必须创建一个布局(视图)并切换到它,即使用户不应该注意到任何变化的视图

3 个答案:

答案 0 :(得分:3)

FileMaker始终主要是最终用户工具,因此其所有脚本更像是重复用户操作的宏。它远不如面向程序员的环境那样灵活。实际上,转到另一个布局是操纵相关值的标准方法。如果您想要复制相关记录或打印报告,则无论如何都必须这样做。

所以:

  1. 您的脚本非常好,但您可以使用“替换字段内容”脚本步骤。还要在开头添加Freeze Window脚本步骤;它会阻止屏幕更新。

  2. 如果您有相关表的门户,则可以遍历门户网站行。

  3. FileMaker插件API可以执行SQL,并且有一些插件可以公开此功能。因此,如果你真的想要,这也是一个选择。

  4. 我自己更喜欢第一种变体。

答案 1 :(得分:2)

循环浏览相关记录门户

通过具有相关记录和设置字段的门户循环比取代或转到记录,设置字段循环有几个优点。

  1. 您不必离开布局。如果门户网站上已经没有门户网站,则可以隐藏或关闭门户网站。

  2. 您可以以交易方式执行此操作。 IE可以确保所有记录都被编辑,或者都没有。这很重要,因为在多用户网络解决方案中,记录可能并不总是可编辑的。在没有门户的情况下替换或循环记录都不是事务安全。

  3. 以下是FileMaker transactions的一些信息。

    您可以使用Go To Portal Row循环访问门户。像这样:

    Go To Portal Row [First]
    Loop
        Set Field [B::Field; $Value]
        Go To Portal Row [Next; Exit after last]
    End Loop
    

答案 2 :(得分:0)

这取决于您使用的值。如果你需要硬连接某个字段,那么听起来你没有一个非常规范化的数据结构。最简单的方法是在TableB中计算而不是存储的字段,或者如果这是存储的内容,它是否可以是创建记录时设置的查找字段?

TableB中使用的字段是什么以及如何使用?