【VBScript】SQLServerに接続してSQL(SELECT)を実行

Tips
スポンサーリンク

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...