- ベストアンサー
ACCESSで「16389予約済みエラー」と出ます
AccessとVBA、SQLServerの組み合わせでアプリケーションを作っています。 VBAの中で DoCmd.RunCommand acCmdSaveRecord を実行する行でエラーが発生します。 MsgBoxでErr.NumberとErr.Descriptionを確認すると、 16389 予約済みエラーと表示されます。 この番号とメッセージで調べてはいるのですが、英語のページしかヒットせず、 翻訳してもよくわからず、苦戦しています。 何か情報をお持ちの方は教えてください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
AC2003持っていないので試してみることができないのですが、なんとなく連結フォームからの捜査を行うときにでるエラーのようですね。 http://pressf1.pcworld.co.nz/showthread.php?t=83027 によると、 マルチユーザーデータベースとしているなら、 フォームをデザインモードで開き、プロパティのデータタブのレコードロックをEdited Record(編集済みレコード?)にしなさい。 DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70 と書いているなら、 DoCmd.RunCommand acCmdSaveRecord としてみろ。 それでもダメなら、セーブする代わりにレコードを移動させて戻ってくることによって、フォーム上の変更をDBに反映させることができる。 どうせレコードを移動させるときに保存されるのだから、この時点での保存は本当に必要なのかどうか考えてみてください。 と書いてあります。
お礼
上記とは違うもの方法をとりましたが、解決できました! 以下、おおざっぱですが原因と解決策を書きます。 ○原因 レコードソースに使っているストアドプロシージャと、 再同期コマンドで指定しているストアドプロシージャの、 selectしている要素が異なる。 よって、レコードを変更して再同期コマンドがされた時、 要素が異なるので DoCmd.RunCommand acCmdSaveRecord でエラーを起こす。 ○解決策 selectしている要素を一致させる わかりにくいかもしれませんが、 同じ難題にぶつかっている方の助けになればと思います。
補足
回答ありがとうございます! 訳していただけることで、解決策を考えやすくなりました。 また、きちんと解決しましたらお礼の欄に報告します。