我一直在以ms访问制作奖励系统,但试图将if语句用于2个不同的参数,即在一个班级中,前三名学生获得的数量与另一个班级的前三名学生可能得到的金额不同。所有类的所有数据都在一个表中。
请参阅:
Student ID Class ID Average Rank Awards
1111 Form4 77.79166667 2
1189 Form4 105 1
1222 Form4 73.41666667 3
1234 Form4 69.95833333 4
1235 Form 3 77.16666667 3
1236 Form 3 72.875 4
1258 Form 3 82.54166667 1
1333 Form 3 77.25 2
1367 Form 2 56.54545455 4
1445 Form 2 75.66666667 2
1447 Form 2 75.72727273 1
1465 Form 2 74.18181818 3
1523 Form 1 76.18181818 3
1542 Form 1 75.51515152 4
1552 Form 1 79.03030303 2
1555 Form 1 79.63636364 1
在创建查询的奖励列中,我使用的构建公式即IIf([Rank]=1,1100)
为所有学生ID排名1,奖励为1100,但我只希望表单1学生ID获得1100而其他人排名第一,不同奖励值请协助。
答案 0 :(得分:0)
我想你想要这样的东西:
IIF([ClassID] <> "Form 1", IIf([Rank]=1,500), IIf([Rank]=1,1100))
显然,你必须编辑奖励金额,因为你没有指明你给的是什么,但逻辑应该成立。
答案 1 :(得分:0)
如果这有点复杂,你可以在VBA中编写一个函数(在'modules'部分的任何代码模块中),并在查询中使用它:
ExpressionName: evaluateAward(ClassID, Rank)
在函数中,您可以使用嵌套的select case
语句。这对可读性来说可能要好得多。