dポイントプレゼントキャンペーン実施中!

WINDOWS XP
ACCESS 2002
MSDE
を使用しています。

ADOでストアドプロシージャを作成して
作成したストアドプロシージャをレコードソースとしたフォームを開こうとしたところ
エラーが発生してしまいます。

以下、ソースを大まかに示します

'-------------------------------------------------
sub test_Click()
On Error GoTo err_test

Dim Dname As New ADODB.Connection

Dname.Open
Dname.Execute "CREATE PROCEDURE q AS " + vbCrLf + _
" SELECT a FROM b WHERE (c = 1) ORDER BY d

DoCmd.OpenForm "F" ,

Exit Sub
err_test:
MsgBox "err : " + Err.Description

End Sub

'-------------------------------------------------

開こうとしているフォーム"F"のレコードソースには
作成したストアドプロシージャ"q"
を指定しています。

DoCmd.OpenForm で以下のエラーが発生します。

エラー番号は"2580"
メッセージは"このフォームまたはレポートで指定されているレコード ソース 'q' は存在しません。"


Access再起動して、ストアドプロシージャを作成せずにフォームを開くと
フォームは開けるのですが、
作成した直後にフォームを開きたいと考えております。

なにが原因なのでしょうか?
ご回答のほど、何卒よろしくお願いいたします。

A 回答 (1件)

おそらくトランザクションのオートコミットを利用しているからとか?


トランザクションを明示してもだめ?
これでだめならフォームのリフレッシュかな?

Dname.Open STR_HOGE_CONNECTIOIN

Dname.BeginTrans

Dname.Execute STR_HOGE_SQL

Dname.CommitTrans

DoCmd.OpenForm STR_HOGE_FORM
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

結局フォームを開く前にテーブルを動的に作成し、
VBA上でレコードを追加、
フォームを開いた時にレコードソースを定義しなおして
再表示。

という工程をへて、思ったような表示がなされるように
なりました。


ご協力いただきまして、本当にありがとうございました。

お礼日時:2005/02/01 15:01

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