带有组合字段的MS Access Calc字段

时间:2015-07-26 21:58:16

标签: ms-access field ms-access-2013

我一直试图解决这个计算字段问题大约30分钟,看起来我在表达式中有单个字段条件正确,如[points]和[contrib]但是组合([points] + [contrib] ])字段不满足将字段设置为正确的成员类型的要求,因此当添加这些字段时,它将返回一些其他成员类型作为基本类型。我可以使用between运算符和添加的字段......?我尝试过,但有一些成分错误。所以换句话说,如果你得到45分,它会将你设置为只在点数字段中命名的基础,如果你有45的贡献你在calc字段按预期设置为基本,但是如果它是50 + 50,而是它当它应该是“更好”的成员标签时设置为基本。否则这个简单的陈述应该是正确的,但计算机在添加时不会读取它。由于某种原因,它不能识别组合值,并且calc字段没有sum()函数。 关注点:(([点] + [贡献])> = 45和([点] + [贡献])< 100),“基本”,

IIf(([points] >=45 And [points]<100) Or ([Contrib] >=45 And [Contrib] <100) Or (([points]+[Contrib]) > = 45 And ([points]+[contrib] < 100),"Basic",
IIf(([points] >=100 And [points] <250) Or ([Contrib] >=100 And [Contrib] <250) Or ((([points]+[Contrib]) >=100) And (([points]+[Contrib])<250)),"Better",
IIf(([points] >=250 And [points]<500) Or ([Contrib] >=250 And [Contrib] <500) Or ((([points]+[Contrib]) >=250) And (([points]+[Contrib])<500)),"Great",
IIf(([points] >=500) Or ([Contrib] >=500) Or (([points]+[Contrib]) >=500),"Best","Non-member"))))

2 个答案:

答案 0 :(得分:2)

以下是Access 2010表中的数据示例,其中包含名为 member_type 的计算字段:

id points Contrib member_type
-- ------ ------- ----------
 1      1       1 Non-member
 2     50       1 Basic
 3    200       1 Better
 4    300       1 Great
 5    600       1 Best

如果这是你想要的计算字段,那么这是我用于 member_type 的表达式:

IIf([points]+[Contrib]>=45 And [points]+[Contrib]<100,'Basic',IIf([points]+[Contrib]>=100 And [points]+[Contrib]<250,'Better',IIf([points]+[Contrib]>=250 And [points]+[Contrib]<500,'Great',IIf([points]+[Contrib]>=500,'Best','Non-member'))))

如果我没有完全正确,那么格式化相同的表达式,以便您可以更好地了解需要更改的位置:

IIf([points]+[Contrib]>=45 And [points]+[Contrib]<100,'Basic',
IIf([points]+[Contrib]>=100 And [points]+[Contrib]<250,'Better',
IIf([points]+[Contrib]>=250 And [points]+[Contrib]<500,'Great',
IIf([points]+[Contrib]>=500,'Best','Non-member'
))))

请注意,如果 points Contrib 为空, member_type 将显示&#34;非会员&#34; < / em>的。如果这不是您想要的行为,则需要更复杂的表达式。由于计算的字段表达式无法使用Nz(),因此IIf([points] Is Null,0,[points])和/ [points]的{​​{1}}和IIf([Contrib] Is Null,0,[Contrib])的每次出现都必须替换[Contrib]之类的内容>

禁止Null用于这些字段(将必需属性设置为)并将默认值设置为零会更简单。< / p>

答案 1 :(得分:0)

如果您测试的值是&gt; =或&lt; =您对BETWEEN的限制,则BETWEEN运算符返回TRUE。

如果您正在查看50 + 50,那么该总数= 100且您在44到100之间。这将导致“基本”的答案。将([点数] + [贡献])的范围更改为([点] + [贡献])介于44和99之间