2015-11-10 32 views
1

Filemaker Pro 13,使用Windows 10 comp。數據庫從Mac和Windows計算機中使用。Filemaker:如果語句倍數

我有一個計算字段,檢測另一個字段的字符串值來定義自己。

Field 1: Name Field2: Position 

If (Field1 = "Bob" or "Joe" or "Carl" ; "Tech Assist") 
If (Field1 = "Susan" or "Hank" or "Alex" ; "Employee") 

的Filemaker只挑選了在if語句的第一個值,在這個例子中,「鮑勃」和「蘇珊」。所有其他人都留空。 像這樣:

Name: Bob  Position: Tech Assist 
Name: Joe  Position: ___________ 

我如何獲得的Filemaker查看所有的可能性?

回答

0

經過多次擺弄之後,我和Big Boss發現了它。似乎有點多餘:

If (Field1 = "Bob or Field1 = "Joe" or Field1 = "Carl" ; "Tech Assist") 
2

有(至少)兩個問題的嘗試:

  1. 測試Field1 = "Bob" or "Joe" or "Carl",如果你已經寫(Field1 = "Bob") or ("Joe") or ("Carl")評估 - 因此它僅會返回true時Field1 =「Bob」;
  2. 您不能將兩條If()指令串起來。雖然 你可以巢他們,你真的應該使用案例() 功能在這裏,說:

    Case ( 
    Field1 = "Bob" or Field1 = "Joe" or Field1 = "Carl" ; "Tech Assist" ; 
    Field1 = "Susan" or Field1 = "Hank" or Field1 = "Alex" ; "Employee" 
    ) 
    

這裏的更嚴重的問題是,你是硬編碼數據那幾乎肯定會在某一時刻變成一個計算公式。

應該有一個Staffid,名稱和職位領域的工作人員相關表。然後,當您填寫此表中的Field1和指定的工作人員的StaffID時,相應的職位將通過關係從該職員在Staff表中的記錄中獲取。

1

或者......

Case(

Not IsEmpty(FilterValues(List("Bob" ; "Joe" ; "Carl") ; Field1)) ; 
"Tech Assist" ; 

Not IsEmpty(FilterValues(List("Susan" ; "Hank" ; "Alex") ; Field1)) ; 
"Employee" 

) 
-1

一個長期的解決辦法是有名字和部門的表。如果圖片不清楚,請參閱圖片。

Staff Table Sample

那麼你將建立字段1之間在當前的表和「名稱」字段的樣本圖像中的關係。從那裏,關係將輸出部門的名稱,以便您不需要if,else或case。否則,每當您的公司名單或角色發生變化時,您都會發現自己正在更新此腳本。這種關係還可以讓您輕鬆添加新部門,而無需更新此計算。