FileMaker下拉列表联动:同步选中年份及上年对应价格字段值
FileMaker实现年份选择同步对应价格字段的方案
方法一:计算字段自动同步(无需脚本)
直接通过计算字段实现实时同步,适合逻辑简单的场景:
配置「Price for the selected year」字段:
- 打开字段定义,将该字段类型设为计算
- 写入计算式(示例为数字年份,若年份是文本类型,给年份值加引号即可):
Case ( For this year = 2020 ; Price 2020 ; For this year = 2021 ; Price 2021 ; For this year = 2022 ; Price 2022 ; // 依次添加剩余年份的对应关系 "" )
配置「Price for the year before」字段:
- 同样设为计算字段,先计算上一年再匹配价格:
Let ( prevYear = For this year - 1 ; Case ( prevYear = 2019 ; Price 2019 ; prevYear = 2020 ; Price 2020 ; // 对应添加所有可能的上一年份与价格字段的关系 "" ) ) - 若年份是文本格式,先转数字处理:
prevYear = GetAsNumber(For this year) - 1
- 同样设为计算字段,先计算上一年再匹配价格:
方法二:触发器+脚本同步(灵活扩展)
如果后续需要添加验证、日志等额外逻辑,用脚本触发更合适:
设置字段触发器:
- 进入布局模式,选中「For this year」字段,右键选择设置触发器
- 添加「OnObjectModify」触发器,关联一个新建脚本
编写同步脚本:
# 获取选中年份(转数字统一处理) Set Variable [ $selectedYear ; Value: GetAsNumber(For this year) ] # 同步选中年份的价格 Set Field [ Price for the selected year ; Evaluate ( "Price " & $selectedYear ) ] # 同步上一年价格 Set Variable [ $prevYear ; Value: $selectedYear - 1 ] Set Field [ Price for the year before ; Evaluate ( "Price " & $prevYear ) ]Evaluate函数直接拼接字段名,避免大量Case判断,维护更方便- 若年份是纯文本格式,可去掉
GetAsNumber,直接用文本拼接
关键注意事项
- 保证所有价格字段命名格式统一(如「Price XXXX」),避免拼接或判断出错
- 下拉列表的年份选项格式(文本/数字)要和计算式/脚本中的处理逻辑一致
- 计算字段会自动实时更新;脚本触发需确保布局权限允许脚本执行,且触发器处于启用状态
内容的提问来源于stack exchange,提问作者Samlego2
相关产品推荐
相关产品推荐

