2011年10月14日


OpenSchema によるテーブル名一覧の取得

■ ADO の定数を使えるように、.wsf で実行し、REFERENCE を定義しています
■ Wscript で実行してしまった場合は、CScript での実行に切り替えます
■ スクリプトと同じ場所にある 販売管理B.mdb を使用しています
■ VIEW のみの表示では、制約列を使用して読み出す情報を制限しています
table_list.wsf
<JOB>
<REFERENCE object="ADODB.Connection" />
<SCRIPT language="VBScript">

' Wscript の場合は実行しなおし
Set WshShell = CreateObject( "WScript.Shell" )
Dim str : str = WScript.FullName
str = Right( str, 11 )
str = Ucase( str )
if str <> "CSCRIPT.EXE" then
	Call WshShell.Run( _
		"cmd.exe /c cscript.exe " & _
		"""" & WScript.ScriptFullName & _
		""" & pause", _
		3 )
	WScript.Quit
end if

' スクリプトが存在するディレクトリ
Set Fso = CreateObject( "Scripting.FileSystemObject" )
strCurPath = WScript.ScriptFullName
Set obj = Fso.GetFile( strCurPath )
Set obj = obj.ParentFolder
strCurPath = obj.Path

strMDBPath = strCurPath & "\販売管理B.mdb"

' 接続
Set Cn = CreateObject("ADODB.Connection")
strConnection = _
	"Provider=Microsoft.Jet.OLEDB.4.0;" & _
	"Data Source="&strMDBPath&";"
Cn.Open strConnection

' テーブル一覧のレコードセット
Wscript.Echo adSchemaTables & vbCrLf	' 20 : REFERENCE 要素で参照可能になっています
Set Rs = Cn.OpenSchema( adSchemaTables )

' スキーマのフィールド表示
strData = ""
For i = 0 to Rs.Fields.Count - 1
	Wscript.Echo Rs.Fields( i ).Name & ""
Next
Wscript.Echo

' テーブル一覧
Do while NOT Rs.EOF
	Wscript.Echo Rs.Fields( "TABLE_NAME" ).Value & ""
	Rs.MoveNext
Loop
Wscript.Echo

' ビューのみの一覧のレコードセット
Set Rs = Cn.OpenSchema( adSchemaTables, Array( Empty, Empty, Empty, "VIEW" ) )

' テーブル一覧
Do while NOT Rs.EOF
	Wscript.Echo Rs.Fields( "TABLE_NAME" ).Value & ""
	Rs.MoveNext
Loop

Rs.Close
Cn.Close

</SCRIPT>
</JOB>

table_list.wsf の実行結果


posted by at 11:10 | Comment(0) | ADO | このブログの読者になる | 更新情報をチェックする


この記事へのコメント
コメントを書く
お名前:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
※ブログオーナーが承認したコメントのみ表示されます。