VBS : SQLExpress(SQLServer) 2005 接続と通常処理


  Microsoft OLE DB Provider




関連するMicrosoft ドキュメント
付録 A: プロバイダ
Microsoft OLE DB Provider for SQL Server
SQL Native Client での接続文字列キーワードの使用
Connection オブジェクトのプロパティ、メソッド、およびイベント
Recordset オブジェクトのプロパティ、メソッド、およびイベント
Field オブジェクトのプロパティ、メソッド、およびイベント


※ SQLOLEDB は、ODBC では無い、Microsoft の純正接続です

ADO では、接続文字列( プロバイダによって変わります ) が違うだけで、
接続してしまえば利用するメソッドに基本的に同じです。
但し、ドライバや更新方法によって、多少のプロパティをチューニングする必要はあります

更新や機能で重要になるのが、接続オブジェクトの CursorLocation で、これは 3( クライアント )
に設定するほうが多くの有用な機能が利用できます
( CursorLocationEnum )

また、オブジェクトを利用して更新する場合は レコードセットオブジェクトの LockType を 3 にする
事(レコードロックが最も推奨される状態) が必要です。デフォルトでは読み込みしかできません。
( LockTypeEnum )

しかし、接続オブジェクト の Execute メソッドで SQL を実行するのであれば、その限りではありません


接続環境の構築や別名に関しては、SQLExpress 2005 の接続設定 を参照して下さい。

Visual Studio とは関係無く単独でインストールする場合は、
SQLExpress 2005 のインストールから最速設定 を参照して下さい











  純正接続のソースコード ( for SQL Server )




  

' ***********************************************************
' SQLExpress 2005 / OLE DB / 純正接続
' ADO : 読み込みのみ
' FileSystemObject : CSV出力
' ***********************************************************
strTarget = "NIGHT_TCP"		' 別名
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=SQLOLEDB;" & _
	"Data Source=" & strTarget & ";" & _
	"Initial Catalog=" & strDB & ";" & _
	"User ID=" & strUser & ";" & _
	"Password=" & 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)を
' 使用します( デフォルトでは更新できません )
' **********************************************************
'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

' **********************************************************
' データ出力
' **********************************************************
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
	Csv.WriteLine Buffer
	Rs.MoveNext
Loop

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

  ODBC( ドライバ名 : SQL Server ) 接続のソースコード

  

' ***********************************************************
' SQLExpress 2005 / ODBC / {SQL Server}
' ADO : 文字列更新
' FileSystemObject : CSV出力
' ***********************************************************
strDriver = "{SQL Server}"
strTarget = "NIGHT_TCP"		' 別名
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 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 [生年月日] = '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
  

  ODBC( ドライバ名 : SQL Native Client ) 接続のソースコード

  

' ***********************************************************
' SQLExpress 2005 / ODBC / {SQL Native Client}
' ADO : オブジェクト更新
' Cn.CursorLocation = 3
' Rs.LockType = 3
' ***********************************************************
strDriver = "{SQL Native Client}"
strTarget = "NIGHT_TCP"		' 別名
strDB = "lightbox"
strUser = "sa"
strPass = "passwordpassword"

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

' **********************************************************
' 接続文字列
' **********************************************************
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 [社員マスタ]"

' **********************************************************
' レコードセット
' ODBC 接続のオブジェクト更新では、
' レコード単位の共有的ロック(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

' **********************************************************
' 更新
' **********************************************************
dt = CDate("2005/01/01")
Do While not Rs.EOF
	' 更新
	Rs.Fields("生年月日").Value = dt
	Rs.Update

	dt = dt + 1
	Rs.MoveNext
Loop

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

オブジェクトを使った更新ですが、クセがあるので SQL を作成したほうが無難です。
しかし、利用方法を良く知っておれば、同一構造のデータのコピー等は容易にできます。

新規時は、AddNew メソッドを使用します

  

' ************************************************
' 更新処理
' ************************************************
function UpdateData()

	Query = "select * from 更新テーブル"

	Rs.LockType = 3
	Rs.Open Query, Cn

	if Rs.EOF then
		Rs.AddNew
		Rs.Fields( "コード" ).Value = "0001"
	end if

	Rs.Fields( "名称" ).Value = "名称"
	Rs.Fields( "数値" ).Value = 100
	Rs.Fields( "日付" ).Value = Empty

	Rs.Update

end function
  





yahoo  google  MSDN  MSDN(us)  WinFAQ  Win Howto  tohoho  ie_DHTML  vector  wdic  辞書  天気 


[dbaccess]
Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
24/04/20 00:00:30
InfoBoard Version 1.00 : Language=Perl

1 BatchHelper COMprog CommonSpec Cprog CprogBase CprogSAMPLE CprogSTD CprogSTD2 CprogWinsock Cygwin GameScript HTML HTMLcss InstallShield InstallShieldFunc JScript JScriptSAMPLE Jsfuncs LLINK OldProg OracleGold OracleSilver PRO PRObrowser PROc PROconePOINT PROcontrol PROftpclient PROjscript PROmailer PROperl PROperlCHAT PROphp PROphpLesson PROphpLesson2 PROphpLesson3 PROphpfunction PROphpfunctionArray PROphpfunctionMisc PROphpfunctionString PROsql PROvb PROvbFunction PROvbString PROvbdbmtn PROvbonepoint PROwebapp PROwin1POINT PROwinSYSTEM PROwinYOROZU PROwindows ProjectBoard RealPHP ScriptAPP ScriptMaster VBRealtime Vsfuncs a1root access accreq adsi ajax amazon argus asp aspSample aspVarious aspdotnet aw2kinst cappvariety centura ckeyword classStyle cmaterial cmbin cmdbapp cmenum cmlang cmlistbox cmstd cmstdseed cmtxt cs daz3d db dbCommon dbaccess dnettool dos download flex2 flex3 flex4 framemtn framereq freeWorld freesoft gimp ginpro giodownload google hdml home hta htmlDom ie9svg install java javaSwing javascript jetsql jquery jsp jspTest jspVarious lightbox listasp listmsapi listmsie listmsiis listmsnt listmspatch listmsscript listmsvb listmsvc memo ms msde mysql netbeans oraPlsql oracle oracleWiper oraclehelper orafunc other panoramio pear perl personal pgdojo pgdojo_cal pgdojo_holiday pgdojo_idx pgdojo_ref pgdojo_req php phpVarious phpguide plsql postgres ps r205 realC realwebapp regex rgaki ruby rule sboard sc scprint scquest sdb sdbquest seesaa setup sh_Imagick sh_canvas sh_dotnet sh_google sh_tool sh_web shadowbox shgm shjquery shvbs shweb sjscript skadai skywalker smalltech sperl sqlq src systemdoc tcpip tegaki three toolbox twitter typeface usb useXML vb vbdb vbsfunc vbsguide vbsrc vpc wcsignup webanymind webappgen webclass webparts webtool webwsh win8 winofsql wmi work wp youtube