访问:根据多个字段的字母等级计算加权数字等级

Access: Calculating weighted numeric grades from letter grades for multiple fields

当我第一次测试显示每棵树的数字等级的查询时,这会导致每棵树的三重记录并且这些不是正确的值。

我想我会逐步执行该过程并 运行 使用切换功能的查询,该功能为每个标准的每棵树提供正确的数字等级(是的 - 这是基于类似的 post 从字母等级计算数字等级)

我用过:

HealthNum: Switch([Health]="A",1,[Health]="B",.75...,True,"Missing a grade")

但是,我正在努力 运行 一个查询来计算每个标准的权重和最终权重。 我尝试了每个树标准:HealthWtd: [HealthNum]*[Criteria_wt]; 其中标准字段设置为 [Criteria]="Health"

当我设置 [Criteria]="Health" 并将 [Criteria]="Structure" 放入 OR 位置时,我最终为每棵树得到两条记录。一条记录健康权重正确,结构权重错误,而另一条记录健康权重错误,结构权重正确。

一些注意事项:评分标准和权重可能会不时更改,因此我宁愿使用关系而不是切换功能。我的老板不喜欢使用过多的嵌套。

我觉得这应该是一件容易的事,我一辈子也想不通。

使用当前 table 结构,在查询表达式中硬编码权重因子或使用 DLookup() 从 table 中提取正确的权重因子。也可以使用 DLookup() 进行缩放。

健康示例:
DLookup("Weight", "Weighted", "Criteria='Health'") * DLookup("Number", "Scale", "Letter='" & [Health] & "'")

树 table 未规范化。如果是,可以加入 Scale 和 Weight tables 以正确关联记录并计算重量。然后 CROSSTAB 查询可以产生水平输出。

规范化 table 可以加入其他 tables:

+---------+-----------+-------+
| TreeNum | Criteria  | Grade |
+---------+-----------+-------+
| 10      | Health    | A     |
+---------+-----------+-------+
| 10      | Structure | B     |
+---------+-----------+-------+
| 10      | Form      | C     |
+---------+-----------+-------+
| 12      | Health    | B     |
+---------+-----------+-------+
| 12      | Structure | B     |
+---------+-----------+-------+
| 12      | Form      | D     |
+---------+-----------+-------+