0
我有一个Access前端,在服务器上有一个名为fna的ODBC连接到Sybase后端。我可以很容易地引用Sybase数据库中的表,但在vba中我需要能够调用Sybase中的存储过程和函数。如何从MS-Access 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
这可能帮助:http://stackoverflow.com/questions/24267080/calling-stored-procedure-vba –
你熟悉的“pass-通过查询“在Access? –
我不知道传递查询是什么。 – Bryan