【问题标题】:How can I create a shared function in ms access VBA?如何在 ms access VBA 中创建共享函数?
【发布时间】:2013-10-04 04:16:58
【问题描述】:

我有一个表单,它在表单加载时运行一些 sql,在表单上运行三个排序按钮,它们都在自己的私有函数中重复 sql。唯一的区别是排序顺序。当我需要更新 where 子句时,我必须更新 4 次。我想创建一个参数化函数,如

function getFormRecs(arg){
    sql...
    . 
    .
    .
    order by 'arg'
{

其中 arg 是从表单控件或事件传入的参数。

然后我希望表单加载和表单上的3个排序按钮调用函数getFormRecs(),同时传入arg,比如

getFormRecs('formload')
getformRecs('sorta')
getformRecs('sortb')
getformRecs('sortc')

我会根据传入的 arg 在函数顶部定义正确的排序字段。

最终的结果只是重用包含几乎相同的冗长 sql 的函数或子例程。

【问题讨论】:

    标签: ms-access vba


    【解决方案1】:

    这似乎与您的要求有关:

    Function getFormRecs(ByVal arg As String)
        getFormRecs = "sql ... " & _
                      "." & _
                      "." & _
                      "." & _
                      "order by " & arg
    End Function
    Private Sub Form_Load()
        Dim sql As String
        sql = getFormRecs("formload")
        '... Logic that uses sql
    End Sub
    

    【讨论】:

      【解决方案2】:

      我不确定你为什么需要一个函数。您可以从不包含 ORDER BY 的基本查询开始。

      SELECT id, fld2, fld3
      FROM YourTable;
      

      然后通过在新的SELECT 语句中将其作为数据源包含在其他地方重复使用相同的查询,您可以在其中添加所需的特定ORDER BY

      SELECT q.id, q.fld2, q.fld3
      FROM qryBase AS q
      ORDER BY q.fld3;
      

      【讨论】:

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