タイトル : Re^8: VB6アプリでwin11にすると実行時エラー3078 投稿日 : 2024/10/07(Mon) 14:18 投稿者 : 魔界の仮面弁士
| どこに問題があるのか、まだ何とも言えませんが、元のソースが 相当古い環境で作られているようなので、現行環境での動作を保証するのが だんだんと難しくなってきていますね。 > Access 97 と思います 「データベース (Access 97 ファイル形式)」記載があります Access 97 というと、世代的には VB5 時代ですね。 (VB6 は、Service Pack 4 以降で Access 2000 形式に対応しました) 97 形式を開けるということは、Access 2013 未満のバージョンをお使いのようですが、 手元にある Microsoft Access は、どのバージョンですか? 2003 以下の場合は[ヘルプ]-[バージョン情報]から、 2007 以降ではファイルメニューの[アカウント]から確認できます。 https://tasukete-access.com/2023/06/21/accessintro_version/ また、実行環境の Windows 11 のバージョンも教えてください。 ([Win]+[R] 後に "winver" と書いて OK を押すと、バージョンが表示されます) ※VB6 アプリの実行環境と、Access のインストールしてある PC が異なる場合は、 両方の OS バージョンを確認させてください。 > オブジェクト内のテーブル内の名前は「納品データ」になっております > (テーブル内文字をコピーてみましたので全角カナになっていると思います) Access で確認した mdb 内には、テーブル(もしくはクエリ)がある状態で、 フォーム / レポート / モジュール は存在しない状態になっているでしょうか。 > ファイルの照合順序は難しくてわかりません(すみません) > 違うかもしれませんがAccessファイルのオプション内で「新規データベースの並び順序(N):」のセレクトで「日本語」 > になっています。 たしかにそれも照合順序なのですが、そこで確認できるのは、 「新しく mdb ファイルを作成したときの設定」なのです。 現在の mdb ファイルの設定内容を確認するための画面は存在しませんので、 前回の回答のとおり、プログラムから確認する必要があります。 mdb の照合順序を VB6 側で確認する場合は、既存の Set RS_D = DB.OpenRecordset("納品データ", dbOpenDynaset) の直前に MsgBox DB.CollatingOrder を挿入して実行してみてください。 照合順序を Access 側で確認する場合は、[Alt]+[F11]などで VBA 開発画面に切り替えて [Ctrl]+[G] で表示される「イミディエイト」ペイン上に Debug.Print CodeDb.CollatingOrder と書いて Enter で実行してみてください。 他にも確認しておきたい点があります。 Access VBA の開発画面で [ツール]-[参照設定] VB6 のメニューで [プロジェクト]-[参照設定] をそれぞれ選択してみてください。 幾つかのチェックボックスが並んでいると思いますが、 選択された項目の中に「参照不可」と表示されているライブラリはありませんか? (参照不可となっている項目が無いなら OK です) 両方ともに参照不可が無いことを確認したら、 さらに VB6 側の参照設定画面を見てください。チェックされた項目のなかに ・Microsoft DAO {バージョン番号} Object Library もしくは ・Microsoft Office {バージョン番号} Access database engine Object のいずれか(もしくは両方)があると思います。その項目に書かれているバージョン番号を教えてください。 --- 以下蛇足 --- 話を聞く限り、相当古いシステムのようなので、現行環境で動かすとなると、 色々とバージョン依存性に気を配らないといけなさそうです。 Access 95 形式の .mdb は、DAO 3.0 が使われます。 (Jet Database Engine 3.0) Access 97 形式の .mdb は、DAO 3.5 が使われます。 (Jet Database Engine 3.5 / 3.51 / 3.52) Access 2000 と 2003 では、DAO 3.6 が使われます。 (Jet Database Engine 4.0 / 4.0 Service Pack 1〜8) Access 2007 以降では .mdb の代わりに ACEDAO が使われます。(Access Database Engine 12.0 / 14.0 / 15.0 / 16.0 ) ・Access 2010 のデータベースエンジン(12.0)は、Access 1.0 / 2.0 の .mdb をサポートしません。 ・Access 2013 のデータベースエンジン(14.0)は、Access 95 / 97 の .mdb をサポートしません。 |
をクリックするとツリー全体を一括表示します)
- VB6アプリでwin11にすると実行時エラー3078 - はる 24/09/26-18:34No.16692