我有我要使用的这段代码,但是当查询调用它时,它将返回一个空白的数据列。因此,我正在尝试在每列中添加数字值,并每月使用数学公式添加一个新列。
Option Explicit
Public Function FCalcMnthALLTDISTRIB()
Dim OCT As String
Dim NOV As String
Dim DEC As String
Dim JAN As String
Dim FEB As String
Dim MAR As String
Dim APR As String
Dim MAY As String
Dim JUN As String
Dim JUL As String
Dim AUG As String
Dim SEP As String
OCT = Nz([OCT], 0)
NOV = Nz([OCT], 0) + Nz([NOV], 0)
DEC = Nz([OCT], 0) + Nz([NOV], 0) + Nz([DEC], 0)
JAN = Nz([OCT], 0) + Nz([NOV], 0) + Nz([DEC], 0) + Nz([JAN], 0)
FEB = Nz([OCT], 0) + Nz([NOV], 0) + Nz([DEC], 0) + Nz([JAN], 0) + Nz([FEB], 0)
MAR = Nz([OCT], 0) + Nz([NOV], 0) + Nz([DEC], 0) + Nz([JAN], 0) + Nz([FEB], 0) + Nz([MAR], 0)
APR = Nz([OCT], 0) + Nz([NOV], 0) + Nz([DEC], 0) + Nz([JAN], 0) + Nz([FEB], 0) + Nz([MAR], 0) + Nz([APR], 0)
MAY = Nz([OCT], 0) + Nz([NOV], 0) + Nz([DEC], 0) + Nz([JAN], 0) + Nz([FEB], 0) + Nz([MAR], 0) + Nz([APR], 0) + Nz([MAY], 0)
JUN = Nz([OCT], 0) + Nz([NOV], 0) + Nz([DEC], 0) + Nz([JAN], 0) + Nz([FEB], 0) + Nz([MAR], 0) + Nz([APR], 0) + Nz([MAY], 0) + Nz([JUN], 0)
JUL = Nz([OCT], 0) + Nz([NOV], 0) + Nz([DEC], 0) + Nz([JAN], 0) + Nz([FEB], 0) + Nz([MAR], 0) + Nz([APR], 0) + Nz([MAY], 0) + Nz([JUN], 0) + Nz([JUL], 0)
AUG = Nz([OCT], 0) + Nz([NOV], 0) + Nz([DEC], 0) + Nz([JAN], 0) + Nz([FEB], 0) + Nz([MAR], 0) + Nz([APR], 0) + Nz([MAY], 0) + Nz([JUN], 0) + Nz([JUL], 0) + Nz([AUG], 0)
SEP = Nz([OCT], 0) + Nz([NOV], 0) + Nz([DEC], 0) + Nz([JAN], 0) + Nz([FEB], 0) + Nz([MAR], 0) + Nz([APR], 0) + Nz([MAY], 0) + Nz([JUN], 0) + Nz([JUL], 0) + Nz([AUG], 0) + Nz([SEP], 0)
If MonthName(Month(Date), False) = "October" Then
FCalcMnthALLTDISTRIB = OCT
ElseIf MonthName(Month(Date), False) = "November" Then
FCalcMnthALLTDISTRIB = NOV
ElseIf MonthName(Month(Date), False) = "December" Then
FCalcMnthALLTDISTRIB = DEC
ElseIf MonthName(Month(Date), False) = "January" Then
FCalcMnthALLTDISTRIB = JAN
ElseIf MonthName(Month(Date), False) = "February" Then
FCalcMnthALLTDISTRIB = FEB
ElseIf MonthName(Month(Date), False) = "March" Then
FCalcMnthALLTDISTRIB = MAR
ElseIf MonthName(Month(Date), False) = "April" Then
FCalcMnthALLTDISTRIB = APR
ElseIf MonthName(Month(Date), False) = "May" Then
FCalcMnthALLTDISTRIB = MAY
ElseIf MonthName(Month(Date), False) = "June" Then
FCalcMnthALLTDISTRIB = JUN
ElseIf MonthName(Month(Date), False) = "July" Then
FCalcMnthALLTDISTRIB = JUL
ElseIf MonthName(Month(Date), False) = "August" Then
FCalcMnthALLTDISTRIB = AUG
ElseIf MonthName(Month(Date), False) = "September" Then
FCalcMnthALLTDISTRIB = SEP
End If
End Function
我正在查询中的表达式中调用此函数,并在查询中创建自己的字段。因此,在查询设计视图的空白字段中,我放入了[[OB_PLAN:FCalcMnthALLTDISTRIB()。然后在“分组依据”中选择SUM。不知道我要去哪里错了。
Public Function FCalcMnthALLTDISTRIB(intID As Integer) As Long
Dim intOCT As Integer
Dim intNOV As Integer
Dim intDEC As Integer
Dim intJAN As Integer
Dim intFEB As Integer
Dim intMAR As Integer
Dim intAPR As Integer
Dim intMAY As Integer
Dim intJUN As Integer
Dim intJUL As Integer
Dim intAUG As Integer
Dim intSEP As Integer
Dim rs As DAO.Recordset
Set rs = CurrentDb.OpenRecordset("SELECT * FROM tablename WHERE ID=" & intID)
With rs
intOCT = Nz(!OCT, 0)
intNOV = Nz(!OCT, 0) + Nz(!NOV, 0)
intDEC = Nz(!OCT, 0) + Nz(!NOV, 0) + Nz(!DEC, 0)
intJAN = Nz(!OCT, 0) + Nz(!NOV, 0) + Nz(!DEC, 0) + Nz(!JAN, 0)
intFEB = Nz(!OCT, 0) + Nz(!NOV, 0) + Nz(!DEC, 0) + Nz(!JAN, 0) + Nz(!FEB, 0)
intMAR = Nz(!OCT, 0) + Nz(!NOV, 0) + Nz(!DEC, 0) + Nz(!JAN, 0) + Nz(!FEB, 0) + Nz(!MAR, 0)
intAPR = Nz(!OCT, 0) + Nz(!NOV, 0) + Nz(!DEC, 0) + Nz(!JAN, 0) + Nz(!FEB, 0) + Nz(!MAR, 0) + Nz(!APR, 0)
intMAY = Nz(!OCT, 0) + Nz(!NOV, 0) + Nz(!DEC, 0) + Nz(!JAN, 0) + Nz(!FEB, 0) + Nz(!MAR, 0) + Nz(!APR, 0) + Nz(!MAY, 0)
intJUN = Nz(!OCT, 0) + Nz(!NOV, 0) + Nz(!DEC, 0) + Nz(!JAN, 0) + Nz(!FEB, 0) + Nz(!MAR, 0) + Nz(!APR, 0) + Nz(!MAY, 0) + Nz(!JUN, 0)
intJUL = Nz(!OCT, 0) + Nz(!NOV, 0) + Nz(!DEC, 0) + Nz(!JAN, 0) + Nz(!FEB, 0) + Nz(!MAR, 0) + Nz(!APR, 0) + Nz(!MAY, 0) + Nz(!JUN, 0) + Nz(!JUL, 0)
intAUG = Nz(!OCT, 0) + Nz(!NOV, 0) + Nz(!DEC, 0) + Nz(!JAN, 0) + Nz(!FEB, 0) + Nz(!MAR, 0) + Nz(!APR, 0) + Nz(!MAY, 0) + Nz(!JUN, 0) + Nz(!JUL, 0) + Nz(!AUG, 0)
intSEP = Nz(!OCT, 0) + Nz(!NOV, 0) + Nz(!DEC, 0) + Nz(!JAN, 0) + Nz(!FEB, 0) + Nz(!MAR, 0) + Nz(!APR, 0) + Nz(!MAY, 0) + Nz(!JUN, 0) + Nz(!JUL, 0) + Nz(!AUG, 0) + Nz(!SEP, 0)
End With
Select Case MonthName(Month(Date))
Case "October"
FCalcMnthALLTDISTRIB = intOCT
Case "November"
FCalcMnthALLTDISTRIB = intNOV
Case "December"
FCalcMnthALLTDISTRIB = intDEC
Case "January"
FCalcMnthALLTDISTRIB = intJAN
Case "February"
FCalcMnthALLTDISTRIB = intFEB
Case "March"
FCalcMnthALLTDISTRIB = intMAR
Case "April"
FCalcMnthALLTDISTRIB = intAPR
Case "May"
FCalcMnthALLTDISTRIB = intMAY
Case "June"
FCalcMnthALLTDISTRIB = intJUN
Case "July"
FCalcMnthALLTDISTRIB = intJUL
Case "August"
FCalcMnthALLTDISTRIB = intAUG
Case "September"
FCalcMnthALLTDISTRIB = intSEP
End Select
End Function
在查询中调用函数,如:SELECT tablename.*, FCalcMnthALLTDISTRIB([ID]) AS OB_PLAN FROM tablename;