访问:根据多个字段的字母等级计算加权数字等级
Access: Calculating weighted numeric grades from letter grades for multiple fields
我需要根据每棵树的 3 个标准(健康、结构、形态)计算加权等级。每棵树的每个标准都有一个字母等级 (A-F)。每棵树的总体等级按标准加权。
我有一个 TREE TABLE,其中包含以下字段:树 #、健康字母等级 (A-F)、结构字母等级 (A-F) 和格式字母等级 (A-F))
我有一个 GRADING SCALE TABLE 字段:字母等级 (A-F),数字等级 (1-0)
我有一个 WEIGHTED TABLE 字段:条件(健康、结构...)和权重(.2、.6..)
我有一个从 GRADING SCALE TABLE [letter grade]
到 TREE TABLE [health letter grade]
上的每个标准的一对多关系,等等。许多树可以有相同的等级。
当我第一次测试显示每棵树的数字等级的查询时,这会导致每棵树的三重记录并且这些不是正确的值。
我想我会逐步执行该过程并 运行 使用切换功能的查询,该功能为每个标准的每棵树提供正确的数字等级(是的 - 这是基于类似的 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 |
+---------+-----------+-------+
我需要根据每棵树的 3 个标准(健康、结构、形态)计算加权等级。每棵树的每个标准都有一个字母等级 (A-F)。每棵树的总体等级按标准加权。
我有一个 TREE TABLE,其中包含以下字段:树 #、健康字母等级 (A-F)、结构字母等级 (A-F) 和格式字母等级 (A-F))
我有一个 GRADING SCALE TABLE 字段:字母等级 (A-F),数字等级 (1-0)
我有一个 WEIGHTED TABLE 字段:条件(健康、结构...)和权重(.2、.6..)
我有一个从
GRADING SCALE TABLE [letter grade]
到TREE TABLE [health letter grade]
上的每个标准的一对多关系,等等。许多树可以有相同的等级。
当我第一次测试显示每棵树的数字等级的查询时,这会导致每棵树的三重记录并且这些不是正确的值。
我想我会逐步执行该过程并 运行 使用切换功能的查询,该功能为每个标准的每棵树提供正确的数字等级(是的 - 这是基于类似的 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 |
+---------+-----------+-------+