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

时间:2015-10-14 15:29:18

标签: vba ms-access-2010 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中为函数添加了一个输入参数并保存了它,但我似乎无法将输入值传递给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

1 个答案:

答案 0 :(得分:0)

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

php