Access データベースからレコードを削除します。削除中にエラーが発生しました
質問
次のような状況があります。サブフォーム(レコードは特定のキーを介してメインフォームのレコードにリンクされています)を備えたAccessフォームを構築しました。サブフォーム内のレコードを削除しようとすると、次のメッセージが表示されます。「あなたと別のユーザーがデータを変更しようとしたため、アクセスはアクションを一時停止しました」(ドイツ語からのおおよその翻訳)。サブフォームから(そしてそれぞれフォームの背後にあるテーブルから)これらのレコードを削除する方法を知っている人はいますか。
解決
現在のフォームを「編集」している場合、そのアクションは許可されません。レコードの編集は、フィールド内をクリックするだけ、または通常は「編集」とは考えられないその他の単純なアクションによってトリガーされる場合があります。
Access では通常、レコードを削除する前に RunCommand メソッドを使用して編集を取り消し、これを回避します。
DoCmd.RunCommand acCmdUndo
他のヒント
サムジャドソンは次のように提案しました。
DoCmd.RunCommand acCmdUndo
Me.Undo を使用して、コードが実行されるフォームに対する最後の編集を元に戻すこともできます。
または、Me!MySubForm.Form.Undo を使用すると、サブフォーム コントロールが "MySubForm" という名前のサブフォーム内の最後に保存されていない編集を元に戻すことができます。
Me!MyControl.Undo を使用して、特定のコントロールに対する最後の編集をキャンセルすることもできます。
「DoCmd.RunCommand acCmdUndo」は、現在選択されているオブジェクトに元に戻す操作を適用しますが、それがコントロール レベルで適用されるかフォーム レベルで適用されるかはわかりません。私が提案したコマンドを使用すると、何が元に戻されるのかが完全に明確になります。
ただし、コントロールの AfterUpdate イベントが発生した後、または AfterUpdate イベントが発生した後 (つまり、データが基になるデータ テーブルに保存された後) のフォームに対する編集は、[元に戻す] では元に戻されないことに注意してください。
搭載されている「列ロック機構」も確認してください。Access をしばらく使用していませんでしたが、テーブルのプロパティで set を使用できたことを覚えています。これらのプロパティにアクセスするには、テーブルの左上隅にある有名な「ドット」をクリックしてそのプロパティを表示します。Access を使用している場合は、私が何を言っているかわかるでしょう。