Access 2016 64 bit Windows 10 で Access 97/95 Access2.0 のMDBファイルを作る

```vbnet:genDbDao.vbs
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)作成](http://kazu-riders.blog.so-net.ne.jp/2009-03-27)
このコードが元ネタですが、間違いを訂正しました。（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ファイルは変換できる。
パワーシェルを用いる方法を[こちら](http://qiita.com/Q11Q/items/a554aa07f1c25fbeb3f8)に記載している。
しかしAccess2.0は不明である。
しかし、Access2.0に至ると変換する方法がない。作成ができる以上変換もできそうなものだが。
またAccess97/95、Access2.0ではSQLでテーブルを作ることができずバグを起こして途中で止まってしまい、空のデータベースしか作成できない。

###参考
[Database.Version プロパティ (DAO)](https://msdn.microsoft.com/ja-jp/library/office/ff192887.aspx)
[DatabaseTypeEnum 列挙 (DAO)](https://msdn.microsoft.com/ja-jp/library/office/ff821447.aspx)

###おまけ
#####Access 95
[[AC95] Access 95と以前のバージョンとの互換性について](https://support.microsoft.com/ja-jp/help/404930)

>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](http://download.cnet.com/Access-2-0-Converter-for-Access-2003/3000-2070_4-10743423.html)
[Access 2003、Access 2002、または Access 2000 を使用して Access 2.0 データベースを変換する](https://support.office.com/ja-jp/article/Access-2-0-%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9%E3%82%92-Access-2007-%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AB%E3%82%A4%E3%83%B3%E3%83%9D%E3%83%BC%E3%83%88%E3%81%99%E3%82%8B-2e9d8851-101d-4407-a881-65d06bb12aa7#bm3)

#####Access 2007
[Access 2.0 データベースを Access 2007 ファイルにインポートする](https://support.office.com/ja-jp/article/Access-2-0-%e3%83%87%e3%83%bc%e3%82%bf%e3%83%99%e3%83%bc%e3%82%b9%e3%82%92-Access-2007-%e3%83%95%e3%82%a1%e3%82%a4%e3%83%ab%e3%81%ab%e3%82%a4%e3%83%b3%e3%83%9d%e3%83%bc%e3%83%88%e3%81%99%e3%82%8b-2e9d8851-101d-4407-a881-65d06bb12aa7?ui=ja-JP&rs=ja-JP&ad=JP)