DAOSDKのDAO3.6対応
何年も前から客先に納入しているプログラムで、先日客先から「WindowsXP(SP2)で動かないよ」とのお叱りを受け、調べてみたら、該当プログラムが対応しているDAOのバージョンが古すぎるためでした。
WindowsXPでは(Windows2000でも)、標準でDAO3.6(+Jet4.0)が入っているのですが、該当プログラムは何年も前に作った物なのでDAO3.5にしか対応していなく、それが動作しない原因らしく、DAO3.6に対応する事になりました。
なのに、ググってもほとんど情報を見つけられず苦労しました…。
上の情報は、VisualStudio6.0サービスパックのリリースノート中の記述を元にしてます。ちゃんとリリースノートは読みましょうね。
WindowsXPでは(Windows2000でも)、標準でDAO3.6(+Jet4.0)が入っているのですが、該当プログラムは何年も前に作った物なのでDAO3.5にしか対応していなく、それが動作しない原因らしく、DAO3.6に対応する事になりました。
いまどきDAOですか?という感じだけど、いちおうφ(..)メモメモ。
■ MFC DAO クラスの場合 ■
CDaoXxxxxxという、MFC DAOクラスを使っている場合の修正は簡単で、「共有DLLでMFCを利用」なプロジェクトなら、
AfxGetModuleState()->m_dwVersion = 0x0601;
とするだけでOKらしい。
「MFCのスタティックライブラリを使用」の場合は、ちょっと面倒で、MFCのソースを書き換えないといけないらしい。
これは、VisualC++6.0(SP3以降が必要)の話なので、最近の.NETなら、何もしなくても再コンパイルすれば動くかなぁ、と推測。
"らしい"が多いけど、この辺の情報はググればすぐに見つかるので問題ないでしょう。
■ DAO SDK クラスの場合 ■
上の、MFC DAO クラスの話が"らしい"ばかりなのは、該当プログラムは非MFCアプリで、MFCが嫌い&書けない私は、DAO SDKクラスを使ってるからです(^_^;)
それ以外にもDAO SDKクラスは、MFC DAOクラスに比べて、
- スレッドセーフティで、マルチスレッド環境で使える。
- GetRows()/GetRowEx()で、一括取り出しが出来るので、かなり高速。
- そして、MFCが不要!(^_^;)
DAO SDKクラスを使って、DAO3.6に対応させるのも(解ってしまえば)簡単です。
-
まず、DAO3.6に対応した、DAO SDKのソースを取得します。
場所は、VisualC++6.0のSP3以降サービスパックの、Supportディレクトリです。 -
ソースをビルドして、DAO3.6対応なDAO SDKクラスDLLを作成します。
先ほどのディレクトリに、dbdao.dswがあるので、それを開いてビルドします。
[ビルド]メニューの[バッチ ビルド]をクリックすると、複数のDLLを同時に構築できます。 - あとはDAO3.5の時と同じように、DAO3.6対応DAO SDKのライブラリをリンクして終わり。
なのに、ググってもほとんど情報を見つけられず苦労しました…。
上の情報は、VisualStudio6.0サービスパックのリリースノート中の記述を元にしてます。ちゃんとリリースノートは読みましょうね。
Similarity Search
Trackback
このエントリにTrackBackするには、以下のURLにTrackBack pingを送ってください。
※:スパム対策しています。予想外のエラーが発生した場合は、コメント欄でご報告いただけると嬉しいです。
※:スパム対策しています。予想外のエラーが発生した場合は、コメント欄でご報告いただけると嬉しいです。
Trackback URL is >> |
Comments
Post a comment
このエントリに対してコメントを追加するには、以下フォームに記入して [追加]ボタンを押下してください。
- 必須な項目は"コメント"のみです
- 名前等は匿名でかまいません
- E-Mail/URLを記入した場合は公開されます
- HTMLタグは使用できません(実体参照に変換されます)
- コメント内のURLは自動的にリンクが張られます
- スパム対策のため、ひらがなの含まないコメントを書くことは出来ません
- HTTP Cookieを利用して、名前やE-Mail/URLの情報を記録させることが出来ます