Finding Median in Aggregate qry - Jet error

wrek

Registered User.
Local time
Today, 13:18
Joined
Jun 14, 2001
Messages
88
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
 

Users who are viewing this thread

Back
Top Bottom