お世話になります。VC++6(SP4)Win2000ユーザーです。
VC++からDAOでAccessのMDBファイルを操作する場合
Access2000ヴァージョンのMDBファイルに対しては
次の一行を付け加えればいいということですが
AfxGetModuleState()->m_dwVersion = 0x0601; // for ACCESS 2000
Access97以前のMDBファイルを操作する場合は
0x0601ではない別のナンバーを設定すればいいのでしょうか?
まぁ、そういう設定をしなくても、デフォルトでは?97形式を
操作するようにコンパイルされるみたいではありますが?
今、テーブルオープンする度に、その1行を加えていて
MDBの形式をAccess97⇔2000で替える時には、あちこちを
修正しなくてはいけないもので、例えば
ヘッダーファイルを用いて次のような定義と条件コンパイル指定して
#define OFFICE_97
#ifndef OFFICE_97
#define MDB_NO 0x0601 // Access2000
#else
#define MDB_NO ? // Access97
#endif
オープン命令の前には、下記のようにしておいて
MDBのヴァージョンを変更する時はヘッダーファイル内を
修正するだけで済ませれないものでしょうか?
AfxGetModuleState()->m_dwVersion = MDB_NO;
それと、この指定は↑1つのプログラムで1つのMDB内の
テーブルをオープンする度に必ず直前で入れておかなければ
ならないものでしょうか?
それとも、どこかに一度だけでよいのでしょうか?
自己レスですいません。
0x0601というナンバーはMFCのヴァージョンナンバーなんですね^^;
下記のようなホームページがありますが・・・(自分にはちょっと難しいかも)
http://openlab.ring.gr.jp/kitaro/public_html/lab.c3/uda_009.htm
ならば、Access97形式のMDBに対しては0x0600を設定すればいいのでしょうかね?
MDB形式97⇔2000で、もっとスマートな切り替え方法がありますでしょうか?
あれ?MDBがAccess97形式であろうと2000形式であろうと
AfxGetModuleState()->m_dwVersion = 0x0601; // for ACCESS 2000
これで↑どちらでも上位互換で問題無いですかね?^^;