如何在MS-Access vba中执行Sybase函数/存储过程



我有一个Access前端,它有一个名为fna的ODBC连接到服务器上的Sybase后端。我可以很容易地引用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中添加了一个输入参数并保存了它,但我似乎无法将输入值传递到访问端的函数中。

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

我遇到的最后一个问题是,无论出于何种原因,如果没有输入,我可以声明一个输出参数,但如果有输入,我必须删除输出参数声明。Function的输出位于parameters.item(0)位置。感谢A.S.H和Gord Thompson提供的链接和建议。下面是我最终得到的代码,现在正在工作:

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.Parameters.Refresh
cmd1.Parameters.Append cmd1.CreateParameter("InputValue1", adInteger, adParamInput, , 3)
'cmd1.Parameters.Append cmd1.CreateParameter("OutputValue3", adInteger, adParamReturnValue)
cmd1.Execute
trash = cmd1.Parameters.Item(0).Value
conn.Close

最新更新