|
Crun()
' 別名 または SQLServer のインスタンス文字列を指定します
' インスタンス文字列は、PC名\インスタンス名 ですが、
' SQLExpress2005 ならば .\SQLEXPRESS で接続できるかもしれません
' ( 別名が確実です )
' 【以下URLは別名等接続設定参考ページ】
' http://lightbox.matrix.jp/ginpro/patio.cgi?mode=view&no=228
' NIGHT_TCP は別名定義です
strCon = "NIGHT_TCP"
' ▼ SQLExpress2012 / .\sqlexpress or localhost\sqlexpress or pcname\sqlexpress
strCon = ".\sqlexpress"
' データベース
' 事前に create database 文で作成する必要があります
' 上記URLを参考に、sqlcnmd を使って作成します
strDb = "lightbox"
' ユーザ
' 上記URLの設定で、sa が有効になります
strUser = "sa"
' パスワード
' 上記URLの設定で、パスワードを設定できます
strPwd = "passwordpassword"
' 使用する ODBC ドライバです
' SQLServer 2000 より後のバージョンですと、{SQL Native Client} も利用できます
' ODBC アドミニストレータで確認して下さい
strDriver = "{SQL Server}"
' strDriver = "{SQL Native Client}"
' ▼ SQLExpress2012
' strDriver = "{SQL Server Native Client 11.0}"
' ************************************************
' 基本設定
' ************************************************
' このスクリプトが存在するディレクトリを取得
strCurDir = WScript.ScriptFullName
strCurDir = Replace( strCurDir, WScript.ScriptName, "" )
strMdbPath = strCurDir & "販売管理B.mdb"
strMessage = "対象 MDB は " & strMdbPath & "です" & vbCrLf & vbCrLf
strMessage = strMessage & "↓SQLServerの環境です" & vbCrLf
strMessage = strMessage & "SERVER : " & strCon & vbCrLf
strMessage = strMessage & "DB : " & strDb & vbCrLf
strMessage = strMessage & "USER : " & strUser & vbCrLf
strMessage = strMessage & "PASS : " & strPwd & vbCrLf & vbCrLf
strMessage = strMessage & "既にテーブルが存在する場合はメッセージが出ません" & vbCrLf
strMessage = strMessage & "それ以外ではエラーメッセージが出ますが、問題ありません"
if vbCancel = MsgBox( strMessage, vbOkCancel ) then
Wscript.Quit
end if
' ************************************************
' 処理用文字列設定
' ************************************************
' MDB の接続文字列
strConnectMdb = _
"Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & strMdbPath & ";"
strConnectSQLServer = _
" in '' [ODBC;Driver="&strDriver&";SERVER=" & _
strCon & ";Database=" & strDb & ";UID=" & strUser & ";PWD=" & strPwd & "]"
strConnectSQLServer2 = _
"Provider=MSDASQL;Driver="&strDriver&";SERVER=" & _
strCon & ";Database=" & strDb & ";UID=" & strUser & ";PWD=" & strPwd
' ************************************************
' 初期処理
' ************************************************
Set Cn = CreateObject("ADODB.Connection")
Set Cn2 = CreateObject("ADODB.Connection")
Cn.Open strConnectMdb
Cn2.Open strConnectSQLServer2
' ************************************************
' コード名称マスタ
' ************************************************
Query = _
"create table コード名称マスタ (" & _
" 区分 INT" & _
" ,コード VARCHAR(10)" & _
" ,名称 NVARCHAR(50)" & _
" ,数値1 INT" & _
" ,数値2 INT" & _
" ,作成日 DATETIME" & _
" ,更新日 DATETIME" & _
" ,primary key(区分,コード)" & _
")"
Call SSTransfer( "コード名称マスタ", Query )
' ************************************************
' コントロールマスタ
' ************************************************
Query = _
"create table コントロールマスタ (" & _
" キー VARCHAR(1)" & _
" ,売上日付 DATETIME" & _
" ,売上伝票 INT" & _
" ,primary key(キー)" & _
")"
Call SSTransfer( "コントロールマスタ", Query )
' ************************************************
' メッセージマスタ
' ************************************************
Query = _
"create table メッセージマスタ (" & _
" コード VARCHAR(4)" & _
" ,メッセージ NVARCHAR(100)" & _
" ,primary key(コード)" & _
")"
Call SSTransfer( "メッセージマスタ", Query )
' ************************************************
' 取引データ
' ************************************************
Query = _
"create table 取引データ (" & _
" 取引区分 VARCHAR(2)" & _
" ,伝票番号 INT" & _
" ,行 INT" & _
" ,取引日付 DATETIME" & _
" ,取引先コード VARCHAR(4)" & _
" ,商品コード VARCHAR(4)" & _
" ,数量 INT" & _
" ,単価 INT" & _
" ,金額 INT" & _
" ,primary key(取引区分,伝票番号,行)" & _
")"
Call SSTransfer( "取引データ", Query )
' ************************************************
' 商品マスタ
' ************************************************
Query = _
"create table 商品マスタ (" & _
" 商品コード VARCHAR(4)" & _
" ,商品名 NVARCHAR(50)" & _
" ,在庫評価単価 INT" & _
" ,販売単価 INT" & _
" ,商品分類 VARCHAR(3)" & _
" ,商品区分 VARCHAR(1)" & _
" ,作成日 DATETIME" & _
" ,更新日 DATETIME" & _
" ,primary key(商品コード)" & _
")"
Call SSTransfer( "商品マスタ", Query )
' ************************************************
' 商品分類マスタ
' ************************************************
Query = _
"create table 商品分類マスタ (" & _
" 商品分類 VARCHAR(3)" & _
" ,名称 NVARCHAR(50)" & _
" ,作成日 DATETIME" & _
" ,更新日 DATETIME" & _
" ,primary key(商品分類)" & _
")"
Call SSTransfer( "商品分類マスタ", Query )
' ************************************************
' 得意先マスタ
' ************************************************
Query = _
"create table 得意先マスタ (" & _
" 得意先コード VARCHAR(4)" & _
" ,得意先名 NVARCHAR(50)" & _
" ,得意先区分 VARCHAR(1)" & _
" ,担当者 VARCHAR(4)" & _
" ,郵便番号 VARCHAR(7)" & _
" ,住所1 NVARCHAR(100)" & _
" ,住所2 NVARCHAR(100)" & _
" ,作成日 DATETIME" & _
" ,更新日 DATETIME" & _
" ,primary key(得意先コード)" & _
")"
Call SSTransfer( "得意先マスタ", Query )
' ************************************************
' 社員マスタ
' ************************************************
Query = _
"create table 社員マスタ (" & _
" 社員コード VARCHAR(4)" & _
" ,氏名 NVARCHAR(50)" & _
" ,フリガナ NVARCHAR(50)" & _
" ,所属 VARCHAR(4)" & _
" ,性別 INT" & _
" ,作成日 DATETIME" & _
" ,更新日 DATETIME" & _
" ,給与 INT" & _
" ,手当 INT" & _
" ,管理者 VARCHAR(4)" & _
" ,primary key(社員コード)" & _
")"
Call SSTransfer( "社員マスタ", Query )
' ************************************************
' 郵便番号マスタ
' ************************************************
Query = _
"create table 郵便番号マスタ (" & _
" 郵便番号 VARCHAR(7)" & _
" ,都道府県名カナ NVARCHAR(255)" & _
" ,市区町村名カナ NVARCHAR(255)" & _
" ,町域名カナ NVARCHAR(255)" & _
" ,都道府県名 NVARCHAR(255)" & _
" ,市区町村名 NVARCHAR(255)" & _
" ,町域名 NVARCHAR(255)" & _
")"
Call SSTransfer( "郵便番号マスタ", Query )
' ************************************************
' ビュー
' ************************************************
RunSS( "drop view V_商品一覧" )
Query = _
"create view V_商品一覧 as" & _
" SELECT 商品マスタ.商品コード" & _
" , 商品マスタ.商品名" & _
" , 商品マスタ.販売単価" & _
" , 商品分類マスタ.商品分類" & _
" , 商品分類マスタ.名称 AS 分類名" & _
" , 商品マスタ.商品区分" & _
" , コード名称マスタ.名称 AS 区分名" & _
" from" & _
" (商品マスタ LEFT JOIN 商品分類マスタ" & _
" ON 商品マスタ.商品分類 = 商品分類マスタ.商品分類" & _
" ) LEFT JOIN コード名称マスタ" & _
" ON 商品マスタ.商品区分 = コード名称マスタ.コード" & _
" where" & _
" コード名称マスタ.区分 = 3"
RunSS( Query )
RunSS( "drop view V_売上日付" )
Query = _
"create view V_売上日付 as" & _
" SELECT コントロールマスタ.売上日付" & _
" FROM コントロールマスタ" & _
" WHERE コントロールマスタ.キー = '1'"
RunSS( Query )
RunSS( "drop view V_得意先台帳" )
Query = _
"create view V_得意先台帳 as" & _
" SELECT 取引データ.取引先コード" & _
" , 得意先マスタ.得意先名" & _
" , 取引データ.取引日付" & _
" , 取引データ.取引区分" & _
" , 取引データ.伝票番号" & _
" , 取引データ.行" & _
" , 取引データ.商品コード" & _
" , 商品マスタ.商品名" & _
" , 取引データ.数量" & _
" , 取引データ.単価" & _
" , 取引データ.金額" & _
" from" & _
" (取引データ INNER JOIN 商品マスタ" & _
" ON 取引データ.商品コード=商品マスタ.商品コード" & _
" ) INNER JOIN 得意先マスタ" & _
" ON 取引データ.取引先コード=得意先マスタ.得意先コード" & _
" where" & _
" 取引データ.取引区分 = '10'"
RunSS( Query )
RunSS( "drop view V_社員一覧" )
Query = _
"create view V_社員一覧 as" & _
" select 社員コード" & _
" ,氏名" & _
" ,フリガナ" & _
" ,名称1.名称 as 性別" & _
" ,所属" & _
" ,名称2.名称 as 所属名" & _
" from 社員マスタ" & _
" ,コード名称マスタ 名称1" & _
" ,コード名称マスタ 名称2" & _
" where 性別 = 名称1.コード" & _
" and 名称1.区分 = 1" & _
" and 所属 = 名称2.コード" & _
" and 名称2.区分 = 2"
RunSS( Query )
' ************************************************
' 終了
' ************************************************
Query = "drop table 転送用テーブル"
RunSS( Query )
Cn2.Close
Cn.Close
Wscript.Echo "処理が終了しました"
' ************************************************
' SQLServer 転送
' ************************************************
function SSTransfer( strTable, QueryCreate )
Dim Query
Query = "drop table " & strTable
RunSS( Query )
RunSS( QueryCreate )
Query = "drop table 転送用テーブル"
RunSS( Query )
Query = "select * into 転送用テーブル" & strConnectSQLServer & _
" from " & strTable
RunMdb( Query )
Query = "insert into " & strTable & _
" select * from 転送用テーブル"
RunSS( Query )
end function
' ************************************************
' MDB 実行
' ************************************************
function RunMdb( Query )
on error resume next
Cn.Execute Query
if Err.Number <> 0then
Wscript.Echo Err.Description
end if
on error goto 0
end function
' ************************************************
' SQLServer 実行
' ************************************************
function RunSS( Query )
on error resume next
Cn2.Execute Query
if Err.Number <> 0 then
if Query <> "drop table 転送用テーブル" then
Wscript.Echo Err.Description
end if
end if
on error goto 0
end function
' **********************************************************
' Cscript.exe で実行を強制
' ウィンドウをアクティブにし、最大化ウィンドウとして表示(3)
' Cscript.exe の実行終了後 pause で一時停止
' **********************************************************
Function Crun( )
Dim str,WshShell
str = WScript.FullName
str = Right( str, 11 )
str = Ucase( str )
if str <> "CSCRIPT.EXE" then
str = WScript.ScriptFullName
Set WshShell = CreateObject( "WScript.Shell" )
strParam = " "
For I = 0 to Wscript.Arguments.Count - 1
if instr(Wscript.Arguments(I), " ") < 1 then
strParam = strParam & Wscript.Arguments(I) & " "
else
strParam = strParam & Dd(Wscript.Arguments(I)) & " "
end if
Next
Call WshShell.Run( "cmd.exe /c cscript.exe " & Dd(str) & strParam & " & pause", 3 )
WScript.Quit
end if
End Function
' **********************************************************
' 文字列を " で囲む関数
' **********************************************************
Function Dd( strValue )
Dd = """" & strValue & """"
End function
| |