ACCESS95のコードをVB6.0に変換したい

解決


悩んでいます  2011-09-06 16:40:37  No: 103027  IP: [192.*.*.*]

WinXP SP3, VB6.0 SP6, MicrosoftDAO3.6ObjectLibraryを
参照設定しています。

ACCESS95の下記コードを、VB6.0で実行すると
実行時エラー424(オブジェクトが必要です)が
発生します。

どのように、オブジェクトを設定していいのかわかりません。
教えてください。


    Dim dbs As DAO.Database
    Set dbs = CurrentDb

編集 削除
魔界の仮面弁士  2011-09-07 00:17:03  No: 103028  IP: [192.*.*.*]

Access の CurrentDb は、現在開かれている mdb を表します。

しかし VB の場合は、mdb はまだ開かれていませんので、
それを自分で開かなければなりません。たとえばこのようになります。

  Dim de As DAO.DBEngine
  Set de = New DAO.DBEngine
  Dim ws As DAO.Workspace
  Set ws = de.CreateWorkspace("#Default Workspace#", "Admin", "")
  Dim db As DAO.Database
  Set db = ws.OpenDatabase("C:\db1.mdb")
  Dim rs As DAO.Recordset
  Set rs = db.OpenRecordset("SELECT * FROM TBL")


なお、Workspace は DBEngine はグローバルオブジェクトであるため、
DAO への参照設定をしている場合は、実はいきなり
  Set db = OpenDatabase("C:\db1.mdb")
というコードを書いても開くことができます。

とはいえ、参照設定せずにレイトバインドで実行させる場合においては
上位オブジェクトを省略できないため、DBEngine から辿る必要があります。


以下、今回の件とは微妙に異なりますが、一応参考情報として。
http://madia.world.coocan.jp/cgi-bin/VBBBS/wwwlng.cgi?print+201011/10110013.txt

編集 削除
悩んでいます  2011-09-12 10:31:49  No: 103029  IP: [192.*.*.*]

魔界の仮面弁士さん

返信遅くなりまして申し訳ありません。
おかげさまで、接続できるようになりました。
ありがとうございます。

編集 削除