大人になっても苦手な食べ物、ありますか?

AccessとVBA、SQLServerの組み合わせでアプリケーションを作っています。

VBAの中で
DoCmd.RunCommand acCmdSaveRecord
を実行する行でエラーが発生します。

MsgBoxでErr.NumberとErr.Descriptionを確認すると、
16389 予約済みエラーと表示されます。

この番号とメッセージで調べてはいるのですが、英語のページしかヒットせず、
翻訳してもよくわからず、苦戦しています。

何か情報をお持ちの方は教えてください。

A 回答 (1件)

AC2003持っていないので試してみることができないのですが、なんとなく連結フォームからの捜査を行うときにでるエラーのようですね。



http://pressf1.pcworld.co.nz/showthread.php?t=83 …
によると、

マルチユーザーデータベースとしているなら、
フォームをデザインモードで開き、プロパティのデータタブのレコードロックをEdited Record(編集済みレコード?)にしなさい。

DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
と書いているなら、
DoCmd.RunCommand acCmdSaveRecord
としてみろ。

それでもダメなら、セーブする代わりにレコードを移動させて戻ってくることによって、フォーム上の変更をDBに反映させることができる。
どうせレコードを移動させるときに保存されるのだから、この時点での保存は本当に必要なのかどうか考えてみてください。

と書いてあります。

この回答への補足

回答ありがとうございます!
訳していただけることで、解決策を考えやすくなりました。
また、きちんと解決しましたらお礼の欄に報告します。

補足日時:2011/04/13 10:53
    • good
    • 0
この回答へのお礼

上記とは違うもの方法をとりましたが、解決できました!
以下、おおざっぱですが原因と解決策を書きます。

○原因
レコードソースに使っているストアドプロシージャと、
再同期コマンドで指定しているストアドプロシージャの、
selectしている要素が異なる。

よって、レコードを変更して再同期コマンドがされた時、
要素が異なるので
DoCmd.RunCommand acCmdSaveRecord
でエラーを起こす。

○解決策
selectしている要素を一致させる

わかりにくいかもしれませんが、
同じ難題にぶつかっている方の助けになればと思います。

お礼日時:2011/04/14 16:39

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

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報