使用IIf和or语句访问计算字段

时间:2016-05-24 20:46:39

标签: ms-access ms-access-2010

我正在开发评分数据库。我的学生写了一篇论文,在7个不同的领域给出了从6到1的分数。得分为6是最好的,1是最差的。学生必须在任何一个领域获得80%且不超过一分的4分才能通过。

编辑:我打算尝试清理它:

目前有一个表格包含以下字段:

Student_Name

Paper_Analysis(此字段的值可以是1到6,最好是6)

Paper_Purpose(此字段的值可以是1到6,最好是6)

Paper_Voice(此字段的值可以是1到6,最好是6)

Paper_Concision(此字段的值可以是1到6,最好是6)

Paper_Accuracy(此字段的值可以是1到6,最好是6)

Paper_Content(此字段的值可以是1到6,最好是6)

Paper_Reasoning(此字段的值可以是1到6,最好是6)

Paper_Score(这是添加Paper_Purpose,Paper_Voice,Paper_Concision,Paper_Accuracy,Paper_Content,Paper_Reasoning的计算字段)

Paper_Average(此字段是以[Paper_Score] / 42

计算的百分比

Paper_Pass(对于要通过的学生,他们必须在Paper Average字段中具有80%以上。在Paper_Purpose,Paper_Voice,Paper_Concision,Paper_Accuracy,Paper_Content,Paper_Reasoning字段中,它们也只允许有4个。)

Paper_Pass字段是我遇到的麻烦。我使用了IIf([Paper_Average]> 0.8," PASS"," FAIL"),但这并没有考虑到唯一的4条规则。

感谢您的欢迎。我愿意使用SQL或其他最好的方法。唯一需要注意的是我对SQL很新。

1 个答案:

答案 0 :(得分:0)

假设传递规则如下:

  

要通过,平均分必须达到80%或以上,并且只允许一个分数为4或以下。

然后你可以使用这个公式:

IIf(Paper_Average >= 0.8 AND -((Paper_Analysis <= 4) + (Paper_Purpose <= 4) + (Paper_Voice <= 4) + (Paper_Concision <= 4) + (Paper_Accuracy <= 4) + (Paper_Content <= 4) + (Paper_Reasoning <= 4)) <= 1,'PASS','FAIL') AS Paper_Pass

为什么这样做?

布尔值(可以是TrueFalse)具有True -1 和{{1}的数字表示形式} 0 。至少在Microsoft Office中(Access是其中的一部分)。我通过总结7个Paper字段中每个字段的结果为4或更少来使用它。这是前两个Paper字段的示例:

False

如果 Paper_Analysis 为4或更小,则第一个加数为-1。如果 Paper_Purpose 也是4或更小,那么第二个加数也是-1,因此结果为 -2 。如果 Paper_Purpose 是5,则第二个加数为0,结果为 -1

如果对所有7个Paper字段执行此操作并取消结果,则结果可以是 0 7 之间的任何值,测量分数为4或下面。要传递,此值必须为(Paper_Analysis <= 4) + (Paper_Purpose <= 4)