2011-01-31 5 views
0

私は、サブフォーム上のチェックボックスとしてYes/Noフィールドが表示されたレコードを含むサブフォームを持っています。メインフォームがロードされると、ユーザーが以前のユーザーの操作を元に戻すことができないように、チェックされたフィールドをすべてロックする必要があります。セッションの開始時にチェックが外されていたボックスのみをチェック/フォームの読み込み時にサブフォーム内の特定の行をロックする方法はありますか?

サブフォーム内のすべてのレコードを繰り返し処理し、フォームがロードされたときにフィールド値に基づいてレコードを選択的にロックすることはできますか?

私はサブフォームOnCurrentイベントに

If (Me.chkItemReceived.Value = -1) Then 
     Me.chkItemReceived.Locked = True 
Else 
     Me.chkItemReceived.Locked = False 
End If 

のようなものを置くことができます知っているが、これは、彼らが誤ってチェックしているかもしれボックスをオフからユーザーを防ぐことができます。サブフォームのレコードを繰り返し処理できますが、行レベルでレコードをロックする方法を理解することはできません。

私の他の解決策は、フォームを2つのサブフォームに分割することです。チェックされたアイテムとアイテムではなく、むしろ1つのフォームに保持されます。

ありがとうございました!

答えて

1

いいえ、特定の行(またはレコード)をMS AccessのGUIにロックする方法はありません。 1つのレコードのコントロールのプロパティを変更すると、サブフォームのすべてのレコードでコントロールのプロパティが変更されます。

基本的なテーブルで行レベルのロックを直接行うことはできません。通常、ロックは、他人があなたのレコードを編集するのを防ぐために行われます。しかし、この場合は、あなたが編集しないようにしようとしています。

2つの方法(OnCurrentと個別のサブフォーム)はおそらく最適なオプションです。コードの清潔さについては、後者を選択します。

+0

私はそれを恐れていた:)入力のおかげで! – owlie

0

あなたの質問を正しく読んでいるのであれば、基本的にあなたの問題に対する解決策を与えました。次のレコードに反復処理するときにそのように設定することができます。特定のコントロールは、これらのコントロールまたは他のコントロールの値に基づいて編集からロックされます。実際にテーブルの行をロックしているわけではありませんが、ロックされたコントロールの値を変更することはできません。

他のユーザーが編集したばかりのレコードを編集できないようにする場合は、これで問題は解決しません。

+0

以下のコードレイブでは、コントロールのプロパティを選択的に変更することはできません。私は1つのコントロールをロックすると、私はそれらをすべてロックする - 私は生成された行のいずれかをロックすることはできません。だから私はまだ別の形をしています... – owlie

関連する問題