I'm getting an 'Unknown Jet Error' message, when I try to call this function from a query -- to find the median for a group of values - in an aggregate query. The function has worked before, so this baffles me.
Code:
Under Field in my query:
xMedian: Median("MED_TEMP","Date",[MED_TEMP]![Date],"Indicator")
SQL is:
SELECT MED_TEMP.Date, Median("MED_TEMP","Date",[MED_TEMP]![Date],"Indicator") AS xMedian INTO 1999_U5_Med_AI3004
FROM MED_TEMP
GROUP BY MED_TEMP.Date, Median("MED_TEMP","Date",[MED_TEMP]![Date],"Indicator")
ORDER BY MED_TEMP.Date;
Function is:
Function Median(tname As String, grpName As String, grpValue As Variant, fldName As String) As Double
Dim MedianDB As DAO.Database
Dim ssMedian As DAO.Recordset
Dim RCount As Integer, i As Integer, x As Double, y As Double, _
OffSet As Integer
Set MedianDB = CurrentDb()
Dim strSQL As String
strSQL = "SELECT " & tname & "." & grpName & ", " & tname & "." & fldName
strSQL = strSQL & " FROM " & tname
strSQL = strSQL & " WHERE (((" & tname & "." & grpName & ") =#" & grpValue & "#) AND ((" & tname & "." & fldName & ") IS NOT NULL))"
strSQL = strSQL & " ORDER BY " & tname & "." & fldName & ";"
'Debug.Print strSQL
Set ssMedian = MedianDB.OpenRecordset(strSQL)
ssMedian.MoveLast
RCount% = ssMedian.RecordCount
x = RCount Mod 2
If x <> 0 Then
OffSet = ((RCount + 1) / 2) - 2
For i% = 0 To OffSet
ssMedian.MovePrevious
Next i
Median = ssMedian(fldName)
Else
OffSet = (RCount / 2) - 2
For i = 0 To OffSet
ssMedian.MovePrevious
Next i
x = ssMedian(fldName)
ssMedian.MovePrevious
y = ssMedian(fldName)
Median = (x + y) / 2
End If
ssMedian.Close
MedianDB.Close
End Function