LoginSignup
0
1

More than 5 years have passed since last update.

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

Last updated at Posted at 2017-06-24
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)作成
このコードが元ネタですが、間違いを訂正しました。(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 ファイルにインポートする

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1