VBScript Oracle接続の例
' ***********************************************************
' Oracle 2 CSV
' ADO : 文字列更新
' FileSystemObject : CSV出力
' ***********************************************************
strTarget = "Oracle11gMS"
strUser = "lightbox"
strPass = "LIGHTBOX"
' ***********************************************************
' ADO + FileSystemObject
' ***********************************************************
Set Cn = CreateObject( "ADODB.Connection" )
Set Rs = CreateObject( "ADODB.Recordset" )
Set Fso = CreateObject( "Scripting.FileSystemObject" )
' **********************************************************
' 接続文字列
' **********************************************************
ConnectionString = _
"Provider=MSDASQL" & _
";DSN=" & strTarget & _
";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 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 = ""
Buffer = Buffer & Rs.Fields("社員コード").Value
Buffer = Buffer & "," & Rs.Fields("氏名").Value
' 更新
strDay = (UpdateCnt mod 10) + 1
Query = "update 社員マスタ set 生年月日 = TO_DATE('2005/01/" & 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
0 件のコメント:
コメントを投稿