2015-11-10 3 views
1

Filemaker Pro 13, используя windows 10 comp. База данных используется как с компьютеров Mac, так и с Windows.Filemaker: If statement multiples

У меня есть поле вычисления, которое определяет значение строки другого поля для определения себя.

Field 1: Name Field2: Position 

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

Filemaker только поднимает на первое значение заявления, если в этом примере, «Боб» и «Сьюзен». Все остальные остаются пустыми. Как так:

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

Как получить Filemaker, чтобы просмотреть все возможности?

ответ

0

После долгих возиться, Большой Босс и я поняли это. Кажется немного излишним:

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") - так будет только когда-либо возвращает истину, когда Поле1 = «Боб»;
  2. Вы не можете вставлять две инструкции If() вместе. Хотя вы могли гнездо их, вы действительно должны использовать случай() функции здесь, говорят:

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

Более серьезной проблемой является то, что вы закодировав данные что почти наверняка изменится в какой-то момент на формулу расчета.

Что вы должно есть связанная таблица персонала с полями для StaffID, Name и Position. Затем, когда вы заполняете Field1 в этой таблице назначенным штатным персоналом сотрудника, соответствующая позиция будет взята из записи этого сотрудника в таблице сотрудников через связь .

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

Тогда вы будете строить отношения между Field1 в текущей таблице и поле «Name» в пробном изображении. Оттуда отношения выдадут название отдела, так что вам не понадобится, если, иначе, или случай. В противном случае вы обнаружите, что обновляете этот скрипт каждый раз, когда есть изменения в вашем списке или их ролях в вашей компании. Эти отношения также позволят вам легко добавлять новые отделы без необходимости обновления этих вычислений.