SQLServerに接続して、SQLを実行し、その結果を取得するまでのサンプルコードです。
Option Explicit Call Main() Sub Main() Dim objCon Dim query Dim objRS Dim srvName, dbName, loginName, loginPass 'データベース接続情報を定義します。' srvName = "DBサーバ名" dbName = "DB名" loginName = "DBユーザ名" loginPass = "DBパスワード" 'SQLServerへ接続します。*************************************************************************************************** On Error Resume Next Set objCon = CreateObject("ADODB.Connection") objCon.Open "Driver={SQL Server}; server=" & srvName & "; database=" & dbName & "; uid=" & loginName & "; pwd=" & loginPass & ";" 'エラー処理' If Err.Number <> 0 Then Msgbox("エラーが発生しました。 " & " エラーナンバー:" & Err.Number & " エラー詳細:" & Err.Description) Set objCon = Nothing Exit Sub End If Err.Clear On Error Goto 0 'SQLを実行してレコードセットに格納します。********************************************************************************* query = "" query = query & "SELECT " query = query & " カラム1 " query = query & " ,カラム2 " query = query & " ,カラム3 " query = query & "FROM テーブル名 " query = query & "WHERE " query = query & " カラム1 = xx" On Error Resume Next '定義したSQLを実行してレコードセットに格納します。' Set objRS = objCon.Execute(query) 'エラー処理' If Err.Number <> 0 Then Msgbox("エラーが発生しました。 " & " エラーナンバー:" & Err.Number & " エラー詳細:" & Err.Description) objCon.Close Set objRS = Nothing Set objCon = Nothing Exit Sub End If Err.Clear On Error Goto 0 'レコードセットのデータを表示します。*************************************************************************************** On Error Resume Next 'レコードセットのデータ件数が0件の場合は処理を終了します。 If objRS.EOF Then Msgbox("対象データが存在しない為、処理を終了します。") objCon.Close Set objRS = Nothing Set objCon = Nothing Exit Sub End If 'レコードセットの行数分ループします。 Do Until objRS.EOF Msgbox("カラム1の値:" & objRS("カラム1").Value & " カラム2の値:" & objRS("カラム2").Value & " カラム3の値:" & objRS("カラム3").Value) '次のレコードセットに移動します。 objRS.MoveNext Loop 'エラー処理' If Err.Number <> 0 Then Msgbox("エラーが発生しました。 " & " エラーナンバー:" & Err.Number & " エラー詳細:" & Err.Description) objCon.Close Set objRS = Nothing Set objCon = Nothing Exit Sub End If Err.Clear On Error Goto 0 '終了処理をします。。******************************************************************************************************* 'オブジェクトを破棄します。 objCon.Close Set objRS = Nothing Set objCon = Nothing End Sub
このコードではSQLServerとの接続にDSNは使用していないので、実行環境のPCやサーバにDSNが登録されていなくても動作します。
データベース情報、SQL文、ループ時の処理、エラー処理は都度適切な内容に書き換えて下さい。
当ブログ管理人が社内SEの業務でデータベース処理関連のバッチを作る際に上記コードをひな形としてよく使っています。
SELECT結果をCSVに書いたり、エラー時にメールで飛ばしたりSELECTではなく更新系のSQLを実行したりして業務を自動化しています。
参考になれば幸いです。
※SQLServer 関連記事はこちら↓
【VBScript】SQLServerに接続してSQL(UPDATE)を実行
SQLServerに接続し、UPDATE文のSQLを実行するサンプルコードです。
Option Explicit
...
【VBScript】SQLServerに接続してSQL(SELECT)を実行しCSVに出力
以前に以下のサンプルコードを紹介しましたが、
【VBScript】SQLServerに接続してSQL(SELECT...