首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Filemaker: If语句倍数

Filemaker: If语句倍数
EN

Stack Overflow用户
提问于 2015-11-10 20:29:46
回答 3查看 3.2K关注 0票数 2

Filemaker Pro 13,使用windows 10 comp。数据库是从Mac和Windows计算机使用的。

我有一个计算字段,它检测要定义自身的另一个字段的字符串值。

代码语言:javascript
运行
复制
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”。其他的都是空白。就像这样:

代码语言:javascript
运行
复制
Name: Bob     Position: Tech Assist
Name: Joe     Position: ___________

我怎样才能让菲尔梅克查看所有的可能性?

EN

回答 3

Stack Overflow用户

发布于 2015-11-10 21:03:35

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

  1. 测试Field1 = "Bob" or "Joe" or "Carl"的计算方法就像编写了(Field1 = "Bob") or ("Joe") or ("Carl")一样--因此只有当Field1 =“Bob”时才会返回true;
  2. 您不能像这样将两个If()指令串在一起。虽然您可以嵌套它们,但是您确实应该在这里使用Case()函数,例如: ( Field1 = "Bob“或Field1 = "Joe”或Field1 = "Carl“;”技术协助“;Field1 = "Susan”或Field1 = "Hank“或Field1 = "Alex”;"Employee“)

这里更严重的问题是,您是硬编码数据,几乎肯定会在某个时候变成一个计算公式。

您应该拥有一个相关的员工表,其中包含StaffID、姓名和职位的字段。然后,当您用指定的工作人员的Field1填充此表中的StaffID时,将通过关系从该工作人员在staff表中的记录中提取相应的位置。

票数 3
EN

Stack Overflow用户

发布于 2016-03-10 09:09:19

或者..。

代码语言:javascript
运行
复制
Case(

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

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

)
票数 1
EN

Stack Overflow用户

发布于 2017-01-19 13:40:26

一个较长期的解决办法是有一个名称和部门表。如果图像不清晰,请查看图像。

工作人员表样本

然后,您将在当前表中的Field1与示例图像中的"Name“字段之间建立关系。从那里,关系将输出部门的名称,以便您不需要如果,否则,或大小写。否则,每当您的名册或其在公司中的角色发生更改时,您都会发现自己正在更新此脚本。这种关系还允许您轻松地添加新的部门,而无需更新此计算。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33639001

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档