【发布时间】:2009-12-13 10:56:51
【问题描述】:
MS Access 2007 是否支持创建用户定义的 sql 函数? 如果是这样,它在菜单中的选项在哪里?
【问题讨论】:
-
您的意思是:a) 可以在 Access SQL 中使用的用户定义函数; b) 可以使用 Access SQL定义的用户定义函数; c) 别的东西?
-
Access 数据项目支持 SQL Server 用户定义函数。是的。
MS Access 2007 是否支持创建用户定义的 sql 函数? 如果是这样,它在菜单中的选项在哪里?
【问题讨论】:
如果您的意思是可以在 Access 中的 SQL 中使用用户定义函数 (UDF),是的,您可以。例如,如果您想要中间值,您可以在查询设计窗口中编写 SQL,如下所示:
SELECT s.Month,
Sum(([SentTo])) AS [Sum Sent],
fMedian("Statistics","Month",[Month],"SentTo") AS [Median Sent]
FROM Statistics s
GROUP BY s.Month
其中 fMedian 指的是模块中的代码:
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
发件人:http://wiki.lessthandot.com/index.php/Aggregate_Median_(UDF)
【讨论】:
您可以使用 VBA 模块函数创建自定义函数。
【讨论】:
查询可以接受参数,这使得它们类似于存储过程。功能可以通过VBA实现。
【讨论】: