Main
Sub Main()
' 定数/変数宣言部
Const DB_LANG_JAPANESE = ";LANGID=0x0411;CP=932;COUNTRY=0"
Const DB__DYNASET = 2
Const DB_APPEND_ONLY = 8
Const FILE_NAME = "F:\TEST1.mdb"
Dim dbe, db, strDbPath
Dim wsh : set wsh=createobject("Wscript.Shell")
' MDB がすでに存在するか調べます。
strDbPath = GetUniqueDbName(FILE_NAME)
If LenB(strDbPath) = 0 Then Exit Sub
' MDB を作成します。
Set dbe = Wscript.CreateObject("DAO.DBEngine.36")
Set db = dbe.CreateDatabase(strDbPath, _
DB_LANG_JAPANESE,16)
' テーブルを作成します。
db.Execute "CREATE TABLE 売上テーブル " _
& "(販売コード AUTOINCREMENT " _
& "CONSTRAINT PrimaryKey PRIMARY KEY, " _
& "支店 TEXT(255), " _
& "販売日 DATETIME, " _
& "商品 TEXT(255), " _
& "個数 INTEGER, " _
& "売上 CURRENCY);"
db.Execute "CREATE INDEX 販売日 " _
& "ON 売上テーブル (販売日) WITH DISALLOW NULL;"
' レコードを追加します。
GenRecs db.OpenRecordset("売上テーブル", _
DB_OPEN_DYNASET, _
DB_APPEND_ONLY)
' 変数の参照を解放します。
db.Close: Set db = Nothing
Set dbe = Nothing
' ユーザーに結果を通知します。
MsgBox "に '" & FILE_NAME _
& "' を作成しました。", vbInformation
End Sub
VBScriptでMS-Accessファイル(mdb)作成
このコードが元ネタですが、間違いを訂正しました。(constの部分)
完成するファイルと場所は、
F:\Test1.MDB
です。Fドライブです。これは好みの場所に変更してください。
とりあえずmdbができて、テーブルができるところで止まりますが、できるだけでも成功でしょう。
###32bit強制で起動すること
ただし、このVbscipt 例によって32BitのCscriptでうごかすのでこのファイルが
c:\hoge\genDbDao.Vbsにある場合にはCmd.exeでコマンドプロンプト画面を起動し
%SystemRoot%\SysWow64\cscript.exe "C:\hoge\gendbdao.vbs"
として起動する必要があります。
###dbVersion Jet accessのバージョンの関係
Jet2.0 は dbVersion20 でAccess 2.0
Microsoft Jes 2.0 (1994) 2.0
dbVersion20 16 Microsoft Jet データベース エンジン Version 2.0。 1
Jet 3.0は dvVersion 30 で Access97/95
Microsoft Jet 3.0 (1995) ‘95 (7.0)
Microsoft Jet 3.5 (1996) ‘97 (8.0)
dbVersion30 32 Microsoft Jet データベース エンジン Version 3.0。
###上記のプログラムで作成されるMDBのヴァージョンを変えるには
Set db = dbe.CreateDatabase(strDbPath, _
DB_LANG_JAPANESE,16)
16だとdbversion20 accsess2.0のMDBファイルが
32だとdbVserion30 access97/95 のMdbファイルが
そして何も指定しないと自動的にdbVersion40でAccess 2003形式のmdbファイルが出来上がります。
dvVersion 40の場合はテーブルの指定などもスムーズでバグが起きません。
###課題は検証困難性
前回も述べたようにAccess97/95形式のMDBファイルは変換できる。
パワーシェルを用いる方法をこちらに記載している。
しかしAccess2.0は不明である。
しかし、Access2.0に至ると変換する方法がない。作成ができる以上変換もできそうなものだが。
またAccess97/95、Access2.0ではSQLでテーブルを作ることができずバグを起こして途中で止まってしまい、空のデータベースしか作成できない。
###参考
Database.Version プロパティ (DAO)
DatabaseTypeEnum 列挙 (DAO)
###おまけ
#####Access 95
[AC95] Access 95と以前のバージョンとの互換性について
Access 95 では、Access 1.1 と Access 2.0 のデータベース ファイルを Access 95 形式のデータベース ファイルへ変換することができます。
Access 2.0 のデータベース ファイルは互換性が保証されていますが、Access 1.1 の データベース ファイルは互換性が保証されていません。
■CompactDatabase メソッドによるデータベース変換
以前のバージョンのデータベースを Access 95 のデータベースに変換するには、
[ツール] メニューの [データベース] をポイントし、[変換] をクリックしてください。 データベース変換に CompactDatabase メソッドは使用できません。
CompactDatabase メソッドは、Jet データベース エンジンによって定義された
オブジェクトのみ変換することができます。
#####Access 2003
Access2.0 File Converter For Access 2003
Access 2003、Access 2002、または Access 2000 を使用して Access 2.0 データベースを変換する
#####Access 2007
Access 2.0 データベースを Access 2007 ファイルにインポートする