脚本示例

可以在“帮助”中提供的脚本示例基础上创建自己的脚本。有关更多示例脚本和其他帮助,请参阅 Claris 社区

要在 FileMaker Pro 中查看脚本:

  1. 选择“脚本”菜单 >“脚本工作区”。或者,选择“文件”菜单 >“管理”>“脚本”。
  2. 在脚本面板中,双击要查看的脚本。

    脚本随即在脚本编辑面板中的新选项卡内打开。

If 结构示例

If、Else If、Else 和 End If 脚本步骤定义一种控制是否执行脚本步骤的结构。这种控制取决于可测试的条件或布尔值计算的结果。

  • 计算结果为除零以外的任何数值时,条件解析为真,然后执行随后的脚本步骤。
  • 计算结果为零、空值或无法解析为数字的内容时,条件解析为假,然后不会执行随后的脚本步骤。

Else If 步骤提供了附加的布尔值测试。如果所有条件都为假,Else 步骤会提供可选的执行步骤。

示例 1

执行查找。如果没有找到记录,则显示自定义对话框。如果找到记录,则对搜索结果加以排序。

复制
执行查找 [恢复]
If [Get ( 查找个数 ) = 0]
    显示自定义对话框 ["查找记录"; "未找到记录。"]
Else
    对记录排序 [恢复; 包括对话框:关闭]
End If

示例 2

执行查找。如果没有找到记录,则显示自定义对话框。如果找到一条记录,则转到“发货单详情”布局。如果找到多条记录,则转到“发货单”布局。

复制
执行查找 [恢复]
If [Get (查找个数) = 0]
    显示自定义对话框 ["查找记录"; "未找到记录。"]
Else If [Get (查找个数) = 1]
    转到布局 ["发货单详情"]
Else
    转到布局 ["发货单"]
End If

循环结构示例

Loop、Exit Loop If 和 End Loop 脚本步骤定义一种用于重复脚本步骤的结构。Loop 和 End Loop 之间的脚本步骤会连续执行,直到满足 Exit Loop If 条件或“最后一步后退出”条件,执行“转到记录/请求/页面”或“转到入口行”步骤。

使用 Exit Loop If 脚本步骤指定要解析的计算。计算结果不是零时,会解析为真,并结束循环。计算结果为零时,会解析为假,并继续循环。

示例 1

将“客户::工作电话”的内容拷贝到所有记录的“客户::日常联系”中。

复制
转到记录/请求/页面 [第一个]
Loop
    设置字段 [客户::日常联系; 客户::工作电话]
    转到记录/请求/页面 [下一步; 最后一步后退出:打开]
End Loop

示例 2

使用 Loop 语句依次对记录进行处理以导出容器字段中的文件。如果记录的“容器”字段为空,则退出循环。

复制
设置变量 [$路径; 值:Get ( 文档路径 ) & 产品::容器]
转到记录/请求/页面 [第一个]
Loop
    Exit Loop If [IsEmpty ( 产品::容器 )]
    导出字段内容 [产品::容器; "$路径" ; 创建
    文件夹:关闭 ]
    转到记录/请求/页面 [下一步; 最后一步后退出:打开]
End Loop

启动脚本示例

启动脚本可以自定义用户的数据库视图或者在数据库打开时执行其他操作。启动脚本由 OnFirstWindowOpen 脚本触发器运行。有关设置启动脚本的信息,请参阅设置文件选项

示例 1

如果帐户分配了“完全访问权限”权限集,会转到“管理”布局。否则,会转到“数据输入”布局。

复制
If [Get ( 帐户权限集名称 ) = "[Full Access]"]
    转到布局 ["管理"]
Else
    转到布局 ["数据输入"]
End If

示例 2

检查哪个 FileMaker Pro 或 FileMaker Go 版本打开了数据库并转到适当的“客户”布局。

复制
If [Get ( 设备 ) = 3]
    转到布局 ["客户 iPad"]
Else If [Get(设备) = 4]
    转到布局 ["客户 iPhone"]
Else
    转到布局 ["客户"]
End If

执行脚本和脚本参数示例

“执行脚本”会执行当前文件或其他 FileMaker Pro 文件中定义的脚本。

可选的脚本参数可以将文本传递到脚本中。例如,在启动脚本时,您可以使用脚本参数存储活动记录编号,这样可以在脚本结束时很容易地返回该记录。或者,您可以从同一布局上不同按钮调用同一脚本,通过为每个按钮使用不同的脚本参数,可以很容易地判断调用脚本的按钮。

指定参数时,可以在脚本内访问它,或使用 Get (脚本参数)函数将其传递到其他脚本。

也可以使用复杂参数,如名称列表或其他值。用回车符分隔的复杂参数可以使用 LeftValues 函数MiddleValues 函数RightValues 函数进行解析。这些函数会返回用回车符分隔的列表中的起始值、中间值和结尾值。用其他字符分隔的复杂参数可以使用 Left 函数Middle 函数Right 函数等函数解析为文本。

示例 1

运行不带参数的“打印发货单报表”脚本。

复制
转到布局 ["发货单报表"]
执行脚本 [指定:来自列表 ; "打印发货单报表" ; 
参数: ]

示例 2

使用字段“客户名”作为参数。将在一个采用“发货单报表”布局的新窗口中返回当前客户的发货单。

主脚本:当前客户发货单

复制
查找匹配记录 [替换; 发货单::客户 ID]
#调用下面定义的“查看客户发货单”子脚本
执行脚本 [指定:来自列表:"查看客户发货单"; 参数:"发货单::客户名"]

子脚本:查看客户发货单

复制
新建窗口 [名称:"客户: " & Get (脚本参数); 样式:文档]
转到布局 ["发货单报表"]
对记录排序 [恢复; 包括对话框:关闭]

注释

  • 脚本参数只在脚本执行期间存在。每次执行脚本时都会重置脚本参数。如果希望脚本参数在文件打开时始终存在,可以使用全局变量作为脚本参数。
  • 除非使用 Get(脚本参数) 函数明确将脚本参数传递到其他脚本,否则脚本参数只存在于父脚本内。
  • 脚本参数可以在脚本内部使用(但无法修改),也可以使用 Get (脚本参数) 函数将脚本参数作为子脚本的参数传递到子脚本。每次使用“执行脚本”调用子脚本时,还可以指定不同的参数。更改传递到子脚本的参数并不会修改父脚本中由 Get(脚本参数) 所返回的参数值。