2

ユーザーがデータを入力するために次のレコードに移動したら、サブフォームのレコードをロックする方法を見つけようとしています。しかし、ユーザーが戻って他のレコードを表示できるようにしたいのですが、情報を編集することはできません。または、この機能を実行できるコントロール ボックスを用意します。チェックを外すと、レコードはロックされ、読み取り専用になります。データ入力時にフィールドをロックしたくありませんが、ユーザーがレコードで作業している間ずっとデータを選択/選択解除/追加/削除できるようにしたいのですが、終了して次へ進むと、または、コントロールを保存またはクリックすると、すべてがロックされ、誰に対しても読み取り専用になります。

MS Access 2010 を使用しています。

どんな助けでも大歓迎です。ありがとう!

4

3 に答える 3

1

整数を使用して、ユーザーが表示した最新のレコード ID を格納できます。サブフォームの onCurrent イベントで、この整数を現在のレコードの ID と照合します。小さい場合は.Enabled、フォーム上のすべてのコントロールのプロパティを False に設定します。それ以外の場合は、すべて true に設定します。

したがって、整数を公に宣言し、フォームの onCurrent イベントでこのようなことをしたいと思うでしょう。

If Me.ID > recCount Then
    recCount = Me.ID
End If

If recCount < Me.ID Then
    'Disable all controls
    myControl.Enabled = False
Else
    'Enable all controls
    myControl.Enabled = True
End If

もちろん、それは人々がDBを終了してリロードして古いレコードを再び編集することを妨げるものではありません. セキュリティを強化したい場合は、代わりに ID をダミー テーブル (1 つの定義済みフィールドと 1 つのレコード) に格納できます。

レコードを順番に読み取り専用にすることは重要ですか? それ以外の場合は、ブール値フィールドをテーブルに追加する方がはるかに優れているように思われるため、onCurrent でそれを確認し、そこからコントロールを有効/無効にします。

于 2013-09-09T15:04:29.677 に答える