Garden Place TOP 技術ガーデン Hey, Scripting kiddy! カレーとスクリプトのアツい関係

Hey, Scripting kiddy! は皆様のPCを通じた悩みなどをScript kiddyのスクリプトで解決しようという企画です。

Script kiddyさんが色んな人の悩みをスクリプトで解決していく様はまさに痛快。関係のない無駄話も彼の魅力の一つです。

※注
これは、Microsoftがやっている「Hey,scripting guy!」のパクリ企画です。

公開日:2008.06.30

カレーとスクリプトのアツい関係

Hey, Scripting kiddy! は皆様のPCを通じた悩みなどをScript kiddyのスクリプトで解決しようという企画です。

今日のお便りはウガンダさんからです。

「Script kiddyさん、こんにちは。教えてください。VBSでデータベースを生成することはできないのでしょうか?」

ウガンダさん、こんにちは。今日Script kiddyは無性にカレーが食べたくなりました。ところでカレーとScriptには非常に興味深い関係があります。

  • なんでもごった混ぜにできること
  • とにかく作りはじめれば完成すること
  • 労力の割においしいこと

いかがでしょうか。こんなに似通っているとは思いませんでしたね。ただ一つ残念なことは、Scriptではおなかがふくれないことです。現在Script Kiddyはおなかがふくれるスクリプトを研究しています。この研究成果は2034年の春にリリースできる見込みです。

さて、質問に移りましょう。VBSでは、ADODBオブジェクトを介してJetデータベースドライバを制御するのが非常にメジャーです。Jetデータベースドライバはmdbファイルを始め、Excelファイル、CSVファイル、テキストファイルなど、非常にたくさんのフォーマットをあたかもデータベースのように扱える機能を提供してくれます。 しかしADODBではデータベースを生成することはできません。ADOXというオブジェクトを使用します。ADOXはデータベースの定義を変更する機能を持っています。

01: strNewDBName = "curry.mdb"
02: Set objADOX = CreateObject("ADOX.Catalog")
03: rem 空のデータベースを生成します
04: objADOX.Create "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strNewDBName
05: rem テーブルの定義
06: Set objTable = CreateObject("ADOX.Table")
07: With objTable
08:   rem テーブル名称
09:   .Name = "Table1"
10:   rem テーブルのコンテナを指定する
11:   .ParentCatalog = objADOX
12:   rem カラムの追加
13:   rem 整数型
14:   Set objPK = .Columns.Append("Column1", 3)
15:   rem 文字列型
16:   .Columns.Append "Column2", 130, 128
17:   rem キー値を設定
18:   .keys.Append objPK
19: End With
20: objADOX.Tables.Append objTable
21: rem カタログを閉じます(参照がなくなると閉じられます)
22: Set objADOX = Nothing

さて、いかがでしょうか、あなたはカレーを作り、Script kiddyはスクリプトを作る。こんな美しい光景はありませんね。

それではScript kiddyはタマネギを堀りに行ってきます。


※注 これは、Microsoftがやっている「Hey,scripting guy!」のパクリ企画です。 ご意見、ご要望はお問い合わせよりお願いします。