使いやすいように設計された Microsoft リレーショナル データベース管理システムのファミリ。
DoCmd.RunSQLは非同期実行です。
処理が終了しないうちに、次の行の処理を開始します。
これでは困る場合は、DB.ExecuteにすればOKです。
こちらは終了するまで次の処理に進みません。
このブラウザーはサポートされなくなりました。
Microsoft Edge にアップグレードすると、最新の機能、セキュリティ更新プログラム、およびテクニカル サポートを利用できます。
テーブルのデータを全削除したあと、すぐにデータの追加を実行させた時、
DELETE削除が追い付かず、エラーになる場合はありますか?
DoCmd.RunSQL "DELETE FROM テーブル名"
DoCmd.RunSQL "INSERT INTO テーブル名 ~~~
もしあるとすれば、どのような対処法があるでしょうか?
**モデレーター注**
タイトルを編集しました。
編集前タイトル : アクセス2013 「DELETE」後の「INSERT INTO」
使いやすいように設計された Microsoft リレーショナル データベース管理システムのファミリ。
ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。
質問作成者が受け入れた回答
DoCmd.RunSQLは非同期実行です。
処理が終了しないうちに、次の行の処理を開始します。
これでは困る場合は、DB.ExecuteにすればOKです。
こちらは終了するまで次の処理に進みません。
お疲れ様です。
『更新をロールバック』というのは、複数の更新をセットで行う際に使用します。
テーブルAとテーブルBの更新を同時に行う必要がある(整合性を維持する必要がある)場合などに使用します。
テーブルAの更新がうまくいったが、テーブルBの更新でエラーになった時に、テーブルAの更新もなかったことにする というのが、更新のロールバックです。(整合性をとるために必要です)
Workspace.BeginTrans メソッド (DAO)
https://msdn.microsoft.com/ja-jp/library/office/ff821457.aspx
このサンプルなどご覧になってみてください。
全ての変更やっと終わりました。
dbFailOnError
「エラーが発生時に更新をロールバック」ということですが、よく理解できません。ロールバックってエラーが出ると、無限ループになったりしませんか?dbFailOnerrorと、ただ尻尾に付けるだけでもよいですか?DoCmd.RunSQL "DELETE FROM テーブル名" ここは、DB.Executeに変更でもエラーなしDoCmd.RunSQL "INSERT INTO テーブル名 こちらはDB.Executeに変更で一部エラーです。とりあえずDELETEをDB.Executeにして INSERT INTO はDoCmd.RunSQLでやらせています。ネットで調べるとWhere文あたりがあやしいみたいでした。ご回答、ありがとうございます。
うわぁ~~ショックです。
修正個所が多すぎて。がんばります。
とりあえず、Ctrl+H (置換)で、DoCmd.RunSQL を CurrentDB.Excute に置換すればいいかと。
できれば、dbFailOnErrorオプションを付けるといいですね。
CurrentDB.Excute "SQL文", dbFailOnError
うわぁ~~ショックです。
修正個所が多すぎて。がんばります。
SIMOZ様、いつもご回答いただき、ありがとうございます。