Лучший подход VBA в доступе для медианы набора данных - PullRequest
2 голосов
/ 13 декабря 2011

Я новичок в доступе и VBA.У меня есть функция, которую я использую для вычисления медианы.Текущая функция действует как функция Домена и использует все данные для вычисления медианы, а не набора данных, который составляет остальную часть запроса / отчета.Я хотел бы знать, как изменить этот код или улучшить подход, чтобы найти медиану набора данных, использованного для создания отчета.

Option Compare Database 
Option Explicit 



Function DMedian(tName As String, fldName As String) As Single 
  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() 
  Set ssMedian = MedianDB.OpenRecordset("SELECT [" & fldName & _ 
            "] FROM [" & tName & "] WHERE [" & fldName & _ 
            "] IS NOT NULL ORDER BY [" & fldName & "];") 
  'NOTE: To include nulls when calculating the median value, omit 
  'WHERE [" & fldName & "] IS NOT NULL from the example. 
  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 
    DMedian = ssMedian(fldName) 
 Else 
     OffSet = (RCount / 2) - 2 
     For i = 0 To OffSet 
        ssMedian.MovePrevious 
     Next i 
     x = ssMedian(fldName) 
     ssMedian.MovePrevious 
     y = ssMedian(fldName) 
     DMedian = (x + y) / 2 
  End If 
  If Not ssMedian Is Nothing Then 
     ssMedian.Close 
     Set ssMedian = Nothing 
  End If 
  Set MedianDB = Nothing 
End Function 

1 Ответ

0 голосов
/ 13 декабря 2011

Если вы имеете в виду вычисление медианы по созданному вами пользовательскому отчету, просто сохраните запрос и передайте имя запроса в 'tname' вместо имени таблицы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...