タイトル | : Re: VB6アプリでwin11にすると実行時エラー3078その後 |
記事No | : 16722 |
投稿日 | : 2025/05/28(Wed) 10:31 |
投稿者 | : 魔界の仮面弁士 |
> win10PC内のAccess97データーベース(mdb)を見に行くと実行時エラーが出ます mdb ファイルは、ローカルドライブ上に配置して運用してください。
Access はファイル共有型データベースであることから、 共有ネットワーク ドライブ上にある mdb ファイルを 直接扱うことは推奨されません。
> win11のVB6からメーカーマスタを起動したら正常にパスが通り > アプリが正常起動して内容の読み書きが通常に出来ました。 作成されたアプリケーション固有の事情なので、それが何を意味するのかは分かりませんが、 内部に設定情報があって、それがメーカーマスタを起動したら、最新値に更新されたことで 正しく動作するようになった…ということですか?
元の作りもよく分からない、ソースコード等も公開できない、という状況では どうにも答えようがありません。mdb か VB6 のいずれも公開できそうには無いですか?
> サーバーもwin10からwin11にしても サーバー用途での運用時は、Windows 10/11 のソフトウェアライセンス条項にある 2. インストールおよび使用権 c. 制限「お客様は次の行為を行うことはできません」 (v) 「本ソフトウェアをサーバーソフトウェアとして使用すること、もしくは」 に抵触しないようにご注意ください。 第2条 (d) の (iii) 項で許可された範囲で使う分には OK です。
> そこでAccess97のMDBをAccess2003に変換してみてVB6を起動してみると > 「実行エラー3343データーベスの形式○○○.mdbを認識出来ません。」のエラー VB6 のリリースは 1998年。サポートしていたのは Access 97 です。 当時は Access 2000 すらまだ無い時期でした。
その後、VB6 Service Pack 4 で Access 2000 に対応しました(Windows ME が VB6 SP5 世代です)。 なお Vista 以降の Windows であれば、Service Pack 6 相当の VB6 ランタイムが含まれています。
2003 を扱えるかどうかは、「その VB6 が、どの方法で mdb を開いているのか」によるわけです。
最新の Service Pack が適用されていると仮定して、 mdb に VB6 から接続するとなると、下記のような選択肢があります。 元プログラムの接続方法を確認できますか? (今回は mde ではなく mdb とのことなので、Access Runtime での呼び出しは含めていません)
(一) ADODB (ActiveX Data Object) (二) ADODC (ADO データコントロール) (三) Data (データ コントロール) (四) DAO (Data Access Object) (五) RDO (Remote Data Object) (六) RDC (リモート データ コントロール) (七) ODBCDirect API
可能性が高いのは一か四であろうとは思います。 五は VB6 Enterprise Edition が必要なのでライセンス面でのハードルが高く、 七に至っては、処理が複雑になりすぎるため、普通はまず使われません。
一の場合は、プログラムで指定されている「OLE DB Provider」の切り替えが必要になることがあります。 Microsoft.Jet.OLEDB.3.51 ⇒ Access 95, Access 97 Microsoft.Jet.OLEDB.4.0 ⇒ Access 2000, Access 2003 Microsoft.ACE.OLEDB.12.0 ⇒ Access 2007, Access 2010 Microsoft.ACE.OLEDB.15.0 ⇒ Access 2013 Microsoft.ACE.OLEDB.16.0 ⇒ Access 2016 ※上位のプロバイダは、下位バージョンの Access も開けますが、逆はできません。
四の場合は、以前回答したように、参照設定している DAO のライブラリバージョンが DAO 3.0 ⇒ Access 95 DAO 3.5 ⇒ Access 97 DAO 3.6 ⇒ Access 2000, Access 2003 ACEDAO 12.0 ⇒ Access 2010 などと変わります。
上位のミドルウェアは、下位バージョンの Access データベースファイルを扱えますが、 下位のミドルウェアで、上位バージョンの Access データベースファイルを扱おうとすると、 ファイル形式を認識できず、実行時エラーになってしまうでしょう。
|