Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

MS Access 2007 sql functions?

Does MS Access 2007 support creation of user defined sql functions? if so, where is the option for it in the menu?

like image 524
Haim Bender Avatar asked Dec 13 '09 10:12

Haim Bender


1 Answers

If you mean can you use User Defined Functions (UDF) in SQL in Access, yes you can. For example, if you wanted the median value, you might write SQL in the query design window like so:

SELECT s.Month, 
       Sum(([SentTo])) AS [Sum Sent], 
       fMedian("Statistics","Month",[Month],"SentTo") AS [Median Sent]
FROM Statistics s
GROUP BY s.Month

Where fMedian refers to code in a module:

Function fMedian(SQLOrTable, GroupFieldName, GroupFieldValue, MedianFieldName)
    Dim rs As DAO.Recordset

    Set db = CurrentDb
    Set rs1 = db.OpenRecordset(SQLOrTable, dbOpenDynaset)

    If IsDate(GroupFieldValue) Then
        GroupFieldValue = "#" & GroupFieldValue & "#"
    ElseIf Not IsNumeric(GroupFieldValue) Then
        GroupFieldValue = "'" & Replace(GroupFieldValue, "'", "''") & "'"
    End If

    rs1.Filter = GroupFieldName & "=" & GroupFieldValue
    rs1.Sort = MedianFieldName

    Set rs = rs1.OpenRecordset()
    rs.Move (rs.RecordCount / 2)

    If rs.RecordCount Mod 2 = 0 Then
        varMedian1 = rs.Fields(MedianFieldName)
        rs.MoveNext
        fMedian = (varMedian1 + rs.Fields(MedianFieldName)) / 2
    Else
        fMedian = rs.Fields(MedianFieldName)
    End If

End Function

From: http://wiki.lessthandot.com/index.php/Aggregate_Median_(UDF)

like image 144
Fionnuala Avatar answered Sep 30 '22 02:09

Fionnuala