簡體   English   中英

在Excel中具有記錄集的VBA運行時錯誤3704

[英]VBA run time error 3704 with recordset in Excel

美好的一天。

當這段代碼命中“ While Not objMyRecordset.EOF”時,我收到運行時錯誤3704。此外,當我將鼠標懸停在“ strPSTPath = CStr(objMyRecordset(“ PSTPath”))”的“ objMyRecordset”部分時,我看到以“ objMyRecordSet(PS ... =

在SQL Server Management Studio中使用時,我的SQL查詢工作正常。 遇到問題時,該錯誤立即發生。 我一步一步地完成了代碼。 任何想法將不勝感激。 謝謝。

Sub Button3_Click()

'******
'Variables
Set objMyConn = New ADODB.Connection
Set objMyCmd = New ADODB.Command
Set objMyRecordset = New ADODB.Recordset

'Open connection
objMyConn.ConnectionString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=XXXX;Data Source=XXXX"
objMyConn.Open

'Set and execute SQL command
Set objMyCmd.ActiveConnection = objMyConn
objMyCmd.CommandText = "<Valid SQL Command removed for public code display>"
objMyCmd.CommandType = adCmdText

'Open recordset
Set objMyRecordset.Source = objMyCmd
objMyRecordset.Open objMyCmd


While Not objMyRecordset.EOF

    strPSTPath = CStr(objMyRecordset("PSTPath"))
    MsgBox strPSTPath

    objMyRecordset.MoveNext
Wend

End Sub

嘗試這個:

Sub Button3_Click()

Dim SQL As String, strPSTPath As String
Dim objMyConn, objMyRecordset

    Set objMyConn = New ADODB.Connection
    Set objMyRecordset = New ADODB.Recordset

    objMyConn.Open "Provider=SQLOLEDB.1;Integrated Security=SSPI;" & _
          "Persist Security Info=False;Initial Catalog=XXXX;Data Source=XXXX"

    SQL = "<Valid SQL Command removed for public code display>"

    objMyRecordset.Open SQL, objMyConn

    While Not objMyRecordset.EOF
        strPSTPath = CStr(objMyRecordset("PSTPath"))
        MsgBox strPSTPath
        objMyRecordset.MoveNext
    Wend

End Sub

自從我使用VBA和ADODB以來已經有一段時間了,但是我相信您不必執行記錄對象,而無需打開記錄集對象:

set objMyRecordset = objMyCmd.Execute

看一下這個鏈接

找出問題所在。 對於此特定服務器上的SQL版本,連接字符串不正確。 將連接字符串更改為:

驅動程序= {SQL Server Native Client 11.0};服務器= XXXX;數據庫= XXXX; Trusted_Connection =是;

現在一切正常。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM