I need to get a better understanding of the recordset function. I don't understand what the code is doing
Public Function GetMedian(strMedianField As String) As Variant
Dim rs As DAO.Recordset
Dim firstVal As Double, recCount As Long
Set rs = CurrentDb.OpenRecordset("[COLOR=Red]SELECT ...[/COLOR]", dbOpenSnapshot)
recCount = rs.RecordCount
' Quickly return the median if record count is < 2
If recCount < 2 Then
Select Case recCount
Case 0
GetMedian = Null
Case 1
rs.MoveFirst
GetMedian = rs(strMedianField)
End Select
Set rs = Nothing
Exit Function
End If
rs.MoveLast
rs.MoveFirst
' Get the median if record count is > 2
If (recCount Mod 2) = 0 Then
' Median for even number of records - require a median between the two middle records
rs.Move (recCount / 2) - 1
firstVal = rs(strMedianField)
rs.MoveNext
GetMedian = (firstVal + rs(strMedianField)) / 2
Else
' Median for odd numbers - just get the middle record
rs.Move Fix(recCount / 2) - 1
GetMedian = rs(strMedianField)
End If
Set rs = Nothing
End Function
GetMedian("[COLOR=Red]Name of Field to use for Median[/COLOR]")
I've written the code to be more generic:
Code:=GetMedian(sqlStr, "[COLOR=red]Name of Field to use for Median[/COLOR]")
{-fingers crossed-}Right - that working - just need to add parameters in select statement... here we go.....
Set ssMedian = MedianDB.OpenRecordset("SELECT [" & fldname & "] " & _
"FROM [" & tName & "] " & _
"WHERE [" & fldname & "] IS NOT NULL " & _
"AND (Date_Referred BETWEEN #" & [Forms]![frmReport]![startdate] & "# AND #" & _
[Forms]![frmReport]![enddate] & "#) " & _
"ORDER BY [" & fldname & "];")
msgbox "Start date: " & [Forms]![frmReport]![startdate]
msgbox "End date: " & [Forms]![frmReport]![enddate]
msgbox "Table Name: " & tName
msgbox "Field name: " & fldName
Set rs = CurrentDb.OpenRecordset([COLOR=Red]"SELECT ..."[/COLOR], dbOpenSnapshot)
[COLOR=Red]Set ssMedian = MedianDB.OpenRecordset[/COLOR]("SELECT [" & fldname & "] " & _
"FROM [" & tName & "] " & _
"WHERE [" & fldname & "] IS NOT NULL " & _
"AND (Date_Referred BETWEEN #" & [Forms]![frmReport]![startdate] & "# AND #" & _
[Forms]![frmReport]![enddate] & "#) " & _
"ORDER BY [" & fldname & "];")
Set rs = CurrentDb.OpenRecordset("SELECT [" & fldname & "] " & _
"FROM [" & tname & "] " & _
"WHERE [" & fldname & "] IS NOT NULL " & _
"AND (Date_Referred BETWEEN #" & [Forms]![frmReport]![startdate] & "# AND #" & _
[Forms]![frmReport]![enddate] & "#) " & _
"ORDER BY [" & fldname & "];", dbOpenSnapshot)
Set rs = CurrentDb.OpenRecordset("SELECT [[COLOR=Red]FieldName[/COLOR]] " & _
"FROM [[COLOR=Red]TableName[/COLOR]] " & _
"WHERE [[COLOR=Red]FieldName[/COLOR]] IS NOT NULL " & _
"AND ([COLOR=Red]Date_Referred[/COLOR] BETWEEN #" & [Forms]![frmReport]![startdate] & "# AND #" & _
[Forms]![frmReport]![enddate] & "# " & _
"ORDER BY [[COLOR=Red]FieldName[/COLOR]];", dbOpenSnapshot)
Set rs = CurrentDb.OpenRecordset("SELECT [ReferralToTreatment] " & _
"FROM [qryEpisode] " & _
"WHERE [ReferralToTreatment] IS NOT NULL " & _
"AND (Date_Referred BETWEEN #" & [Forms]![frmReport]![startdate] & "# AND #" & _
[Forms]![frmReport]![enddate] & "# " & _
"ORDER BY [ReferralToTreatment];", dbOpenSnapshot)
Set rs = CurrentDb.OpenRecordset("SELECT [ReferralToTreatment] " & _
"FROM [qryEpisode] " & _
"WHERE [ReferralToTreatment] IS NOT NULL " & _
"AND (Date_Referred BETWEEN #" & [Forms]![frmReport]![startdate] & "# AND #" & _
[Forms]![frmReport]![enddate] & "#) " & _
"ORDER BY [ReferralToTreatment];", dbOpenSnapshot)