1

次のような状況があります: サブフォーム (特定のキーを介してメイン フォームのレコードにリンクされているレコード) を含む Access フォームを作成しました。サブフォームのレコードを削除しようとすると、次のメッセージが表示されます。「あなたと別のユーザーがデータを変更しようとしたため、アクセスはアクションを中断しました」(ドイツ語からのおおよその翻訳)。これらのレコードをサブフォームから (およびそれぞれフォームの背後のテーブルから) 削除する方法を知っている人はいますか?

4

3 に答える 3

1

サムジャドソンは次のように提案しました。

DoCmd.RunCommand acCmdUndo

Me.Undo を使用して、コードが実行されるフォームの最後の編集を元に戻すこともできます。

または、Me!MySubForm.Form.Undo を使用して、サブフォーム コントロールの名前が「MySubForm」であるサブフォームで保存されていない最後の編集を元に戻します。

Me!MyControl.Undo を使用して、特定のコントロールに対する最後の編集をキャンセルすることもできます。

「DoCmd.RunCommand acCmdUndo」は、現在選択されているオブジェクトに元に戻す操作を適用しますが、それがコントロールまたはフォーム レベルで適用されるかどうかはわかりません。私が提案したコマンドを使用すると、何が元に戻されるかが完全に明確になります。

ただし、コントロールの AfterUpdate イベントが発生した後のコントロールや、AfterUpdate イベントが発生した後のフォームに対する編集 (つまり、データが基になるデータ テーブルに保存された後) は、元に戻す操作によって元に戻されないことに注意してください。

于 2008-09-15T22:35:30.707 に答える
1

現在、現在のフォームを「編集」している場合、そのアクションは許可されません。レコードの編集は、フィールド内をクリックするだけでトリガーされる場合や、通常は「編集」とは見なされないその他の単純なアクションによってトリガーされる場合があります。

これは通常、レコードを削除する前に RunCommand メソッドを使用して編集を元に戻すことにより、Access で回避されます。

DoCmd.RunCommand acCmdUndo
于 2008-08-29T08:19:42.093 に答える
0

また、お持ちの「列ロック機構」もご確認ください。私はしばらく Access を使用していませんでしたが、テーブルのプロパティで設定を使用できることを覚えています。これらのプロパティにアクセスするには、テーブルの左上隅にある有名な「ドット」をクリックして、そのプロパティを表示します。Access を使用している場合は、私が話していることがわかります。

于 2008-08-29T08:27:01.280 に答える