Reuben Cummings
reuben at gfconsultants.com
Fri Nov 7 08:28:30 CST 2003
Thanks to everyone responding to my median question. My mind was asleep
yesterday - I couldn't get any search to find anything.
Reuben Cummings
GFC, LLC
phone: 812.523.1017
email: reuben at gfconsultants.com
> -----Original Message-----
> From: accessd-bounces at databaseadvisors.com
> [mailto:accessd-bounces at databaseadvisors.com]On Behalf Of John R. Porter
> Sent: Friday, November 07, 2003 5:20 AM
> To: 'Access Developers discussion and problem solving'
> Subject: RE: [AccessD] Median Number
>
>
> This can also be done (faster I expect) by a SQL statement without coding
> and ADO or DAO as the case may be, though the SQL is quite complex. If you
> can get hold of it, there's an excellent article about this in
> the May 2003
> issue of 'Smart Access' magazine. You can get a trial subscription at
> http://www.pinpub.com/html/main.isx?sub=29
>
> John R. Porter
> I.T. Services
> University of Strathclyde
> Faculty of Education
> 76 Southbrae Drive
> Glasgow
> G13 1PP
> e-mail: j.r.porter at strath.ac.uk
> Tel. 0141 950 3289
>
>
> -----Original Message-----
> From: accessd-bounces at databaseadvisors.com
> [mailto:accessd-bounces at databaseadvisors.com]On Behalf Of Gustav Brock
> Sent: 07 November 2003 09:30
> To: Access Developers discussion and problem solving
> Subject: Re: [AccessD] Median Number
>
>
> Hi Reuben
>
> > Anyone have a good way to find the median value in a table of unkown
> number
> > of records?
>
> You could look up our own list at 2001-03-06:
>
> <quote>
>
> Sub GetTableMedian ()
> Dim dblMedian As Double
> dblMedian = GetTableMedian ("", "tblData", "FieldName")
> Debug.Print (dblMedian)
> End Sub
>
> Function GetTableMedian(strDatabase As String, strTable As
> String, strField
> As String) As Double
> 'strDatabase - name of the database to look in or "" for the current
> database
> 'strTable - name of the table to analyze
> 'strField - name of the field to analyze
> 'Returns: median
>
> Dim dbsTemp As Database
> Dim rstTemp As Recordset
> Dim strSQL As String
> Dim lngElements As Long
> Dim lngIndex As Long
> Dim fInterpolate As Boolean
> Dim dblMedian As Double
>
> If strDatabase = "" Then
> Set dbsTemp = CurrentDb()
> Else
> Set dbsTemp = DBEngine.Workspaces(0).OpenDatabase(strDatabase)
> End If
>
> strSQL = "SELECT DISTINCTROW [" & strField & "] FROM [" &
> strTable & "] "
> strSQL = strSQL & "WHERE ([" & strField & "] Is Not Null) "
> strSQL = strSQL & "ORDER BY [" & strField & "];"
>
> Set rstTemp = dbsTemp.OpenRecordset(strSQL)
> If Not rstTemp.EOF Then
> rstTemp.MoveLast
> lngElements = rstTemp.RecordCount
> If lngElements = 1 Then
> dblMedian = rstTemp(strField)
> Else
> lngIndex = Int((lngElements + 1) / 2)
> fInterpolate = (lngElements Mod 2 = 0)
> rstTemp.MoveFirst
> rstTemp.Move (lngIndex - 1)
> dblMedian = rstTemp(strField)
> If fInterpolate Then
> rstTemp.MoveNext
> dblMedian = (dblMedian + rstTemp(strField)) / 2
> End If
> End If
> Else
> dblMedian = 0
> End If
>
> rstTemp.Close
> dbsTemp.Close
>
> GetTableMedian = dblMedian
>
> End Function
>
> William Hindman
>
> </quote>
>
> /gustav
>
> _______________________________________________
> AccessD mailing list
> AccessD at databaseadvisors.com
> http://databaseadvisors.com/mailman/listinfo/accessd
> Website: http://www.databaseadvisors.com
>
> _______________________________________________
> AccessD mailing list
> AccessD at databaseadvisors.com
> http://databaseadvisors.com/mailman/listinfo/accessd
> Website: http://www.databaseadvisors.com
>