アプリ版:「スタンプのみでお礼する」機能のリリースについて

Accessプロジェクトを使用しています。

Dim strSQL As String
Dim DBS As Database
Dim RST As DAO.Recordset
Set DBS = CurrentDb
Set RST = DBS.OpenRecordset("TESTDATA", dbOpenDynaset,dbReadOnly)

「実行時エラー'91':
オブジェクト変数またはWithブロック変数が設定されていません。」
と出てきます。デバッグを押すと、
上記最終行でSTOPします。 次のように変更しても同じでした。
Set RST = DBS.OpenRecordset("TESTDATA")
又は
Set RST = DBS.OpenRecordset("TESTDATA", dbOpenDynaset)

ヘルプ等を見ると、Jetワークスペースでのみ 使用可と出てきます。

ADO,DAO,OpenRecordset等が理解しきれていないように思うのですが、
Access97(DAO?)では 何も出てこなかった上記のような内容、
何故Accessプロジェクトでは 上手くいかないのでしょうか?

A 回答 (1件)

 VBAの画面を開いて、ツールの参照設定を見てごらん。

Microsoft ActiveX Data Objects x.x Libraryと、Microsoft DAO x.x Objects Libraryの両方にチェックが入っているんじゃないかなぁ・・・・。

 もしそうなら、恐らくActiveX Data Objectsの方が上になっているはずだ。DAOの方が上にくるようにしてあげよう。これで一応は解決する・・・・はず。

 DAOとADOは、ものすごく簡単(そして不正確)に言ってしまうと
・DAOはMDB内部を操作するもの
・ADOは不特定多数のDBを操作するもので、Jet DBを指定すればMDB内部も操作できるもの
となる。

 Access2000以上はデフォルトでADOを使う設定になっているのだが、例えばAccess97からインポートしたようなMDBを使うと、そちらはDAOを使う設定になっていてバッティングが起こる事もある。

 参照設定でDAOだけにチェックを入れてやってみてごらん。
 もし最初からそうなっていたら私にはお手上げだ。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す