【问题标题】:Access Calculated Field with IIf and or statement使用 IIf 和 or 语句访问计算字段
【发布时间】:2016-05-25 14:37:11
【问题描述】:

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

编辑:我将尝试清理它:

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

学生姓名

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(要通过考试,学生的论文平均成绩必须超过 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 很陌生。

【问题讨论】:

  • 欢迎来到 SO! “不超过一个 4 分”是什么意思?可以接受多个 3 和 5,但只允许一个 4?只是为了确保您想使用 SQL 来解决这个问题,对吗?然后我们需要查看所涉及的表的结构。只需编辑您的问题并添加必要的信息。
  • 已编辑原始帖子。希望我把它清理干净了。谢谢
  • 如果一个人得到 1、2 或 3 会怎样?您正在寻找 4。因此,6+6+6+6+6+3+3 = 36 的分数等于 86% 的平均值并且没有 4。
  • 我应该说你只允许一个 4 或更少。数学是问题的一部分,如果超过一个 4 或更少,就有可能得到大约 80%。
  • 在您的表格中,您已经有得分和平均字段。这两个字段最初是如何计算的,是否有更新它们的机制?您可以添加一个字段来计算

标签: ms-access ms-access-2010


【解决方案1】:

假设通过规则如下:

要通过,平均分必须在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

为什么会这样?

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

(Paper_Analysis <= 4) + (Paper_Purpose <= 4)

如果 Paper_Analysis 小于等于 4,则第一个和为 -1。如果 Paper_Purpose 也等于或小于 4,那么第二个和也为 -1,因此结果为 -2。如果 Paper_Purpose 是 5,那么第二个和将是 0,结果为 -1。

如果您对所有 7 个 Paper 字段执行此操作并否定结果,则结果可能是介于 0 和 7 之间的任何值,测量分数的数量为 4 或以下。要通过,此值必须为 &lt;= 1。

【讨论】:

  • 这太棒了!最好的部分是解释。我正在考虑使用 True/False,但不知道如何合并它。我试着给你投票,但我太新了,我的分数无法计算。谢谢。
  • 很高兴我能帮上忙!不过,您可以将此答案标记为“已接受”。这向其他人表明此答案解决了您的问题。它还为我们俩提供了声誉。如果有多个答案,您应该接受最能解决您的问题的答案。
猜你喜欢
  • 2020-10-26
  • 2021-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-09
  • 2015-02-07
  • 1970-01-01
  • 2017-12-16
相关资源
最近更新 更多