gpt4 book ai didi

ms-access - 如何使用链接表从Access执行存储过程

转载 作者:行者123 更新时间:2023-12-04 18:16:12 26 4
gpt4 key购买 nike

我有一个Access 2003数据库,该数据库通过ODBC连接到SQL Server 2008。 SQL Server中的表在Access中作为链接表连接。我试图通过ADO代码执行的SQL Server上有一个存储过程。我的问题是Access似乎找不到该过程。我必须在Access中做什么才能执行此存储过程?一些事实...

有问题的存储过程接受一个参数,该参数是整数。该存储过程返回一个记录集,我希望将其用作ListBox的数据源。

这是我在Access中的ADO代码...

Private Sub LoadUserCaseList(userID As Integer)

Dim cmd As ADODB.Command

Set cmd = New ADODB.Command
cmd.ActiveConnection = CurrentProject.Connection
cmd.CommandType = adCmdStoredProc
cmd.CommandText = "uspGetUserCaseSummaryList"

Dim par As New ADODB.Parameter
Set par = cmd.CreateParameter("userID", adInteger)
cmd.Parameters.Append par
cmd.Parameters("userID") = userID

Dim rs As ADODB.Recordset
Set rs = cmd.Execute()
lstUserCases.Recordset = rs

End Sub

我得到的错误是“Microsoft Jet数据库引擎找不到输入表或查询“uspGetUserCaseSummaryList”。

最佳答案

CurrentProject.Connection是与Access数据库的连接。您可以通过在“立即”窗口中执行以下操作来验证:

Debug.Print CurrentProject.Connection

您需要使用指向您的SQL Server实例的连接字符串创建一个新的ADODB.Connection对象。让您的ADODB.Command对象使用该连接。

编辑:可以消除ADODB.Command对象,并使用连接的Execute方法从存储过程中返回记录。本示例使用一个存储过程,该过程需要3个参数。
Private Sub GetCenterCodes()
Dim cnn As ADODB.Connection
Dim rs As ADODB.Recordset

Set cnn = New ADODB.Connection
cnn.ConnectionString = "Provider=SQLOLEDB;Data Source=VM2003\sqlexpress;" _
& "User ID=foo;Password=bar;Initial Catalog=Inventory"
cnn.Open
Set rs = New ADODB.Recordset
Set rs = cnn.Execute("EXEC uspGetCenterCodes 14, 14, 501")
Debug.Print rs(0), rs(1), rs(2)
rs.Close
Set rs = Nothing
cnn.Close
Set cnn = Nothing
End Sub

您可以在 ConnectionStrings.com上找到符合您需求的连接字符串示例

关于ms-access - 如何使用链接表从Access执行存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3049354/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com