【发布时间】:2015-10-15 09:39:20
【问题描述】:
我有一个 Access 前端,它与服务器上的 Sybase 后端有一个名为 fna 的 ODBC 连接。我可以轻松引用 Sybase 数据库中的表,但在 vba 中我需要能够调用 Sybase 中的存储过程和函数。
函数名称是 CalcStats。
编辑: 在阅读了评论中的一些链接后,我得到了以下似乎可以运行的代码,但我不知道如何找到函数提供的返回值。
Dim trash As String
Dim conn As ADODB.Connection
Dim cmd1 As ADODB.Command
Dim rs1 As Recordset
Set conn = New ADODB.Connection
conn.ConnectionString = "datasource=ODBC;DSN=fna"
conn.Open
Set cmd1 = New ADODB.Command
cmd1.ActiveConnection = conn
cmd1.CommandType = adCmdStoredProc
cmd1.CommandText = "CalcStats"
cmd1.Execute
编辑 2: 终于弄明白了输出部分。感谢 A.S.H 提供链接,感谢 Gord Thompson 提供获取 ADODB 所需连接字符串的方法。
所以我现在可以创建连接,触发函数并获取返回值。但是,现在我正在处理添加输入参数的最后一部分。我已经在 sybase 中为函数添加了一个输入参数并保存了它,但我似乎无法将输入值传递给 Access 端的函数。
Dim trash As String
Dim conn As ADODB.Connection
Dim cmd1 As ADODB.Command
Set conn = New ADODB.Connection
conn.ConnectionString = "datasource=ODBC;DSN=fna"
conn.Open
Set cmd1 = New ADODB.Command
cmd1.ActiveConnection = conn
cmd1.CommandType = adCmdStoredProc
cmd1.CommandText = "CalcStats"
cmd1.Parameters.Append cmd1.CreateParameter("MeasurementClm", adInteger, adParamInput, , 3)
cmd1.Parameters.Append cmd1.CreateParameter("OutputValue1", adInteger, adParamReturnValue)
cmd1.Execute
trash = cmd1.Parameters.Item(0).Value
conn.Close
【问题讨论】:
-
您熟悉 Access 中的“传递查询”吗?
-
我不知道什么是直通查询。
标签: vba ms-access-2010 sybase