DAOでのACCESS97と2000形式のMDB操作 – プログラミング – Home

通知
すべてクリア

DAOでのACCESS97と2000形式のMDB操作


カノン
 カノン
(@カノン)
ゲスト
結合: 20年前
投稿: 22
Topic starter  

お世話になります。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内の
テーブルをオープンする度に必ず直前で入れておかなければ
ならないものでしょうか?
それとも、どこかに一度だけでよいのでしょうか?


引用解決済
トピックタグ
カノン
 カノン
(@カノン)
ゲスト
結合: 20年前
投稿: 22
Topic starter  

自己レスですいません。
0x0601というナンバーはMFCのヴァージョンナンバーなんですね^^;
下記のようなホームページがありますが・・・(自分にはちょっと難しいかも)

http://openlab.ring.gr.jp/kitaro/public_html/lab.c3/uda_009.htm

ならば、Access97形式のMDBに対しては0x0600を設定すればいいのでしょうかね?
MDB形式97⇔2000で、もっとスマートな切り替え方法がありますでしょうか?


返信引用
カノン
 カノン
(@カノン)
ゲスト
結合: 20年前
投稿: 22
Topic starter  

あれ?MDBがAccess97形式であろうと2000形式であろうと

AfxGetModuleState()->m_dwVersion = 0x0601; // for ACCESS 2000

これで↑どちらでも上位互換で問題無いですかね?^^;


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました