无法在Access模块​​中执行SQL Server存储过程

时间:2018-07-06 07:35:29

标签: sql-server access-vba

在Access中,我创建了一个包含Text1,List1和Command1元素的表单。
命令按钮的代码为:

    Private Sub Command1_Click()

    Dim con As ADODB.Connection
    Dim cmd As ADODB.Command
    Dim rs As ADODB.Recordset
    Set con = New ADODB.Connection
    Set cmd = New ADODB.Command
    Set rs = New ADODB.Recordset
    con.Open "Provider=sqloledb;Data Source=192.168.100.41,1433;Network Library=DBMSSOCN;Initial Catalog=xxx;User ID=xxx;Password=xxx;"
    cmd.ActiveConnection = con
    cmd.CommandTimeout = 0
    cmd.Parameters.Append cmd.CreateParameter("@keyword", adVarChar, adParamInput, 100, Trim(Text1.Value))
    cmd.CommandText = "stored_procedure"
    Set rs = cmd.Execute(, , adCmdStoredProc)
    If (rs.RecordCount <> 0) Then
    Do While Not rs.EOF
    Me.List1.AddItem (rs.Fields(0).Value & " | " & rs.Fields(1).Value & " | " & rs.Fields(2).Value)
    rs.MoveNext
    Loop
    End If
    rs.Close
    Set rs = Nothing
    Set cmd = Nothing
    con.Close
    Set con = Nothing
    End Sub

当我尝试运行代码时,什么都没有发生。没错好像按钮是空的。
SP在SQL Server中正常工作。
相同的按钮代码,可以在Excel表单中正常工作。
如果我将SP部分替换为[rs.open“在关键字类似..的表中选择*”,则工作正常
谢谢

1 个答案:

答案 0 :(得分:0)

您可能需要使用客户端游标,我将debug.print rs.RecordCount来检查其认为是返回的记录。

conn.cursorlocation=aduseclient