SQLの窓

2020年08月07日


VBScript : ADO : ODBC接続 : SQLExpress(SQLServer) 接続と通常処理( 更新は SQL で行う )



ドライバは、古い {SQL Server} ドライバを使用していますが、VBS では、{SQL Native Client} を使っても同じだと思います。

▼ SQLExpress(SQLServer) の 32ビット ODBC のクライアントの設定です


※ コメント部分ですが、このサンプルで SQL の更新を接続オブシェクトのメソッドで SQL 文字列を使って実行しています。

フィールドオブジェクトにセットして更新する方法もありますが、他の言語間での移植が困難になるので、このほうが良い環境はたくさんあると思います

関連する記事

SQLExpress 2005 の接続設定
VBScript : ADO : フィールドオブジェクトを使用した同一フォーマットのテーブル間のデータコピー
VBScript : ADO : 純正接続 : SQLExpress(SQLServer) 接続と通常処理

SQLExpress にインポートするデータ(MDB)


' ***********************************************************
' SQLExpress / ODBC / {SQL Server}
' ADO : 文字列更新
' FileSystemObject : CSV出力
' ***********************************************************
strDriver = "{SQL Server}"
strTarget = "reiwa"		' 別名
strDB = "lightbox"
strUser = "sa"
strPass = "passwordpassword"

' ***********************************************************
' ADO + FileSystemObject
' ***********************************************************
Set Cn = CreateObject( "ADODB.Connection" )
Set Rs = CreateObject( "ADODB.Recordset" )
Set Fso = CreateObject( "Scripting.FileSystemObject" )

' **********************************************************
' 接続文字列
' **********************************************************
ConnectionString = _
	"Provider=MSDASQL;" & _
	"Driver=" & strDriver & ";" & _
	"SERVER=" & strTarget & ";" & _
	"DATABASE=" & strDB & ";" & _
	"UID=" & strUser & ";" & _
	"PWD=" & strPass & ";"

' **********************************************************
' 接続
' クライアントカーソル(3)を使う事が推奨されます
' **********************************************************
Cn.CursorLocation = 3
on error resume next
Cn.Open ConnectionString
if Err.Number <> 0 then
	WScript.Echo Err.Description
	Wscript.Quit
end if
on error goto 0

Query = "select * from [社員マスタ]"

' **********************************************************
' レコードセット
' オブジェクト更新時はレコード単位の共有的ロック(3)を
' 使用します( デフォルトでは更新できません )
' ※ デフォルトでも SQLによる更新は可能です
' **********************************************************
'Rs.LockType = 3
on error resume next
Rs.Open Query, Cn
if Err.Number <> 0 then
	Cn.Close
	Wscript.Echo Err.Description
	Wscript.Quit
end if
on error goto 0

' **********************************************************
' 出力ファイルオープン
' **********************************************************
Set Csv = Fso.CreateTextFile( "社員マスタ.csv", True )

' **********************************************************
' タイトル出力
' **********************************************************
Buffer = ""
For i = 0 to Rs.Fields.Count - 1
	if Buffer <> "" then
		Buffer = Buffer & ","
	end if
	Buffer = Buffer & Rs.Fields(i).Name
Next
Csv.WriteLine Buffer

' **********************************************************
' データ出力
' **********************************************************
' UpdateCnt = 0
Do While not Rs.EOF
	Buffer = ""
	For i = 0 to Rs.Fields.Count - 1
		if Buffer <> "" then
			Buffer = Buffer & ","
		end if
		Buffer = Buffer & Rs.Fields(i).Value
	Next

	' 更新
'	strDay = (UpdateCnt mod 10) + 1
'	Query = "update [社員マスタ] set [生年月日] = '2005/01/0" & strDay & "'"
'	Query = Query & " where 社員コード = '" 
'	Query = Query & Rs.Fields("社員コード").Value
'	Query = Query & "'"
	Cn.Execute( Query )

	Csv.WriteLine Buffer
	Rs.MoveNext
'	UpdateCnt = UpdateCnt + 1
Loop

' **********************************************************
' ファイルクローズ
' **********************************************************
Csv.Close
' **********************************************************
' レコードセットクローズ
' **********************************************************
Rs.Close
' **********************************************************
' 接続解除
' **********************************************************
Cn.Close


▼ hanbaic.mdb よりインポートする為の バッチファイル
C:\Windows\SysWOW64\cscript.exe import.vbs
Windows10 64ビットで、Office が 32ビットの場合を想定しています

▼ hanbaic.mdb よりインポートする為の VBScript
' ***********************************************************
' hanbaic.mdb からインポート
' ***********************************************************
strMdbPath = "C:\Users\lightbox\Downloads\hanbaic_mdb\hanbaic.mdb"
strConnect = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strMdbPath & ";"

' ***********************************************************
' ADO
' ***********************************************************
Set Cn = CreateObject( "ADODB.Connection" )

' **********************************************************
' MDB 用接続文字列
' **********************************************************
ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strMdbPath & ";"

' **********************************************************
' 接続
' **********************************************************
on error resume next
Cn.Open ConnectionString
if Err.Number <> 0 then
	WScript.Echo Err.Description
	Wscript.Quit
end if
on error goto 0

' **********************************************************
' 実行
' **********************************************************
RefString = "[ODBC;Driver={SQL Server};Server=reiwa;Database=lightbox;Uid=sa;Pwd=passwordpassword]"
Query = "select * into " & RefString & ".[社員マスタ] from [社員マスタ]"

on error resume next
Cn.Execute Query
if Err.Number <> 0 then
	WScript.Echo Err.Description
	Wscript.Quit
end if
on error goto 0

' **********************************************************
' 接続解除
' **********************************************************
Cn.Close




【SQLExpressの最新記事】
posted by lightbox at 2020-08-07 14:06 | SQLExpress | このブログの読者になる | 更新情報をチェックする
container 終わり



フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

CSS ドロップシャドウの参考デモ
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり