2017-04-18 35 views
0

我以前在这里依赖其他人的帖子,我希望有人能够给我一些帮助。这是我第一次做自己的VBA功能。基于现有数据添加列的MS Access查询函数

我想创建一个查询,查看一列,在这种情况下计算的百分比字段,并根据百分比落入的范围在新列中放置一个值。想想它就像学校的成绩:80%-90%会是B.

问题出现在标准中。在这个函数中还包含了第三列,用于更改百分比范围,就像科学类对于A,B,C等有不同范围一样。我总共需要返回8 和5 等级,因此查询中的IIF()语句似乎有点多。相关的信息包含如下:

  1. 查询名称:Test_Percentage_Qry

  2. '级' 列名:源

  3. 百分比列名:CalcPerc

  4. '等级' 列名:得分

现有功能代码:

Public Function fFCRScore() As String 
If Test_Percentage_Qry.Source = "Science" Then 
    If Test_Percentage_Qry.CalcPerc = "100.00%" Then 
     fFCRScore = 10 
    ElseIf Test_Percentage_Qry.CalcPerc >= "85.00%" Then 
     fFCRScore = 10 
    ElseIf Test_Percentage_Qry.CalcPerc >= "80.00%" And Test_Percentage_Qry.CalcPerc < "85.00%" Then 
     fFCRScore = 8 
    ElseIf Test_Percentage_Qry.CalcPerc >= "75.00%" And Test_Percentage_Qry.CalcPerc < "80.00%" Then 
     fFCRScore = 6 
    ElseIf Test_Percentage_Qry.CalcPerc >= "70.00%" And Test_Percentage_Qry.CalcPerc < "75.00%" Then 
     fFCRScore = 4 
    ElseIf Test_Percentage_Qry.CalcPerc < "70.00%" Then 
     fFCRScore = 2 
    End If 
End If 

感谢您的帮助!

编辑:我要指出,我得到一个

424对象所需的运行时错误

我想这是我如何参照我的查询列,但不是100%确定的。我似乎从未想过MS Access想要完成的方式。

+0

您需要查看'recordset'对象,我相信或'dlookup'或使用每个主题的等级阈值并加入他们的表 –

回答

1

为每个主题使用具有等级阈值的表并加入它们。为了证明见下图:

创建两个表(tblResultstblSubjects

enter image description here

创建一个查询(内部连接在主体的两个表)

enter image description here

其中产生以下G输出供您使用IIF()声明:

enter image description here

使用这个例子是这样的

IIf([Result] > [AStart], "A", 
    IIf([result] > [Bstart], "B", 
     IIf([result] > [Cstart], "C", "Ungraded"))) As SubjectScore 

enter image description here

请注意图像是没有别名SubjectScore

另外,这个然后可以将查询修改为针对其他需求的插入/更新查询。