1

我有一个计算值的 FileMaker 脚本。我从表中有1A条记录,其中一个关系指向表的n条记录B为这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]

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

4

3 回答 3

3

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

所以:

  1. 您的脚本非常好,只是您可以使用替换字段内容脚本步骤。还要在开头添加冻结窗口脚本步骤;它将阻止屏幕更新。

  2. 如果您有相关表的入口,则可以循环访问入口行。

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

我自己更喜欢第一个变体。

于 2010-09-06T16:19:08.580 回答
2

循环访问相关记录的门户

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

  1. 您不必离开布局。如果门户尚未在布局中,则门户可以隐藏或放置在屏幕外。

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

以下是有关FileMaker 交易的一些信息。

您可以使用 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
于 2014-04-15T22:33:36.760 回答
0

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

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

于 2010-09-08T03:44:34.367 回答