BatchHelper 販売管理B作成

  【06B】 販売管理(MDB)データーベースの作成.wsf



WinOfSql\Tool\script\HelperMenu に置く必要があります

  
<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>
  










  infoboard   管理者用   
このエントリーをはてなブックマークに追加





フリーフォントWEBサービス
SQLの窓WEBサービス

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ