【问题标题】:MS Access 2007 sql functions?MS Access 2007 sql函数?
【发布时间】:2009-12-13 10:56:51
【问题描述】:

MS Access 2007 是否支持创建用户定义的 sql 函数? 如果是这样,它在菜单中的选项在哪里?

【问题讨论】:

  • 您的意思是:a) 可以在 Access SQL 中使用的用户定义函数; b) 可以使用 Access SQL定义的用户定义函数; c) 别的东西?
  • Access 数据项目支持 SQL Server 用户定义函数。是的。

标签: sql ms-access function


【解决方案1】:

如果您的意思是可以在 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)

【讨论】:

  • 有趣...你有这方面的样本数据吗?
【解决方案2】:

您可以使用 VBA 模块函数创建自定义函数。

看看Build Custom Functions for Your Access Applications

【讨论】:

【解决方案3】:

查询可以接受参数,这使得它们类似于存储过程。功能可以通过VBA实现。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-16
    • 1970-01-01
    • 1970-01-01
    • 2018-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多