Option Explicit

'パラメータ
Dim Args

'パラメータ取得
Set Args = Wscript.Arguments

If Args.Count = 1 Then
	'// ↓ 2013.11.28 課題番号XXX: labelprint.accdb以外のファイルのテーブルの変更を出来るようにする ono
	'Call subMain(Args(0))
	Select Case Args(0)
		Case 0
			Call subMain(Args(0),"labelprint.accdb","mscript.sql")
			Call subMain(Args(0),"labelprint01.accdb","mscript01.sql")
			Call subMain(Args(0),"labelprint02.accdb","mscript02.sql")
			Call subMain(Args(0),"labelprint03.accdb","mscript03.sql")
		Case 1
			Call subMain(Args(0),"","sscript.sql")
	End Select
	'// ↑ 2013.11.28 課題番号XXX: labelprint.accdb以外のファイルのテーブルの変更を出来るようにする ono
End If

Set Args = Nothing

'-------------------------------------------------------------------------
'// ↓ 2013.11.28 課題番号XXX: labelprint.accdb以外のファイルのテーブルの変更を出来るようにする ono
'Sub subMain(SqlType)
Sub subMain(SqlType,dbFile,sqlFile)
'// ↑ 2013.11.28 課題番号XXX: labelprint.accdb以外のファイルのテーブルの変更を出来るようにする ono
	Dim objFileSys
	Dim objFile
	Dim FileName
	Dim FilePath
	'// ↓2013.12.26 SqlServer未インストール端末でSqlServer用のスクリプトを実行できるように対応
	Dim Conn
	DIm Conn_String
	Dim Record
	Dim Buff
	'// ↑2013.12.26 SqlServer未インストール端末でSqlServer用のスクリプトを実行できるように対応
	'// ↓2014.08.28
	Dim retCt
	'// ↑2014.08.28
	On Error Resume Next

	Err.Clear
	FilePath = Replace(WScript.ScriptFullName,WScript.ScriptName,"")
	Set objFileSys = CreateObject("Scripting.FileSystemObject")

	Select Case SqlType
		Case 0  'mdbの場合
			Wscript.Echo "mdb"

			'// ↓ 2013.11.28 課題番号XXX: labelprint.accdb以外のファイルのテーブルの変更を出来るようにする ono
			'FileName = objFileSys.BuildPath(FilePath,"mscript.sql")
			FileName = objFileSys.BuildPath(FilePath,sqlFile)
			'// ↑ 2013.11.28 課題番号XXX: labelprint.accdb以外のファイルのテーブルの変更を出来るようにする ono
			Set objFile = objFileSys.OpenTextFile(FileName,1)
			If Err.Number=0 Then
				'// ↓2013.12.26 SqlServer未インストール端末でSqlServer用のスクリプトを実行できるように対応
				'Dim Conn
				'DIm Conn_String
				'// ↑2013.12.26 SqlServer未インストール端末でSqlServer用のスクリプトを実行できるように対応
				'ADOコネクション作成
				Set Conn = CreateObject("ADODB.Connection")
				'コネクションストリング
				'// ↓ 2013.11.28 課題番号XXX: labelprint.accdb以外のファイルのテーブルの変更を出来るようにする ono
				'Conn_String = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & FilePath & "labelprint.accdb" & ";Jet OLEDB:Database Password=naoki"
				Conn_String = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & FilePath & dbFile & ";Jet OLEDB:Database Password=naoki"
				'// ↑ 2013.11.28 課題番号XXX: labelprint.accdb以外のファイルのテーブルの変更を出来るようにする ono
				WScript.echo "Connecting " & Conn_String

				'MDBを開く
				Conn.Open Conn_String
				
				'// ↓2013.12.26 SqlServer未インストール端末でSqlServer用のスクリプトを実行できるように対応
				'Dim Record
				'Dim Buff
				'// ↑2013.12.26 SqlServer未インストール端末でSqlServer用のスクリプトを実行できるように対応
				
				Buff = ""
				Do Until objFile.AtEndOfStream
					Record = objFile.ReadLine
					If UCase(Trim(Record)) = "GO" Then
						'表示しつつExecute
						WScript.echo "Execute " & Buff
						'// ↓2014.08.28
						'Conn.Execute Buff
						Conn.Execute Buff, retCt
						If Err.Number = 0 Then
							If retCt >= 0 then
								WScript.echo "-> " & retCt & " record processing"
							Else
								WScript.echo "-> The command was completed."
							End If
						Else
							WScript.echo "-> Command failure"
						End If
						Err.Clear
						WScript.echo ""
						'// ↑2014.08.28
						Buff = ""
					ElseIf UCase(Trim(Record)) = "QUIT" Then
						Exit Do
					Else
						'Buff = Buff & " " & Record
						Buff = Buff & vbCrlf & Record
					End IF
				Loop
				objFile.Close
				Set objFile = Nothing

				'ADOクローズ
				Conn.Close

				Set Conn = Nothing

			End If

		Case 1  'SQL Serverの場合
			Wscript.Echo "SQL Server"

			FileName = objFileSys.BuildPath(FilePath,"Configuration\Settings.xml")
			Set objFile = objFileSys.OpenTextFile(FileName,1)
			If Err.Number=0 Then
				Dim SqlServerDataSource
				Dim SqlServerCatalog
				Dim SqlServerUserID
				Dim SqlServerPass
				'Settings.xmlの設定値を取得
				Do Until objFile.AtEndOfStream
					Dim buf
					Dim key
					buf = objFile.ReadLine
					
					key = "SqlServerDataSource"
					if Instr(buf," <" & key & ">") <> 0 then
						buf = Replace(buf,"<" & key & ">","")
						buf = Replace(buf,"</" & key & ">","")
						SqlServerDataSource = Trim(buf)
					End If

					key = "SqlServerCatalog"
					if Instr(buf,"<" & key & ">") <> 0 then
						buf = Replace(buf,"<" & key & ">","")
						buf = Replace(buf,"</" & key & ">","")
						SqlServerCatalog = Trim(buf)
					End If

					key = "SqlServerUserID"
					if Instr(buf,"<" & key & ">") <> 0 then
						buf = Replace(buf,"<" & key & ">","")
						buf = Replace(buf,"</" & key & ">","")
						SqlServerUserID = Trim(buf)
					End If

					key = "SqlServerPass"
					if Instr(buf,"<" & key & ">") <> 0 then
						buf = Replace(buf,"<" & key & ">","")
						buf = Replace(buf,"</" & key & ">","")
						SqlServerPass = Trim(buf)
					End If

				Loop
				objFile.Close
				Set objFile = Nothing

				'// ↓ 2013.11.28 課題番号XXX: labelprint.accdb以外のファイルのテーブルの変更を出来るようにする ono
				'FileName = objFileSys.BuildPath(FilePath,"sscript.sql")
				FileName = objFileSys.BuildPath(FilePath,sqlFile)
				'// ↑ 2013.11.28 課題番号XXX: labelprint.accdb以外のファイルのテーブルの変更を出来るようにする ono
				'// ↓2013.12.26 SqlServer未インストール端末でSqlServer用のスクリプトを実行できるように対応
				'Dim ShellBuf
				'ShellBuf = "osql -S " & SqlServerDataSource & " -d " & SqlServerCatalog & " -U " & SqlServerUserID & " -P " & SqlServerPass
				'ShellBuf = ShellBuf & " -i " & FileName

				'WScript.echo ShellBuf

				''Sql実行
				'Dim WshShell
				'dim ret
				'Set WshShell = WScript.CreateObject("WScript.Shell")
				'ret = WshShell.Run(ShellBuf, 1, true)
				'WScript.echo ret

				'Set WshShell = Nothing
				Set objFile = objFileSys.OpenTextFile(FileName,1)
				If Err.Number=0 Then
					'ADOコネクション作成
					Set Conn = CreateObject("ADODB.Connection")
					'コネクションストリング
					Conn_String = "Driver={SQL Server}; server=" & SqlServerDataSource & "; database=" & SqlServerCatalog & "; uid=" & SqlServerUserID & "; pwd=" & SqlServerPass & ";"
					WScript.echo "Connecting " & Conn_String

					'MDBを開く
					Conn.Open Conn_String
					
					Buff = ""
					Do Until objFile.AtEndOfStream
						Record = objFile.ReadLine
						If UCase(Trim(Record)) = "GO" Then
							'表示しつつExecute
							WScript.echo "Execute " & Buff
							'// ↓2014.08.28
							'Conn.Execute Buff
							Conn.Execute Buff, retCt
							If Err.Number = 0 Then
								If retCt >= 0 then
									WScript.echo "-> " & retCt & " record processing"
								Else
									WScript.echo "-> The command was completed."
								End If
							Else
								WScript.echo "-> Command failure"
							End If
							Err.Clear
							WScript.echo ""
							'// ↑2014.08.28
							Buff = ""
						ElseIf UCase(Trim(Record)) = "QUIT" Then
							Exit Do
						Else
							'Buff = Buff & " " & Record
							Buff = Buff & vbCrlf & Record
						End IF
					Loop
					objFile.Close
					Set objFile = Nothing

					'ADOクローズ
					Conn.Close

					Set Conn = Nothing

				End If
				'// ↑2013.12.26 SqlServer未インストール端末でSqlServer用のスクリプトを実行できるように対応

			End If

	End Select

	Set objFileSys = Nothing

End Sub
