|
<JOB>
<OBJECT id="Lbox" progid="Lbox.BatchHelper" />
<OBJECT id="Wsc" progid="Lbox.BatchWsc" />
<OBJECT id="Fs" progid="Lbox.Fsystem" />
<OBJECT id="Database" progid="Lbox.Database" />
<OBJECT id="Ftp" progid="Lbox.Ftp" />
<OBJECT id="Outer" progid="Lbox.OuterDll" />
<OBJECT id="Prt" progid="Lbox.Prt" />
<OBJECT id="Window" progid="Lbox.Window" />
<OBJECT id="Wnet" progid="Lbox.Wnet" />
<OBJECT id="Adox" progid="ADOX.Catalog" />
<OBJECT id="Cn" progid="ADODB.Connection" />
<OBJECT id="Rs" progid="ADODB.Recordset" />
<SCRIPT language=VBScript>
' *****************************************************************************
' 販売管理(MDB)データーベースの作成
' *****************************************************************************
Dim DbPath,Result,Query
Dim bSame
' 毎回同じデータにしたい場合は true にします
bSame = true
' **********************************************
' データベースファイル作成
' **********************************************
DbPath = Lbox.SaveFileName( "販売管理DBを指定して下さい", "MDB,*.mdb" , , "mdb", "販売管理B" )
if DbPath = "" then
Lbox.MsgOk( "データベース指定でキャンセルされました " )
Wscript.Quit
end if
if Fs.IsFileExist( DbPath ) then
Lbox.MsgOk( DbPath & " は既に存在します" )
Wscript.Quit
end if
' **********************************************
' SQLの窓とのインターフェイス
' **********************************************
if Lbox.CheckMutex( "WinOfSql" ) then
hWnd = Lbox.FindTopWindow( "WINOFSQL" )
else
hWnd = Lbox.Run("..\..\..\WinOfSql.exe", "WINOFSQL" )
end if
if hWnd = 0 then
Lbox.MsgOk( "SQLの窓のウインドウハンドルを取得できませんでした" )
end if
' **********************************************
' SQLの窓の操作
' **********************************************
Window.hWnd = hWnd
' ウインドウを最小化や最大化から標準状態に戻します
Window.Restore
' ウインドウをデスクトップにあわせます
Window.ScreenFit
' ウインドウをアクティブにします
Lbox.ActiveWindow = hWnd
Call Lbox.EnumList( hWnd, "販売管理データベースを作成します" )
' **********************************************
' DB 作成
' **********************************************
on error resume next
Adox.Create "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & DbPath & ";"
if Err.Number <> 0 then
Lbox.MsgOk( Err.Description & ":" & DbPath )
Wscript.quit
end if
on error goto 0
Call Lbox.EnumListAdd( hWnd, DbPath & " を作成しました" )
' **********************************************
' 接続
' **********************************************
Result = Database.Connect( 1, DbPath )
if Result <> "" then
Lbox.MsgOk( Result )
Wscript.quit
end if
Call Lbox.EnumListAdd( hWnd, "DB に接続しました" )
' **********************************************
' 固定マスタデータ作成
' **********************************************
Call Database.Execute( "parts\販売管理表定義.sql" )
Query = "alter table [社員マスタ] add column"
Query = Query & " [給与] INT"
Query = Query & " ,[手当] INT"
Query = Query & " ,[管理者] varchar(4)"
Database.Query( Query )
Call Database.Execute( "parts\コード名称マスタ.sql" )
Call Database.Execute( "parts\コントロールマスタ.sql" )
Call Database.Execute( "parts\メッセージマスタ.sql" )
Call Database.Execute( "parts\商品分類マスタ.sql" )
Call Lbox.EnumListAdd( hWnd, "固定マスタデータを作成しました" )
' **********************************************
' 社員マスタ
' **********************************************
strName1 = "山川森鈴木高田本多村吉岡松丸杉浦中尾安原野内"
strName1k = "ヤマ,カワ,モリ,スズ,キ,タカ,タ,モト,タ,ムラ,ヨシ,オカ,マツ,マル,スギ,ウラ,ナカ,オ,ヤス,ハラ,ノ,ウチ"
strWork = ""
strName2 = "和元雅正由克友浩春冬洋輝"
strName2k = "カズ,モト,マサ,マサ,ヨシ,カツ,トモ,ヒロ,ハル,フユ,ヒロ,テル"
strName3 = "男也一行樹之"
strName3k = "オ,ヤ,カズ,ユキ,キ,ユキ"
strName4 = "子代美恵"
strName4k = "コ,ヨ,ミ,エ"
' 件数
nMax1 = 50
Call Lbox.EnumListAdd( hWnd, "社員マスタとデータを作成しています...." )
Call Lbox.EnumListAdd( hWnd, "作成件数は " & nMax1 & " 件です" )
For i = 1 to nMax1
Query = "insert into [社員マスタ] values("
Query = Query & Ss( Lbox.Fzero( i , 4 ) )
' 姓1文字目
nTarget = MyRandom( 1, Len(strName1) )
strName = Mid( strName1, nTarget, 1 )
aData = Split(strName1k,",")
strKana = aData(nTarget-1)
' 1文字目と2文字目が一致したら除外
nTarget2 = nTarget
Do while( nTarget = nTarget2 )
nTarget2 = MyRandom( 1, Len(strName1) )
Loop
' 姓2文字目
strName = strName & Mid( strName1, nTarget2, 1 ) & " "
strKana = strKana & aData(nTarget2-1) & " "
' 名1文字目
nTarget = MyRandom( 1, Len(strName2) )
strName = strName & Mid( strName2, nTarget, 1 )
aData = Split(strName2k,",")
strKana = strKana & aData(nTarget-1)
' 性別
nTarget = MyRandom( 0, 1 )
nS = nTarget
' 性別によって名2文字目を決定
if nTarget = 0 then
nTarget = MyRandom( 1, Len(strName3) )
strName = strName & Mid( strName3, nTarget, 1 )
aData = Split(strName3k,",")
strKana = strKana & aData(nTarget-1)
else
nTarget = MyRandom( 1, Len(strName4) )
strName = strName & Mid( strName4, nTarget, 1 )
aData = Split(strName4k,",")
strKana = strKana & aData(nTarget-1)
end if
Query = Query & "," & Ss( strName )
Query = Query & "," & Ss( strKana )
nTarget = MyRandom( 1, 3 )
Query = Query & "," & Ss( Lbox.Fzero( nTarget, 4 ) )
Query = Query & "," & nS
strWork = Date() - MyRandom( 0, 100 )
Query = Query & "," & Ss( strWork )
strWork = Date() + MyRandom( 0, 100 )
Query = Query & "," & Ss( strWork )
Query = Query & "," & MyRandom( 14, 30 ) * 10000
if i mod 5 = 1 then
Query = Query & "," & MyRandom( 5, 10 ) * 1000
else
Query = Query & ",NULL"
end if
if i <= 5 then
Query = Query & ",NULL"
else
Query = Query & "," & Ss( Lbox.Fzero( MyRandom( 1, 5 ) , 4 ) )
end if
Query = Query & ")"
Database.Query( Query )
Next
Call Lbox.EnumListAdd( hWnd, "社員マスタとデータを作成しました" )
' **********************************************
' 得意先マスタ
' **********************************************
Call Lbox.EnumListAdd( hWnd, "得意先マスタとデータを作成しています...." )
strName3 = "商店,商事,コーポレーション,システム,建設"
' 件数
nMax2 = 50
Call Lbox.EnumListAdd( hWnd, "作成件数は " & nMax2 & " 件です" )
For i = 1 to nMax2
Query = "insert into [得意先マスタ] values("
Query = Query & Ss( Lbox.Fzero( i, 4 ) )
' 姓1文字目
nTarget = MyRandom( 1, Len(strName1) )
strName = Mid( strName1, nTarget, 1 )
' 1文字目と2文字目が一致したら除外
nTarget2 = nTarget
Do while( nTarget = nTarget2 )
nTarget2 = MyRandom( 1, Len(strName1) )
Loop
' 姓2文字目
strName = strName & Mid( strName1, nTarget2, 1 )
' 付加情報
aData = Split(strName3,",")
nTarget = MyRandom( 0, Ubound(aData) )
strWork = aData(nTarget)
' 前株、後株、形式
nTarget = MyRandom( 1, 3 )
nS = nTarget
Select Case nS
Case 1
strName = "" & strName & strWork
Case 2
strName = strName & strWork & "株式会社"
Case 3
strName = "株式会社" & strName & strWork
End Select
Query = Query & "," & Ss( strName )
nTarget = MyRandom( 0, 1 )
Query = Query & "," & Ss( nTarget )
nTarget = MyRandom( 1, nMax1 )
Query = Query & "," & Ss( Lbox.Fzero( nTarget, 4 ) )
' 郵便番号
aZip = Array(531,539,543,545,553)
nTarget = MyRandom( 1, 9999 )
Query = Query & "," & Ss( aZip( MyRandom(0,4) ) & Lbox.Fzero( nTarget, 4 ) )
' 非 Unicode にコンバーションを考慮して半分の長さ
strWork = "住所1" & Lbox.Repeat( "−", 43 ) & Wsc.Han2Zen(Lbox.Fzero( i, 4 ))
Query = Query & "," & Ss( strWork )
' 非 Unicode にコンバーションを考慮して半分の長さ
strWork = "住所2" & Lbox.Repeat( "−", 43 ) & Wsc.Han2Zen(Lbox.Fzero( i, 4 ))
Query = Query & "," & Ss( strWork )
strWork = Cdate("2005/06/01") - MyRandom( 0, 100 )
Query = Query & "," & Ss( strWork )
strWork = Cdate("2005/06/01") + MyRandom( 0, 100 )
Query = Query & "," & Ss( strWork )
Query = Query & ")"
Database.Query( Query )
Next
Call Lbox.EnumListAdd( hWnd, "得意先マスタとデータを作成しました" )
' **********************************************
' 商品マスタ
' **********************************************
Call Lbox.EnumListAdd( hWnd, "商品マスタとデータを作成しています...." )
Query = "select * from [商品分類マスタ]"
strList = Database.LoadSqlData( Query )
aData = Split( strList, vbLf )
nRows = Ubound( aData )
' 件数
nMax3 = 100
Call Lbox.EnumListAdd( hWnd, "作成件数は " & nMax3 & " 件です" )
For i = 1 to nMax3
Query = "insert into [商品マスタ] values("
Query = Query & Ss( Lbox.Fzero( i, 4 ) )
' 商品分類
nTarget = MyRandom( 2, nRows )
strType = Lbox.GetListText( strList, nTarget-1, 0 )
strTypeName = Lbox.GetListText( strList, nTarget-1, 1 )
' 非 Unicode にコンバーションを考慮して半分の長さ
nFill = 25 - Len(strTypeName) - 4
strWork = strTypeName & Lbox.Repeat( "−", nFill ) & Wsc.Han2Zen(Lbox.Fzero( i, 4 ))
Query = Query & "," & Ss( strWork )
' 在庫評価単価
nTargetBase = MyRandom( 2, 100 ) * 100
nTarget = nTargetBase - MyRandom( 2, 15 ) * 10
Query = Query & "," & nTarget
' 販売単価
nTarget = nTargetBase + MyRandom( 2, 15 ) * 10
Query = Query & "," & nTarget
' 商品分類
Query = Query & "," & Ss( strType )
' 商品区分
nTarget = MyRandom( 0, 1 )
Query = Query & "," & Ss( nTarget )
strWork = Cdate("2005/06/01") - MyRandom( 0, 100 )
Query = Query & "," & Ss( strWork )
strWork = Cdate("2005/06/01") + MyRandom( 0, 100 )
Query = Query & "," & Ss( strWork )
Query = Query & ")"
if not Database.Query( Query ) then
Lbox.MsgOk(Query)
end if
Next
Call Lbox.EnumListAdd( hWnd, "商品マスタとデータを作成しました" )
' **********************************************
' 取引データ
' **********************************************
Call Lbox.EnumListAdd( hWnd, "取引データとデータを作成しています...." )
' 伝票件数
nMax4 = 1000
Call Lbox.EnumListAdd( hWnd, "伝票件数は " & nMax4 & " 件です" )
nCnt = 0
For i = 1 to nMax4
QueryBase = "insert into [取引データ] values("
QueryBase = QueryBase & Ss( "10" )
QueryBase = QueryBase & "," & i
strWork = Cdate("2005/06/01") + MyRandom( 0, 100 )
nTarget2 = MyRandom( 1, nMax2 )
' 行数
nTarget = MyRandom( 1, 4 )
For j = 1 to nTarget
Query = QueryBase & "," & j
Query = Query & "," & Ss( strWork )
Query = Query & "," & Ss( Lbox.Fzero( nTarget2, 4 ) )
nTarget3 = MyRandom( 1, nMax3 )
Query = Query & "," & Ss( Lbox.Fzero( nTarget3, 4 ) )
nTarget4 = MyRandom( 1, 20 )
Query = Query & "," & nTarget4
RefQuery = "select * from [商品マスタ] where [商品コード] = " & Ss( Lbox.Fzero( nTarget3, 4 ) )
Database.Query( RefQuery )
strTanka = Database.GetText("販売単価")
Query = Query & "," & strTanka
Query = Query & "," & Cint(strTanka) * nTarget4
Query = Query & ")"
if not Database.Query( Query ) then
Lbox.MsgOk(Query)
end if
nCnt = nCnt + 1
if ( nCnt mod 100 ) = 0 then
Call Lbox.EnumListAdd( hWnd, nCnt & " 件のデータを作成しました" )
end if
Next
if ( i mod 100 ) = 0 then
Call Lbox.EnumListAdd( hWnd, i & " 件の伝票を作成しました" )
end if
Next
Query = "update [コントロールマスタ] set [売上伝票] = " & nMax4 & " where キー = '1'"
Call Database.Query( Query )
Call Lbox.EnumListAdd( hWnd, nCnt & " 件のデータを作成しました" )
Call Lbox.EnumListAdd( hWnd, "取引データとデータを作成しました" )
' **********************************************
' ビューの作成
' **********************************************
Call Lbox.EnumListAdd( hWnd, "ビュー作成しています...." )
Call Database.Execute( "parts\ビュー作成.sql" )
Call Lbox.EnumListAdd( hWnd, "ビュー作成しました" )
' **********************************************
' 接続解除
' **********************************************
Database.DisConnect
Lbox.MsgOk("処理が終了しました")
function Ss( strValue )
Ss = "'" & strValue & "'"
end function
function MyRandom( nMin, nMax )
if bSame then
MyRandom = Wsc.SameRandom( nMin, nMax )
else
MyRandom = Wsc.Random( nMin, nMax )
end if
end function
</SCRIPT>
</JOB>
| |