データーベース作成

  EXCEL



  • BatchHelper オブジェクトをインストールして下さい

    ※ インストール : 解凍して setup.wsf を実行して下さい。
    ※ リファレンス : http://winofsql.jp/help/cpp/batchhelper/frame.htm

  • WSH スケルトン を使用しています

      
    ' **********************************************
    ' EXCEL のパスを決定
    ' **********************************************
    ' 初期ディレクトリは省略しています
    DbPath = Lbox.SaveFileName( "データベース作成", "EXCEL,*.xls" ,, "xls", "MyDB" )
    if DbPath = "" then
    	MsgOk( "パス指定でキャンセルされました   " )
    	quit
    end if
    
    ' EXCEL ブックが存在している場合はごみ箱へ移動
    ' (OS の移動確認ダイアログが表示されます)
    if Fs.IsFileExist( DbPath ) then
    	Fs.ShellDelete( DbPath ) 
    end if
    
    ' **********************************************
    ' 接続
    ' **********************************************
    ' EXCEL は存在しないパスに接続してもエラーになりません
    ' が、テーブルを作成しないとブックも作成されません
    Result = Database.Connect( 0, DbPath ) 
    if Result <> "" then
    	MsgOk( Result )
    	quit
    end if
    
    ' EXCEL は VARCHAR の桁数指定は無視されます
    ' INT や DATETIME も NUMBER と DATE に置き換えられます
    ' VARCHAR では、常に 255 になりますが、それは表示幅で
    ' 最大長ではありません
    ' 主キーは指定できません。
    Query = "create table [社員テーブル] ("
    Query = Query & "[社員コード] VARCHAR(4)"
    Query = Query & ",[氏名] VARCHAR(50)"
    Query = Query & ",[所属] VARCHAR(4)"
    Query = Query & ",[性別] INT"
    Query = Query & ",[給与] INT"
    Query = Query & ",[手当] INT"
    Query = Query & ",[作成日] DATETIME"
    Query = Query & ",[更新日] DATETIME"
    Query = Query & ")"
    
    ' **********************************************
    ' SQL実行
    ' **********************************************
    ' Database オブジェクトはバッチ実行を前提としています
    ' ので、Query による実行では、成功か失敗かしか解りません。
    ' エラーの内容が必要な場合は、SQL を テキストファイルに
    ' 書き込んで Execute( ファイルパス, LOGファイルのパス )
    ' で実行します(エラーは LOG ファイルに書き込まれます)。
    if not Database.Query( Query ) then
    	MsgOk("社員テーブルの作成に失敗しました")
    end if
    
    ' **********************************************
    ' 接続解除
    ' **********************************************
    Database.DisConnect
    
    MsgOk("処理が終了しました")
    
      



      MDB



      
    ' **********************************************
    ' MDB のパスを決定
    ' **********************************************
    ' 初期ディレクトリは省略しています
    DbPath = Lbox.SaveFileName( "データベース作成", "MDB,*.mdb" ,, "mdb", "MyDB" )
    if DbPath = "" then
    	MsgOk( "パス指定でキャンセルされました   " )
    	quit
    end if
    
    ' MDB が存在している場合はごみ箱へ移動
    if Fs.IsFileExist( DbPath ) then
    	Fs.ShellDelete( DbPath ) 
    end if
    
    ' **********************************************
    ' DB 作成
    ' **********************************************
    ' MDB の作成は ADOX を使用します
    Set Adox = WScript.CreateObject("ADOX.Catalog")
    on error resume next
    Adox.Create "Provider=Microsoft.Jet.OLEDB.4.0;" & _
    	"Data Source=" & DbPath & ";"
    if Err.Number <> 0 then
    	MsgOk( Err.Description & ":" & DbPath )
    	quit
    end if
    on error goto 0
    
    ' **********************************************
    ' 接続
    ' **********************************************
    Result = Database.Connect( 1, DbPath ) 
    if Result <> "" then
    	MsgOk( Result )
    	quit
    end if
    
    ' MDB の VARCHAR は UNICODE なので、氏名には 50 文字のデータがセット可能です
    Query = "create table [社員テーブル] ("
    Query = Query & "[社員コード] VARCHAR(4)"
    Query = Query & ",[氏名] VARCHAR(50)"
    Query = Query & ",[所属] VARCHAR(4)"
    Query = Query & ",[性別] INT"
    Query = Query & ",[給与] INT"
    Query = Query & ",[手当] INT"
    Query = Query & ",[作成日] DATETIME"
    Query = Query & ",[更新日] DATETIME"
    Query = Query & ",primary key([社員コード])"
    Query = Query & ")"
    
    ' **********************************************
    ' SQL実行
    ' **********************************************
    if not Database.Query( Query ) then
    	MsgOk("社員テーブルの作成に失敗しました")
    end if
    
    ' **********************************************
    ' 接続解除
    ' **********************************************
    Database.DisConnect
    
    MsgOk("処理が終了しました")
    
      



      SQLServer

      
    ' **********************************************
    ' 接続
    ' **********************************************
    ' DB を作成する為に 既存の DB に接続します
    Result = Database.Connect( 2, "sv\msde2000,master,sa,password" ) 
    if Result <> "" then
    	MsgOk( Result )
    	quit
    end if
    
    ' **********************************************
    ' DB 作成
    ' **********************************************
    Query = "sp_helpdb MyDB"
    if Database.Query( Query ) then
    	' MyDB が存在する場合は削除します
    	Query = "drop database MyDB"
    	if not Database.Query( Query ) then
    		MsgOk("MyDB の削除に失敗しました")
    		Database.DisConnect
    		quit
    	end if
    end if
    
    ' MyDB を作成します
    Query = "create database MyDB"
    if not Database.Query( Query ) then
    	MsgOk("MyDB の作成に失敗しました")
    	Database.DisConnect
    	quit
    end if
    
    ' **********************************************
    ' カレントデータベースを MyDB に変更
    ' **********************************************
    Query = "use MyDB"
    if not Database.Query( Query ) then
    	MsgOk("カレントデータベースを MyDB に変更できません")
    	Database.DisConnect
    	quit
    end if
    
    ' **********************************************
    ' 社員テーブルの作成
    ' **********************************************
    ' NVARCHAR は UNICODE です
    Query = "create table [社員テーブル] ("
    Query = Query & "[社員コード] VARCHAR(4)"
    Query = Query & ",[氏名] NVARCHAR(50)"
    Query = Query & ",[所属] VARCHAR(4)"
    Query = Query & ",[性別] INT"
    Query = Query & ",[給与] INT"
    Query = Query & ",[手当] INT"
    Query = Query & ",[作成日] DATETIME"
    Query = Query & ",[更新日] DATETIME"
    Query = Query & ",primary key([社員コード])"
    Query = Query & ")"
    
    ' **********************************************
    ' SQL実行
    ' **********************************************
    if not Database.Query( Query ) then
    	MsgOk("社員テーブルの作成に失敗しました")
    end if
    
    ' **********************************************
    ' 接続解除
    ' **********************************************
    Database.DisConnect
    
    MsgOk("処理が終了しました")
    
      



      MySQL

      
    ' **********************************************
    ' 接続
    ' **********************************************
    ' DB を作成する為に 既存の DB に接続します
    Result = Database.Connect( 3, "MySQL,mysql,root," ) 
    if Result <> "" then
    	MsgOk( Result )
    	quit
    end if
    
    ' **********************************************
    ' DB 作成
    ' **********************************************
    ' MySQL には 小文字で登録されます
    Query = "show databases like 'mydb'"
    ' この場合、行が返されると true です
    if Database.Query( Query ) then
    	' MyDB が存在する場合は削除します
    	' SQL 文では大文字小文字は区別されません
    	Query = "drop database MyDB"
    	if not Database.Query( Query ) then
    		MsgOk("MyDB の削除に失敗しました")
    		Database.DisConnect
    		quit
    	end if
    end if
    
    ' MyDB を作成します
    ' SQL 文では大文字小文字は区別されません
    Query = "create database MyDB"
    if not Database.Query( Query ) then
    	MsgOk("MyDB の作成に失敗しました")
    	Database.DisConnect
    	quit
    end if
    
    ' **********************************************
    ' カレントデータベースを MyDB に変更
    ' **********************************************
    ' SQL 文では大文字小文字は区別されません
    Query = "use MyDB"
    if not Database.Query( Query ) then
    	MsgOk("カレントデータベースを MyDB に変更できません")
    	Database.DisConnect
    	quit
    end if
    
    ' **********************************************
    ' 社員テーブルの作成
    ' **********************************************
    ' 漢字 50 文字が入るように VARCHAR(100) にしています
    Query = "create table `社員テーブル` ("
    Query = Query & "`社員コード` VARCHAR(4)"
    Query = Query & ",`氏名` VARCHAR(100)"
    Query = Query & ",`所属` VARCHAR(4)"
    Query = Query & ",`性別` INT"
    Query = Query & ",`給与` INT"
    Query = Query & ",`手当` INT"
    Query = Query & ",`作成日` DATETIME"
    Query = Query & ",`更新日` DATETIME"
    Query = Query & ",primary key(`社員コード`)"
    Query = Query & ")"
    
    ' **********************************************
    ' SQL実行
    ' **********************************************
    if not Database.Query( Query ) then
    	MsgOk("社員テーブルの作成に失敗しました")
    end if
    
    ' **********************************************
    ' 接続解除
    ' **********************************************
    Database.DisConnect
    
    MsgOk("処理が終了しました")
    
      



      PostgreSQL

      
    ' **********************************************
    ' 接続
    ' **********************************************
    ' DB を作成する為に 既存の DB に接続します
    Result = Database.Connect( 5, "PostgreSQL,lightbox,lightbox,lightbox" ) 
    if Result <> "" then
    	MsgOk( Result )
    	quit
    end if
    
    ' **********************************************
    ' DB 作成
    ' **********************************************
    ' PostgreSQL には 小文字で登録されます
    Query = "select * from pg_database where datname = 'mydb'"
    ' この場合、行が返されると true です
    if Database.Query( Query ) then
    	' MyDB が存在する場合は DB を削除します
    	' データベース名は登録されたとおりに指定します
    	Query = "drop database mydb"
    	if not Database.Query( Query ) then
    		MsgOk("MyDB の削除に失敗しました")
    		Database.DisConnect
    		quit
    	end if
    end if
    
    ' MyDB を作成します
    Query = "create database MyDB"
    if not Database.Query( Query ) then
    	MsgOk("MyDB の作成に失敗しました")
    	Database.DisConnect
    	quit
    end if
    
    ' **********************************************
    ' カレントデータベースを MyDB に変更
    ' **********************************************
    ' いったん接続解除します
    Database.DisConnect
    ' 作成した DB に接続します
    ' データベース名は登録されたとおりに指定します
    Result = Database.Connect( 5, "PostgreSQL,mydb,lightbox,lightbox" ) 
    if Result <> "" then
    	MsgOk( Result & vbCrLf & "カレントデータベースを MyDB に変更できません" )
    	quit
    end if
    
    ' **********************************************
    ' 社員テーブルの作成
    ' **********************************************
    ' DATETIME という型はありませんので DATE で代用します
    ' 厳密にコンバートするならば、TIMESTAMP を使用します
    Query = "create table ""社員テーブル"" ("
    Query = Query & """社員コード"" VARCHAR(4)"
    Query = Query & ",""氏名"" VARCHAR(100)"
    Query = Query & ",""所属"" VARCHAR(4)"
    Query = Query & ",""性別"" INT"
    Query = Query & ",""給与"" INT"
    Query = Query & ",""手当"" INT"
    Query = Query & ",""作成日"" DATE"
    Query = Query & ",""更新日"" DATE"
    Query = Query & ",primary key(""社員コード"")"
    Query = Query & ")"
    
    ' **********************************************
    ' SQL実行
    ' **********************************************
    if not Database.Query( Query ) then
    	MsgOk("社員テーブルの作成に失敗しました")
    end if
    
    ' **********************************************
    ' 接続解除
    ' **********************************************
    Database.DisConnect
    
    MsgOk("処理が終了しました")
    
      










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





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

    SQLの窓フリーソフト

    素材

    一般WEBツールリンク

    SQLの窓

    フリーソフト

    JSライブラリ