代码之家  ›  专栏  ›  技术社区  ›  Instance Hunter

如何使用在word vba中使用access vba定义的函数的access查询?

  •  3
  • Instance Hunter  · 技术社区  · 16 年前

    问题状态:

    我不再认为引用excel或查询具有参数是相关的。我认为问题可以归结为:如何使用在word vba中使用access vba定义的函数的access查询?

    我想做什么 is impossible ,如何根据 shahkalpesh's answer ?


    我在access vba中有一个函数:

    Public Function Acos(radians As Double) As Double
         Acos = WorksheetFunction.Acos(radians)
    End Function
    

    WorksheetFunction 来自引用excel(我这么做只是因为它定义了acos函数)。

    我在一个有三个参数的查询中使用这个函数。然后在word vba中运行此查询,如下所示:

    Dim command As New ADODB.command
    With command
        .ActiveConnection = connection
        .CommandText = "MyQueryName"
        .CommandType = adCmdStoredProc
        .Parameters.Append .CreateParameter( _
            "Param1", adDouble, adParamInput, , param1Value)
        .Parameters.Append .CreateParameter( _
            "Param2", adDouble, adParamInput, , param2Value)
        .Parameters.Append .CreateParameter( _
            "Param3", adDouble, adParamInput, , param3Value)
    End With
    
    Dim records As New ADODB.Recordset
    records.Open command, , adOpenKeyset, adLockOptimistic
    

    我在word vba中得到一个错误,即没有定义acos函数。

    思想?

    更新

    对于comment:yes,查询在access中工作得很好。

    另外,只需一张便条,这里是2007年的办公室。

    更新2

    我们要从访问word,因为vba程序已经在word中,但需要进行一些数据处理,而这在vba中并不实际。

    更改为创建一个excel应用程序对象,除了大大减慢查询速度之外,没有任何效果。

    更新3

    我在word和access中都提到excel。(如果有更好的方法获得acos函数,我肯定会接受的。)

    2 回复  |  直到 16 年前
        1
  •  1
  •   shahkalpesh    16 年前

    而不是使用excel来获取 ACos 试试这个

    其中x=包含将传递给的值的字段 Acos

    SELECT X, IIF(X = 1, 0, Atn(-X / Sqr(-X * X + 1)) + 2 * Atn(1))
    FROM myTable;
    

    这里是 page ,我指的是 蚁群算法 公式。

    请尝试保存上述查询。
    access还有其他功能,比如 Atn Sqr 它能帮助你得到所需要的 蚁群算法 . 因此,您不需要要求excel为您计算东西。

    注意:对于 蚁群算法 .
    例如 =ACOS(1.25) 给你 #NUM! (不是数字)

    同样,如果上述查询的参数为1.25,则返回错误。
    因此,请小心并验证输入,以确保查询不会崩溃。

        2
  •  0
  •   Instance Hunter    16 年前

    每页:

    http://bytes.com/topic/net/answers/124351-custom-function-vba-access-stored-query-called-asp-net

    我不认为我 希望 做是可能的。如果有人能提供更多关于如何使沙赫卡佩什的答案有效的信息,我会为那里的答案加分。