Filemaker Pro 13,使用windows 10 comp。数据库可以在Mac和Windows计算机上使用。
我有一个计算字段,用于检测另一个字段的字符串值以定义自己。
Field 1: Name Field2: Position
If ( Field1 = "Bob" or "Joe" or "Carl" ; "Tech Assist")
If ( Field1 = "Susan" or "Hank" or "Alex" ; "Employee")
Filemaker仅获取If语句的第一个值,在本例中为“Bob”和“Susan”。所有其他人都留空了。 像这样:
Name: Bob Position: Tech Assist
Name: Joe Position: ___________
如何让Filemaker查看所有可能性?
答案 0 :(得分:2)
您的尝试有(至少)两个问题:
Field1 = "Bob" or "Joe" or "Carl"
就好像你已经写了(Field1 = "Bob") or ("Joe") or ("Carl")
- 所以当Field1 =" Bob"; 你不能像这样将两个If()指令串在一起。虽然 你可以嵌套它们,你真的应该使用Case() 在这里发挥作用,说:
Case (
Field1 = "Bob" or Field1 = "Joe" or Field1 = "Carl" ; "Tech Assist" ;
Field1 = "Susan" or Field1 = "Hank" or Field1 = "Alex" ; "Employee"
)
这里更严重的问题是你正在硬编码数据,它几乎肯定会在某个时刻变成计算公式。
应该拥有的是员工的相关表格,其中包含StaffID,名称和职位的字段。然后,当您使用指定的工作人员的StaffID填写此表中的Field1时,将通过关系从员工表中该员工成员的记录中获取相应的职位。
答案 1 :(得分:1)
...替代地
Case(
Not IsEmpty( FilterValues( List( "Bob" ; "Joe" ; "Carl" ) ; Field1 ) ) ;
"Tech Assist" ;
Not IsEmpty( FilterValues( List( "Susan" ; "Hank" ; "Alex" ) ; Field1 ) ) ;
"Employee"
)
答案 2 :(得分:0)
经过多次摆弄,Big Boss和我想通了。似乎有点多余:
If ( Field1 = "Bob or Field1 = "Joe" or Field1 = "Carl" ; "Tech Assist")
答案 3 :(得分:-1)
长期解决方案是拥有一个名称和部门表。如果图像不清楚,请参阅图像。
然后,您将在当前表中的Field1和示例图像中的“名称”字段之间建立关系。从那里,关系将输出部门的名称,这样您就不需要if,else或case。否则,每当您的名册或其在公司中的角色发生变化时,您都会发现自己正在更新此脚本。该关系还允许您轻松添加新部门,而无需更新此计算。