MS Access查询功能,用于根据现有数据添加列

时间:2017-04-18 11:54:34

标签: vba function ms-access

我过去依赖其他人的帖子,我希望有人可以给我一些帮助。这是我第一次制作自己的VBA功能。

我正在尝试创建一个查看一列的查询,在这种情况下是一个计算的百分比字段,并根据百分比所在的范围在新列中放置一个值。可以将其视为学校中的成绩: 80%-90%是B。

问题在于标准。我在此函数中还包含第三列,用于更改百分比范围,例如,Science类对A,B,C等具有不同的范围。我总共需要返回8个和5个成绩,因此查询中的IIF()语句似乎有点多了。相关信息包括在下面:

  1. 查询名称:Test_Percentage_Qry

  2. '级'列名:来源

  3. 列名百分比:CalcPerc

  4. '级'栏名:得分

  5. 现有功能代码:

    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想要完成的方式。

1 个答案:

答案 0 :(得分:1)

使用具有每个主题的成绩阈值的表格并加入它们。为了证明如下:

创建两个表( tblResults tblSubjects

enter image description here

创建查询(主题上两个表的内部联接)

enter image description here

为您生成以下输出以使用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

此外,可以将此SELECT查询修改为插入/更新查询以满足其他需求。