8-11
如果所导入的脚本中有一个或多个脚本参考其他脚本,请确保同时选择并导入所 有参考到的脚本。
6.单击“确定”。
随即出现“导入合计”对话框。如图8-12所示
7.单击“打开日志文件”查看导入日志文件,或单击“确定”关闭“导入合计”对 话框。
如果 FileMaker Pro报告错误,请按照使用 ScriptMaker创建和编辑脚本中的步骤更 正每个脚本中的 <未知> 参考。在脚本导入期间,FileMaker Pro会在每个导入的脚 本中检查对字段、布局、其他脚本和文件等的所有参考。引用必须完全匹配才能包 括在导入中。如果找不到参考对象,FileMaker Pro会将其标记为 <未知>。 如图8-13所示
8..关闭“管理脚本”对话框。
提示可以通过选择组,然后单击“导入”,将脚本导入该组内。 .
字段名称的匹配不区分大小写。 .
导入引用相关字段的脚本时,完全限定字段名必须完全匹配,包括显示在关 系图中的表名称。 .
导入包含计算(例如“If”、“设置字段”和“插入计算结果”)的脚本步 骤时,如果 FileMaker Pro不能匹配计算中参考的所有项(即,表、字段或 自定函数),那么计算会被注释掉(使用“C”样式注释)。 .
从单个表文件导入脚本时,通过制作包含要导入脚本的文件的副本,您可以 避免大多数命名带来的问题。在拷贝的文件中,重命名表以匹配目标文件中 的一个表,然后从副本导入脚本。在两个文件中引用相同名称的字段和布局 的脚本步骤将会正确导入,因为源文件中的基础表与目标文件中的表具有相 同的名称。 .
导入包含多个复杂信息(例如查找请求、排序顺序、导入字段顺序和导出字 段顺序等)的脚本步骤时,FileMaker Pro会丢弃所有丢失的字段参考。 .
要导入脚本,您必须在源文件中具有允许修改脚本的访问权限。 .
只有执行导入操作的用户以完全访问权限登录目标数据库才会导入选项“以 完全访问权限运行脚本”。 示例
8.4脚本应用
可以在脚本示例的基础上创建自己的脚本。有几个脚本包含在 FileMaker Pro模板 中。
.请不要更改模板脚本。而是保存模板的副本,然后修改该副本。 要查看脚本定义,请执行以下操作:
1..选择“脚本”菜单 >“ScriptMaker”。或者,选择“文件”菜单 >“管理”>“脚 本”。
2.在“管理脚本”对话框中,选择要查看的脚本。
3.单击“编辑”以查看“编辑脚本”窗口中的定义详细信息。 4.关闭“编辑脚本”窗口,然后关闭“管理脚本”对话框。 8.4.1 If结构语句示例
If、Else If、Else和 End If脚本步骤定义一种控制是否执行脚本步骤的结构。这种 控制取决于可测试的条件或布尔型计算的结果。
计算得出零以外的结果时,条件解析为真,然后执行随后的脚本步骤。
计算结果为零、空值或无法解析为数字的内容时,条件解析为假,然后不会执行 随后的脚本步骤。
Else If步骤提供了附加的布尔型测试。如果所有条件都为假, Else步骤会提供可选 的执行步骤。 示例
在以下示例中,第一行给出了要解析的计算。如果计算结果为真,则执行第二行。 如果结果为假,则会忽略脚本的第二行,并执行 Else脚本。
If [销售::省份 = \河北\执行脚本 [\计算 CA税和总计 \执行脚本 [\计算总计 \
以下示例的第一行给出了要评估的计算。如果计算结果为真,则执行第二行。如果 第一个计算的结果为假,则会忽略脚本的第二行,并解析 Else If计算。如果 Else If计算结果为真,则执行随后的脚本步骤。如果结果为假,则解析下一个 Else If 计算。如果这个最终的 Else If计算结果为真,则执行随后的脚本步骤,否则忽略 该步骤并执行 Else脚本步骤。
If [销售::省份 = \河北\执行脚本 [\计算 CA税和总计 \销售::省份 = \山东\执行脚本 [\计算山东纳税额和总计\销售::省份 = \湖北\执行脚本 [\计算 湖北纳税额和总计\执行脚本 [\计算总计\
销售::省份 = \河北\执行脚本 [\计算 CA税和总计 \销售::省份 = \山东\执行脚本 [\计算山东纳税额和总计\销售::省份 = \湖北\执行脚本 [\计算
湖北纳税额和总计\执行脚本 [\计算总计\
8.4.2 循环结构示例
Loop、Exit Loop If和 End Loop脚本步骤定义一种用于重复脚本步骤的结构。Loop 和 End Loop之间的脚本步骤会连续执行,直到满足 Exit Loop If条件或“最后一步 后退出”条件,执行“转到记录/请求/页面”或“转到入口行”步骤。
使用 Exit Loop If脚本步骤指定要解析的计算。计算结果不是零时,会解析为真, 并结束循环。计算结果为零时,会解析为假,并继续循环。
Exit Loop If示例
设置字段 [销售::计数 = 0]Loop Exit Loop If [销售::计数 = 25]设置字段 [销售::计数; 销售::计数 + 1]执行脚本 [\奖金\
在上述示例值,第一个步骤指向名为计数的字段,并给出要解析的计算。(Loop 和 End Loop步骤定义循环机构。这两个步骤必须存在。
Exit Loop If步骤指示 FileMaker Pro在“计数”值到达到 25时退出执行循环内的步 骤。每次执行“设置字段”时,“设置字段”步骤都会将“计数”值增加 1。“执 行脚本”步骤会提示要执行的脚本(只要没有退出循环结构)。一旦计数值等于 25,循环就会结束,控制传递到 End Loop步骤的下一步骤(如果有)。
最后一步退出循环的示例
转到记录/请求/页面 [第一个]Loop设置字段 [员工::薪金; 员工::薪金 * 1.1]转到记 录/请求/页面 [下一步; 最后一步后退出]End Loop
上述示例中的第一个步骤会转到文件中的第一条记录。Loop和 End Loop步骤定义 循环结构。“设置字段”步骤会按 10%的增量增加薪金字段中的值。“转到记录/ 请求/页面”步骤会转到文件中的下一条记录。该循环继续进行,重复“设置字 段”和“转到记录/请求/页面”步骤,直到找到最后一条记录。因为“转到记录/
请求/页面”步骤使用“最后一步后退出”选项,该循环会在找到最后一条记录时 结束。
/页面”步骤使用“最后一步后退出”选项,该循环会在找到最后一条记录时 结束。
8.4.3 数据输入示例
这是数据输入方案的示例。用户启动递归脚本(开始输入),调用“执行输入”子 脚本,然后调用自身。利用“执行输入”脚本,用户可以在记录中输入数据,然后 调用自身,让用户可以在更多的记录中输入数据。
.可以将按钮添加到数据输入屏幕以执行打印报表的脚本。 “开始输入”示例
在以下示例中,第一个“执行”步骤会调用脚本“执行输入”。第二个“执行”步 骤会调用自身。
执行脚本 [\执行输入\执行脚本 [\开始输入\ “执行输入”示例
在此示例中,第一个步骤会创建一条记录。下一步骤会暂停脚本让用户输入数据,
当用户单击“继续”时,继续该脚本。最后的“执行”脚本会调用自身,让用户在 下一条记录中输入数据。
新建记录/请求暂停/继续脚本 [无限期]执行脚本 [\执行输入\
8.4.4启动脚本示例
在该示例中,启动脚本将在启动时自定义每个用户的数据库视图。根据当前用户, 该脚本将为其显示相应的布局,并查找与该用户相关的记录。 启动脚本示例
第一步在“销售”表中显示“欢迎”布局。If脚本步骤解析 Get(帐号名)函数
返回的值,当返回的值为 Lynn时切换到“简单”布局。如果用户名不是 Lynn,则
将解析 Else If脚本步骤,如果在此步骤中 Get(帐户名)函数返回的值为 Ann, 则该脚本将切换到“复杂”布局。然后,该脚本会使用插入计算结果脚本步骤将 用户的帐户名粘贴到“查找”模式下的字段中,以查找所有用该用户的帐户名标记 的记录。
Else If脚本步骤,如果在此步骤中 Get(帐户名)函数返回的值为 Ann,
则该脚本将切换到“复杂”布局。然后,该脚本会使用插入计算结果脚本步骤将 用户的帐户名粘贴到“查找”模式下的字段中,以查找所有用该用户的帐户名标记 的记录。
转到布局 [\欢迎布局\暂停/继续脚本 [持续时间(秒) ; 3]If [Get(帐户名)= \林 丹\转到布局 [\简单布局\(帐户名) = \李梅\转到布局 [\复杂布局
\进入查找模式 []插入计算结果 [选择; \销售::临时用户名\(帐户名)执 行查找 []
8.4.5 “执行脚本”和脚本参数示例
“执行脚本”会执行当前文件或其他 FileMaker Pro文件中定义的脚本。
可选的脚本参数可以将文本传递到脚本中。例如,在启动脚本时,您可以使用脚本 参数存储活动记录编号,这样可以在脚本结束时很容易地返回该记录。或者,您可 以从同一布局上不同按钮调用同一脚本,通过为每个按钮使用不同的脚本参数,可 以很容易地判断调用脚本的按钮。
指定参数时,可以在脚本内访问它,或使用 Get(脚本参数)函数将其传递到其 他脚本。
也可以使用复杂参数,如名称列表或其他值。用回车符分隔的复杂参数可以使用 LeftValues函数、MiddleValues函数和 RightValues函数进行解析。这些函数会返回 用回车符分隔的列表中的起始值、中间值和结尾值。用其他字符分隔的复杂参数可 以使用 Left函数、Middle函数和 Right函数等函数解析为文本。 .
脚本参数只在脚本执行期间存在。每次执行脚本时都会重置脚本参数。如果 希望脚本参数在文件打开时始终存在,可以使用全局变量作为脚本参数。 .
除非使用 Get(脚本参数)明确将脚本参数传递到其他脚本,否则脚本参 数只存在于父脚本内。 .
脚本参数可以在脚本内部使用(但无法修改),也可以使用 Get(脚本参 数)函数将脚本参数作为子脚本的参数传递到子脚本。每次使用 “执行脚
本”调用子脚本时,还可以指定不同的参数。更改传递到子脚本的参数并不 会修改父脚本中由 Get(脚本参数)所返回的参数值。 示例
示例 1:
”调用子脚本时,还可以指定不同的参数。更改传递到子脚本的参数并不 会修改父脚本中由 Get(脚本参数)所返回的参数值。 示例
示例 1:
#此示例使用脚本参数设置报表的标题
转到布局 [\详细报表\执行脚本 [\按日期排序\参数: \月末报表\设置字段 [销售::报 表标题; Get(脚本参数)]执行脚本 [\横向打印\
示例 2: