• ベストアンサー

ACCESSで「16389予約済みエラー」と出ます

AccessとVBA、SQLServerの組み合わせでアプリケーションを作っています。 VBAの中で DoCmd.RunCommand acCmdSaveRecord を実行する行でエラーが発生します。 MsgBoxでErr.NumberとErr.Descriptionを確認すると、 16389 予約済みエラーと表示されます。 この番号とメッセージで調べてはいるのですが、英語のページしかヒットせず、 翻訳してもよくわからず、苦戦しています。 何か情報をお持ちの方は教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • ShowMeHow
  • ベストアンサー率28% (1424/5027)
回答No.1

AC2003持っていないので試してみることができないのですが、なんとなく連結フォームからの捜査を行うときにでるエラーのようですね。 http://pressf1.pcworld.co.nz/showthread.php?t=83027 によると、 マルチユーザーデータベースとしているなら、 フォームをデザインモードで開き、プロパティのデータタブのレコードロックをEdited Record(編集済みレコード?)にしなさい。 DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70 と書いているなら、 DoCmd.RunCommand acCmdSaveRecord としてみろ。 それでもダメなら、セーブする代わりにレコードを移動させて戻ってくることによって、フォーム上の変更をDBに反映させることができる。 どうせレコードを移動させるときに保存されるのだから、この時点での保存は本当に必要なのかどうか考えてみてください。 と書いてあります。

souitirou1
質問者

お礼

上記とは違うもの方法をとりましたが、解決できました! 以下、おおざっぱですが原因と解決策を書きます。 ○原因 レコードソースに使っているストアドプロシージャと、 再同期コマンドで指定しているストアドプロシージャの、 selectしている要素が異なる。 よって、レコードを変更して再同期コマンドがされた時、 要素が異なるので DoCmd.RunCommand acCmdSaveRecord でエラーを起こす。 ○解決策 selectしている要素を一致させる わかりにくいかもしれませんが、 同じ難題にぶつかっている方の助けになればと思います。

souitirou1
質問者

補足

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