0

VBA を介して MSSQL Server に接続する際に問題が発生しています。以下は、問題が発生している私のコードです。

Set con = New ADODB.Connection
Set rs = New ADODB.Recordset

con.Provider = "sqloledb"
sConnectionString = "Server=SQLServer;Database=DBName;UID=sa;Pwd=NiceTry"
con.Open sConnectionString

'Dim sh As Worksheet
Dim tempSheet As String
tempSheet = "IgnoreMe"

'See if there is already an "IgnoreMe" Sheet, create it if not. 
Dim wsSheet As Worksheet
On Error Resume Next
Set wsSheet = Sheets("IgnoreMe")
On Error GoTo 0
If Not wsSheet Is Nothing Then
    'Sheet exists, don't recreate it.
Else
    Sheets.Add.Name = tempSheet
End If
    Set sh = Worksheets("IgnoreMe")

' Clean up the sheet's contents
sh.UsedRange.Clear

' Now get the table's data
rs.Open "SELECT JobHeaderID, Job, ProofApproved, SleeveLabel, MasterLabel" & _
                     " FROM JobHeader " & _
                     " WHERE Job IN ('665511', '671259', '671259-1')", con



End Sub

これは、情報をダウンロードするための部分です。レコードセットを読み取る他のコードがあります。rs.Open私はいつも、どのAutomation Errorような問題が発生しているのかわかりません。それが何を打っているのかについてのアイデアはありますか?

DSN なしで http://webcheatsheet.com/ASP/database_connection_to_MSSQL.phpをフォローしようとしています。自動化エラー

4

1 に答える 1

0

ここで非常に簡単な例を見つけました

これがサニタイズされた私の作業コードです

Sub IterateColE()
    ' 宛先シートの内容をクリーンアップします
    Sheets("IgnoreMe").UsedRange.Clear


    '空白/空のセルに到達するまで、列 E を繰り返し処理します。
    For Each currCell In Worksheets("Main").Range("E:E").Cells()
        'おー!ヘッダー行を取得したくない
        If currCell.Row 1 Then
            If (currCell.Text "") And (currCell.Text vbNullString) Then
                'currCell でジョブの値を取得し、IgnoreMe の一致する行に配置します
                getValues currCell.Value、currCell.Row
            そうしないと
            'さて、空白のセルにヒットしたようです。処理を停止します
                出口
            終了条件
        終了条件
    次
サブ終了

'ジョブに必要な値を取得し、それらを「IgnoreMe」シートの指定された行に配置します。「=IgnoreMe!C3」のように参照できます。
Sub getValues (ジョブは文字列、destinationRow は整数)

    Dim conn As ADODB.Connection
    Dim rs As ADODB.Recordset
    Dim sConnString を文字列として

    ' 接続文字列を作成します。
    sConnString = "プロバイダー = SQLOLEDB;データ ソース = SQLServer;" & _
                  "初期カタログ=InitialTableName;" & _
                  "UID=DBUsername;Pwd=Nicetry;"

    ' Connection オブジェクトと Recordset オブジェクトを作成します。
    設定 conn = 新しい ADODB.Connection
    rs を設定 = 新しい ADODB.Recordset

    ' 接続を開いて実行します。
    conn.Open sConnString
    Set rs = conn.Execute("SELECT JobHeaderID, Job, DataProofApproved, SleevePackLabel, MasterLabel" & _
                         " FROM JobHeader " & _
                         " WHERE ジョブ ='" & ジョブ & "'")

    ' データがあることを確認します。
    rs.EOF でない場合
        '転送結果。
        Sheets("IgnoreMe").Range("A" & destinationRow).CopyFromRecordset rs
    ' レコードセットを閉じます
        rs.閉じる
    そうしないと
        MsgBox "エラー: レコードが返されませんでした。", vbCritical
    終了条件

    ' 掃除
    If CBool​​(conn.State And adStateOpen) Then conn.Close
    conn = なしに設定
    rs = 何も設定しない

サブ終了


'ワークブックを閉じるときに接続を閉じます。ロックされたデータベース テーブルが煩わしい
プライベート サブ Workbook_Deactivate()
    If Not (con Is Nothing) Then
        con.閉じる
        con = 何も設定しない
    終了条件
サブ終了
于 2013-10-15T22:17:21.113 に答える