tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板 [ツリー表示へ]   [Home]
一括表示(VB6.0)
タイトルVB6からACCDB形式のACCESSを読み込めない
記事No16494
投稿日: 2019/08/09(Fri) 18:46
投稿者ピッピ

いつも参考にさせていただいてます
VB6のプログラムを改造するように言われたのですが
ACCESSのバージョンが上がっておりすごく基本的なことができません
ファイル拡張子がMDB形式からACCDB形式に変わったため

Micosoft Office nn.n Access Database Engine Object Library
を参照設定にするのとDAO3.6を外すのはわかりました

で試しにaaaという数値が1つだけ入ったACCDBファイルを作成し
以下のサンプルソースをまねして実行してみたのですがオープンで
失敗して先に進めないです
あまりに基本的なことで検索しても出てきません
環境はwindows10(64BIT)+ACCESS2019(64BIT)です
VB6.0でサービスパックやランタイムは入れたつもりです
よろしくお願いします

    
    Dim path As String
    Dim db   As DAO.Database
On Error GoTo proc_err
    '-----------------------------'
    'DBパス'
    path = "C:\aaa\aaa.accdb "

    'DBオープン'
    Set db = OpenDatabase(path)

    'DB接続成功'
    Debug.Print "DB接続成功"
    '-----------------------------'
    GoTo proc_end
proc_err:
    Debug.Print Error
proc_end:
    If Not db Is Nothing Then db.Close
    Set db = Nothing

[ツリー表示へ]
タイトルRe: VB6からACCDB形式のACCESSを読み込めない
記事No16495
投稿日: 2019/08/10(Sat) 10:19
投稿者魔界の仮面弁士
VB6 は 32bit アプリであるため、16bit DLL や 64bit DLL はロードできません。
VB6 から 32bit バージョンの Access Database Engine を使うようにしてください。
http://note.phyllo.net/?eid=1106279

Access 2019 は、特に指定しなければ 64bit 版がインストールされるはずですが、
明示的に 32bit 版を指定することもできたはずです。(ただし両者の共存はできません)
※.accdb そのものは 32bit/64bit の区別がありません。それを扱うライブラリ側の問題。

もしも Office を 64bit バージョンにすることが決定事項である場合には、
VB6 での開発は諦め、64bit 開発のために VB.NET 等への移行を行うことを検討してみてください。
あるいは 64bit VBA で記述するようにして、それをアウトプロセスとして呼び出すとか。


32bit バージョンの ODBC Driver や OLE DB Provider がインストールされているのなら、
VB6 から ADODB 等で接続できるようになる可能性もなくはないのですが、DAO からの移行は
発生することになりますし、そもそも bit 数の混在は基本的にできないので、
64bit Office 環境で 32bit Driver がインストールされることはほぼ無いかと…。

[ツリー表示へ]
タイトルRe^2: VB6からACCDB形式のACCESSを読み込めない
記事No16496
投稿日: 2019/08/12(Mon) 19:53
投稿者ピッピ
ありがとうございます
今の方法は諦めます

[ツリー表示へ]
タイトルRe^3: VB6からACCDB形式のACCESSを読み込めない
記事No16497
投稿日: 2019/08/14(Wed) 13:31
投稿者魔界の仮面弁士
参考資料として:

[32/64ビット版双方のAccess ODBCドライバを共存させる方法]
https://www.idearu.info/article/data/ds1046

[ツリー表示へ]