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 ответа
После большого возни, Биг Босс и я поняли это. Кажется немного избыточным:
If ( Field1 = "Bob or Field1 = "Joe" or Field1 = "Carl" ; "Tech Assist")
Есть (по крайней мере) две проблемы с вашей попыткой:
- Тест
Field1 = "Bob" or "Joe" or "Carl"
оценивается как если бы вы написали(Field1 = "Bob") or ("Joe") or ("Carl")
- так что он будет возвращать true только тогда, когда 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, имени и должности. Затем, когда вы заполните поле 1 в этой таблице с помощью идентификатора персонала назначенного сотрудника, соответствующая должность будет занесена из записи этого сотрудника в таблице персонала через связь.
С другой стороны...
Case(
Not IsEmpty( FilterValues( List( "Bob" ; "Joe" ; "Carl" ) ; Field1 ) ) ;
"Tech Assist" ;
Not IsEmpty( FilterValues( List( "Susan" ; "Hank" ; "Alex" ) ; Field1 ) ) ;
"Employee"
)
Более долгосрочное решение будет иметь таблицу имен и отделов. Смотрите изображение на случай, если оно не ясно.
Затем вы создадите связь между Field1 в вашей текущей таблице и полем "Name" в образце изображения. Оттуда, отношения выведет название отдела, так что вам не нужно, если, иначе, или дело. В противном случае вы обнаружите, что обновляете этот скрипт каждый раз, когда происходит изменение в вашем списке или их ролях в вашей компании. Отношения также позволят вам легко добавлять новые отделы без необходимости обновлять этот расчет.