VB.NET+ADOにて作成したアプリがWin2k環境では動作するのですが
Win98環境下では
adoConnect.Execute("SQL") 実行時に
インターフェースADODB._RecordeSetのQueryInterfaceに失敗しました。
とエラーが発生し動作しません
アプリ自体はセットアッププロジェクトで作成したmsiにてインストールしています。
ビルド時の設定抜けのためWin98に対応できてないのか
セットアッププロジェクトで必要なファイル(DLL等が)足りてないためだと思うのですが
何が抜けているのでしょうか。
# その組み合わせで開発・配布した事が無いので、役には立てないかも。
Win98 にインストールしてある MDAC のバージョンは幾つですか?
また、開発環境の MDAC のバージョンは、それと一致していますか?
使用しているのは、PIA (Adodb.dll) ですか?
それとも、IA (Interop.ADODB.dll) ですか?
http://support.microsoft.com/kb/318559/ja
# ちなみに、VS2002/2003付属のPIAは再頒布可能ですが、
# Office2003付属のPIAは再頒布できないそうです。
あとは、このあたり。
http://support.microsoft.com/kb/321688/en-us
http://groups.google.co.jp/group/microsoft.public.dotnet.framework.interop/browse_frm/thread/3ec67a78a4c639b5/3f1612ad526ffe63?lnk=st&rnum=1&hl=ja
http://groups.google.co.jp/group/microsoft.public.dotnet.framework.adonet/browse_frm/thread/267718a18c131e38/5d2bf0ffa79cacb4?lnk=st&rnum=3&hl=ja
レスありがとうございます。
MDACのバージョン確認したところ
Win2kのほうはバージョン2.71
Win98のほうはバージョン2.1でした
使用しているほうはPIAです。
参照時にCOMのMicrosoft ActiveX Data Objects 2.7 Libraryを選択しました。
明らかにバージョンが違いますね(今気がつきました)
使用してるのはVS2003です。
Officeは97なので再配布は多分大丈夫かと。
> MDACのバージョン確認したところ
参考までに、下記の MDAC バージョンの項も目を通しておいて下さい。
http://www.microsoft.com/japan/msdn/netframework/previous/v1.0/sysreqs/
http://www.microsoft.com/japan/msdn/netframework/productinfo/sysreqs/
> Win98のほうはバージョン2.1でした
2.1 は、幾らなんでもバージョンが低すぎるでしょうね。(^^;
2.5 以上とそれ以前では、サポートしているオブジェクトの数も
メソッドの数も違っていますし。
.NET Framework と MDAC を配布するインストーラの作成手順について、
下記のサイトも参考にしてみてください。
http://dobon.net/vb/dotnet/deployment/dotnetbootstrap.html
> 明らかにバージョンが違いますね(今気がつきました)
ActiveX コンポーネントの多くは、バイナリ互換を保っているので、
開発環境:下位バージョン
実行環境:上位バージョン
というコード(アーリーバインディング)は、動作可能ですが、
開発環境:上位バージョン
実行環境:下位バージョン
の場合、基本的には動作しないと思いますよ。
# 下位互換インターフェイスを使ってコーディングしている場合は話が別。
> 使用しているほうはPIAです。
> 参照時にCOMのMicrosoft ActiveX Data Objects 2.7 Libraryを選択しました。
PIA を選択するなら、COM の方ではなく、.NET の方の adodb を選択するのが吉。
http://support.microsoft.com/kb/318559/ja
COM の方を選択しても、PIA が選択される環境もあるって聞いた事があるんだけど、
自分のトコでは、.NET の方を選択しないと PIA は組み込まれませんでした。
でも、下記のサンプル見ると、COM 参照を例示してるね…なんだこりゃ (--;
http://support.microsoft.com/kb/315974/ja
[フィードバックの送信] を押して文句書いておこうかね。
ん〜
Win98のほうにMDAC2.7いれれるなら良いですが
他のソフトに影響出すとまずいので
Win2k版とWin98版で参照しているライブラリがそれぞれ2.7と2.1のバージョンを
作ったほうが無難なのだろうか
.NETのadodbを参照させて一度やってみます。
基本的には、ADO.NET に全面移行する事を検討すべきって事で。
OleDbDataAdapter.Fill(DataTable, Recordset) を使っているなら、
上位バージョンの MDAC を入れる必要があると思う。
どうしても、MDAC 2.1 環境で動かすなら、上記のメソッドは使わず、
かつ、参照設定無しのレイトバインドで行えば動くかもしれない。
MDAC の更新を躊躇するなら、非.NET な VB で開発した方が無難だと思われ。
# でも VB6 でも、Servie Pack のバージョンによっては、やっぱり v2.1 は古すぎ…。
ん〜、やっぱりMDAC触らずには無理でした
当然ながらMDACを2.7にしたら動きました。
個人的にはMDAC更新してもいいと思うんですが、いろいろとしがらみが(底辺はつらい)
許可が下りればMDAC更新で解決にしちゃいます。
MDAC更新の許可出たので閉じます。
お二方様ありがとうございました。
ツイート | ![]() |