Filemaker:如果语句倍数

时间:2015-11-10 20:29:47

标签: filemaker

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查看所有可能性?

4 个答案:

答案 0 :(得分:2)

您的尝试有(至少)两个问题:

  1. 评估测试Field1 = "Bob" or "Joe" or "Carl"就好像你已经写了(Field1 = "Bob") or ("Joe") or ("Carl") - 所以当Field1 =" Bob";
  2. 时它只会返回true
  3. 你不能像这样将两个If()指令串在一起。虽然 你可以嵌套它们,你真的应该使用Case() 在这里发挥作用,说:

    Case ( 
    Field1 = "Bob" or Field1 = "Joe" or Field1 = "Carl" ; "Tech Assist" ;
    Field1 = "Susan" or Field1 = "Hank" or Field1 = "Alex" ; "Employee"
    )
    
  4. 这里更严重的问题是你正在硬编码数据,它几乎肯定会在某个时刻变成计算公式。

    应该拥有的是员工的相关表格,其中包含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)

长期解决方案是拥有一个名称和部门表。如果图像不清楚,请参阅图像。

Staff Table Sample

然后,您将在当前表中的Field1和示例图像中的“名称”字段之间建立关系。从那里,关系将输出部门的名称,这样您就不需要if,else或case。否则,每当您的名册或其在公司中的角色发生变化时,您都会发现自己正在更新此脚本。该关系还允许您轻松添加新部门,而无需更新此计算。