访问报告TextBox在总计中给出#Type错误

时间:2018-06-10 12:38:28

标签: ms-access access-vba

我正在拔头发,因为无法弄清楚如何解决这个问题 我总结了12个文本框,构成了一个财政年度 MS -Access Report。

我在2个文本框和Totals TextBox上得到#Type错误,如果我将它们添加到1月到12月,则错误发生在Jan和Feb文本框和Total,如果我从12月到1月的总和错误发生在11月和12月的文本框和总计这样:

=[R_OthSpnd_1_Dec]+[R_OthSpnd_1_Nov]+[R_OthSpnd_1_Oct]+[R_OthSpnd_1_Sep]+[R_OthSpnd_1_Aug]+[R_OthSpnd_1_Jul]+[R_OthSpnd_1_Jun]+[R_OthSpnd_1_May]+[R_OthSpnd_1_Apr]+[R_OthSpnd_1_Mar]+[R_OthSpnd_1_Feb]+[R_OthSpnd_1_Jan]

这让我觉得它有事可做 使用TextBoxes处理函数的顺序,我检查了函数 文本框似乎从数据回到1月份的最高月份开始处理?

如果我将文本框中的函数包装在Nz函数和Totals中,它似乎没有区别?

知道我怎样才能正确地将它们送到Total?

12月到1月的总和 Totaling Dec to Jan

1月至12月的总计 Totaling Jan to Dec

VBA功能如下所示:

Function GetValue(ByRef Lookup_Value As String, ByRef Company_Name As 
                String, ByRef Mth_Value As String, ByRef Year_Value As String)

On Error GoTo Err_GetValue

Dim mydb As DAO.Database
Dim rs_1 As DAO.Recordset
Dim rs_2 As DAO.Recordset
Dim rs_3 As DAO.Recordset
Dim Get_SQL_1 As String
Dim Get_SQL_2 As String
Dim SQL_Return_Value As String
Dim fnDataReturn As String
Dim Lookup_Column_Name As String
Dim Lookup_Values As String
Dim X As Long

Set mydb = CurrentDb
Dim strTypeOfData(3)

For i = LBound(strTypeOfData) To UBound(strTypeOfData) - 1

    strTypeOfData(0) = Lookup_Value & "External"
    strTypeOfData(1) = Lookup_Value & "Internal"
    strTypeOfData(2) = Lookup_Value & "Forecast"

    Get_SQL_1 = "SELECT [SQL_Statement] FROM tblMappingsOtherSpend WHERE [Lookup] ='" & strTypeOfData(i) & "';"
    Get_SQL_2 = "SELECT [Lookup_Column] FROM tblMappingsOtherSpend WHERE [Lookup] ='" & strTypeOfData(i) & "';"
    Set rs_1 = mydb.OpenRecordset(Get_SQL_1)
    SQL_Return_Value = rs_1.Fields("SQL_Statement").Value
    SQL_Return_Value = SQL_Return_Value & Year_Value & Mth_Value & "';"

    Set rs_2 = mydb.OpenRecordset(Get_SQL_2)
    Set rs_3 = mydb.OpenRecordset(SQL_Return_Value)

    Lookup_Column_Name = rs_2.Fields("Lookup_Column").Value

    If rs_3.RecordCount = 1 Then
        fnDataReturn = CLng(rs_3.Fields(Lookup_Column_Name).Value)
        If fnDataReturn <> 0 Or fnDataReturn <> "" Then
            GetValue = CLng(fnDataReturn)
            Exit For
        End If
    End If

    GetValue = 0

    Next i

    rs_1.Close
    rs_2.Close
    rs_3.Close

    Set rs_1 = Nothing
    Set rs_2 = Nothing
    Set rs_3 = Nothing
    Set mydb = Nothing

    Exit_GetValue:

    Exit Function

    Err_GetValue:

    GetValue = 0
    Select Case Err.Number
    Case Else

        GoTo Exit_GetValue
    End Select

End Function

0 个答案:

没有答案