-1

我一直在 ms 访问中创建奖励系统,但尝试将 if 语句用于 2 个不同的参数,即一个班级的前 3 名学生获得的金额与另一个班级的前 3 名学生可能获得的金额不同。所有类的所有数据都在一张表中。

看:

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)所有排名为 1 的学生 ID 提供 1100 的奖励,但我只想形成 1 个学生 ID 以获得 1100,而其他排名第一的学生 ID 具有不同的奖励值,请提供帮助。

4

2 回答 2

0

我想你想要这样的东西:

IIF([ClassID] <> "Form 1", IIf([Rank]=1,500), IIf([Rank]=1,1100))

显然,您将不得不编辑奖励金额,因为您没有指定您提供的内容,但逻辑应该成立。

于 2013-09-06T18:50:15.093 回答
0

如果这有点复杂,您可以在 VBA 中编写一个函数(在“模块”部分的任何代码模块中),并在查询中使用它:

ExpressionName: evaluateAward(ClassID, Rank)

在函数中,您可以使用嵌套select case语句。这对于可读性可能要好得多。

于 2013-09-06T19:08:40.023 回答