tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
[ツリー表示へ]  [ワード検索]  [Home]

タイトル 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 をサポートしません。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。