オブジェクト変数の取得、ブロック変数が設定されていないVBAを使用してSQLServerストアドプロシージャをプルしようとするとエラーが発生します

背教者

VBAを使用してSQLServerからストアドプロシージャをプルしようとしています。サーバーから基本的なSQLコードを取得できますが、ストアドプロシージャで複雑なコードを使用しようとすると、エラー91:オブジェクト変数またはブロック変数が設定されていません。これを正しく実行するために何を設定する必要があるかを判断できませんでした。

パラメーターなしで実行され、パラメーターのコードがリストされていないストアード・プロシージャー。このフォーラムの他のトピックのパラメータコードを試しましたが、変更はありません

cmd行を削除し、SQLコード(SELECT * FROM Table)に対してのみ実行すると機能しました

Sub ConnectSQL()
    Dim conn As ADODB.Connection
    Dim rs As ADODB.Recordset
    Dim cmd As ADODB.Command
    Dim sConnString As String
'Create Connection String
    sConnString = "Provider=SQLOLEDB;Data Source=ServerName;" & _
        "Initial Catalog=DatabaseName;" & _
        "User ID=ID;" & _
        "Password=Password;" & _
        "Integrated Security=SSPI;"
'Create Connection and Recordset Objects
    Set conn = New ADODB.Connection
    Set rs = New ADODB.Recordset
'Open Connection and Execute
    conn.Open sConnString
    cmd.ActiveConnection = conn
    cmd.CommandType = adCmdStoredProc
    cmd.CommandText = "Paint558Ranking"
    Set rs = cmd.Execute
'Check If Data
    If Not rs.EOF Then
'Transfer Result
        Sheets("Sheet1").Range("A1").CopyFromRecordset rs
'Close record
        rs.Close
    Else
        MsgBox "Error: No Records Returned.", vbCritical
    End If
'Clean Up
    If CBool(conn.State And adStateOpen) Then conn.Close
    Set conn = Nothing
    Set rs = Nothing
End Sub
マシュー・ギンドン

「オブジェクト[またはブロックあり]変数が設定されていません」は、VBAの他の言語の「null参照例外」に相当します。これnullオブジェクトの参照が、またはVBA用語であるときに、オブジェクトのメンバーにアクセスしようとすると発生するエラーですNothing

それがまさにここで起こっていることです:

cmd.ActiveConnection = conn

cmdオブジェクトが宣言されたが、初期化されていませんでした。問題を修正するためにクラスのインスタンスにSetそれをNewADODB.Command

Set cmd = New ADODB.Command
cmd.ActiveConnection = conn

エラーメッセージの「Withblock」の部分は、Withブロック構文を示しています。

Dim cmd As ADODB.Command
With cmd ''<< error 91 here
    '...
End With

ローカル変数を宣言しなくWith Newても、オブジェクト参照をWithブロックに保持させるために使用できます。

With New ADODB.Command
    '...
End With

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ