2
나는 액세스 및 VBA의 초보자입니다. 중간 값을 계산하는 데 사용하는 함수가 있습니다. 현재 함수는 도메인 함수로 작동하며 나머지 데이터 쿼리/보고서를 구성하는 대신 모든 데이터를 사용하여 중앙값을 계산합니다. 이 코드를 수정하는 방법이나 보고서를 만드는 데 사용 된 데이터 집합의 중앙값을 찾는 더 나은 방법을 알고 싶습니다.데이터 집합의 중앙값에 대한 액세스에서 가장 좋은 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
흥미로운 대답은 Matt입니다. 나는 그 각도에서 그것에 대해 한번도 생각하지 않습니다. 보고서가 기반으로하는 쿼리를 사용하려고했습니다. Dmedian ("qrySearch", "SoldPrice") 보고서 자체는 동일한 쿼리를 기반으로합니다. 이 코드 부분에서 오류가 발생합니다. Set ssMedian = MedianDB.OpenRecordset ("SELECT ["& fldName & _ "] FROM ["& tName & "] WHERE ["& fldName & _ "] NOT NULL ORDER BY [ "& fldName & "];") – user1096276
수신중인 오류 메시지는 무엇입니까 "qrysearch"라는 쿼리에 매개 변수 쿼리가없는 것을 알았습니까? –
매개 변수 쿼리라고 생각합니다. field는 LIKE를 사용하여 양식의 텍스트 상자 값을 찾습니다. 오류는 너무 적은 매개 변수입니다. – user1096276