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