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

[戻る]
カノン 2005/01/12(水) 19:34:06
お世話になります。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内の
テーブルをオープンする度に必ず直前で入れておかなければ
ならないものでしょうか?
それとも、どこかに一度だけでよいのでしょうか?

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

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

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

カノン 2005/01/12(水) 21:09:31
あれ?MDBがAccess97形式であろうと2000形式であろうと

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

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

古いスレッドには追加発言できません。