VB.NET+ADOで作ったアプリをWin98に対応させたい

解決


sumi  2006-02-23 04:08:23  No: 94340

VB.NET+ADOにて作成したアプリがWin2k環境では動作するのですが
Win98環境下では
adoConnect.Execute("SQL")  実行時に
インターフェースADODB._RecordeSetのQueryInterfaceに失敗しました。
とエラーが発生し動作しません

アプリ自体はセットアッププロジェクトで作成したmsiにてインストールしています。

ビルド時の設定抜けのためWin98に対応できてないのか
セットアッププロジェクトで必要なファイル(DLL等が)足りてないためだと思うのですが
何が抜けているのでしょうか。


魔界の仮面弁士  2006-02-23 05:25:23  No: 94341

# その組み合わせで開発・配布した事が無いので、役には立てないかも。

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


sumi  2006-02-23 18:00:37  No: 94342

レスありがとうございます。
MDACのバージョン確認したところ
Win2kのほうはバージョン2.71
Win98のほうはバージョン2.1でした

使用しているほうはPIAです。
参照時にCOMのMicrosoft ActiveX Data Objects 2.7 Libraryを選択しました。

明らかにバージョンが違いますね(今気がつきました)

使用してるのはVS2003です。
Officeは97なので再配布は多分大丈夫かと。


魔界の仮面弁士  2006-02-23 18:29:10  No: 94343

> 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 コンポーネントの多くは、バイナリ互換を保っているので、
  開発環境:下位バージョン
  実行環境:上位バージョン
というコード(アーリーバインディング)は、動作可能ですが、
  開発環境:上位バージョン
  実行環境:下位バージョン
の場合、基本的には動作しないと思いますよ。
# 下位互換インターフェイスを使ってコーディングしている場合は話が別。


Dental  2006-02-23 18:46:00  No: 94344

> 使用しているほうは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
[フィードバックの送信] を押して文句書いておこうかね。


sumi  2006-02-23 19:41:46  No: 94345

ん〜
Win98のほうにMDAC2.7いれれるなら良いですが
他のソフトに影響出すとまずいので

Win2k版とWin98版で参照しているライブラリがそれぞれ2.7と2.1のバージョンを
作ったほうが無難なのだろうか

.NETのadodbを参照させて一度やってみます。


Dental  2006-02-23 20:24:19  No: 94346

基本的には、ADO.NET に全面移行する事を検討すべきって事で。

OleDbDataAdapter.Fill(DataTable, Recordset) を使っているなら、
上位バージョンの MDAC を入れる必要があると思う。

どうしても、MDAC 2.1 環境で動かすなら、上記のメソッドは使わず、
かつ、参照設定無しのレイトバインドで行えば動くかもしれない。

MDAC の更新を躊躇するなら、非.NET な VB で開発した方が無難だと思われ。
# でも VB6 でも、Servie Pack のバージョンによっては、やっぱり v2.1 は古すぎ…。


sumi  2006-02-23 21:30:48  No: 94347

ん〜、やっぱりMDAC触らずには無理でした
当然ながらMDACを2.7にしたら動きました。

個人的にはMDAC更新してもいいと思うんですが、いろいろとしがらみが(底辺はつらい)
許可が下りればMDAC更新で解決にしちゃいます。


sumi  2006-02-23 22:57:14  No: 94348

MDAC更新の許可出たので閉じます。
お二方様ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加