タイトル : Re^6: DAO3.6+Access97 投稿日 : 2009/09/18(Fri) 22:25 投稿者 : 魔界の仮面弁士
> > あれからいろいろ検証してみた結果、ついさっきデータベースファイル名が 「System.mdb」だと症状が現れることが確認できました。 > > 予約語だとまずいのですかね・・無知なのかバグなのか・・すっきりしないまま原因は解明できました。 > http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1225970817 > 予約語のようです・・・ 予約語といって良いのかどうかは分かりませんが、system.mdb や system.mdw は、 ワークグループ情報ファイルの既定のファイル名となっています。 その設定さえ変更すれば、System.mdb というファイル名を通常利用する事も可能です。 # JET では、ファイル名の制限が比較的緩やかになっています。VB6 とは異なり、 # Unicode ファイル名もサポートしていますし、"C:\Folder\Sample:TEST.MDB" # といった、代替ストリームさえも利用可能となっています。 さてその設定ですが、DAO の場合には、DBEngine.SystemDB プロパティ、 ADO の場合には、OLE DB の "Jet OLEDB:System database" 動的プロパティで 指定する事ができます。 これらの指定が無い場合には、レジストリの DAO 3.5x … HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\3.5\Engines DAO 3.6 … HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines DAO 12.0 … HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\Access Connectivity Engine\Engines にある SystemDB という文字列値が初期値として使用されます。 (そしてこの SystemDB という項目の初期値が、"system.mdb" となっています) ちなみに、上記レジストリの Jet 設定は、OS 全体に影響を与えるものですが、 DBEngine.IniPath (ADO では "Jet OLEDB:Registry Path")を併用することで、 アプリ別の設定エントリを用意することも出来るようになっています。 なお、Microsoft Access からの操作の場合:たとえば Access 97 ならば、 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\8.0\Access\Jet\3.5\Engines の方の SystemDB が利用される事になっています。 (こちらの既定値は、"system.mdb" ではなく "system.mdw" です) |