[AccessD] Median Number

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
>





More information about the AccessD mailing list