如何从MS Access vba执行Sybase函数/存储过程?
我有一个访问前端,它有一个名为fna的ODBC连接,连接到服务器上的Sybase后端。我可以很容易地引用Sybase数据库中的表,但在vba中,我需要能够调用Sybase中的存储过程和函数 函数名为CalcStats 编辑: 在阅读了注释中的一些链接之后,我看到了下面的代码,它似乎正在运行,但我不知道如何找到函数提供的返回值如何从MS Access vba执行Sybase函数/存储过程?,vba,ms-access-2010,sybase,Vba,Ms Access 2010,Sybase,我有一个访问前端,它有一个名为fna的ODBC连接,连接到服务器上的Sybase后端。我可以很容易地引用Sybase数据库中的表,但在vba中,我需要能够调用Sybase中的存储过程和函数 函数名为CalcStats 编辑: 在阅读了注释中的一些链接之后,我看到了下面的代码,它似乎正在运行,但我不知道如何找到函数提供的返回值 Dim trash As String Dim conn As ADODB.Connection Dim cmd1 As ADODB.Command Dim rs1 As
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
所以我遇到的最后一个问题是,无论出于什么原因,如果没有输入,我可以声明一个输出参数,但是如果有输入,我必须删除输出参数声明。函数输出位于parameters.item0位置。感谢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
这可能会有帮助:您熟悉Access中的传递查询吗?我不知道传递查询是什么。