#734 | 同じグループ内でのデータ重複をチェックするには? | フォーム、VBA | |
次のようなテーブルがあるとします。 「保管場所コード」フィールドの値を見ると、「A」「B」「C」それぞれの文字で始まる3つのグループがあることが分かると思います。 一方、テーブルの直接編集では「優先保管場所」フィールドはどの保管場所コードかに関わらずいくつでも自由にチェックすることができます。 このとき、たとえば保管場所コードが「A」で始まるグループ内では「優先保管場所」は1つだけしか選択できないようにしたいという場合に、フォームを使ってその制限を行う方法の例です。 まず、上記のテーブルをレコードソースとするフォームを作ります。下図のようなデザインで、実行時は”データシート”で表示するものとします。 次に、優先保管場所のチェックボックスが更新されようとするたびに同じグループ内の重複チェックを行うものとし、そのチェックボックスの「BeforeUpdate/更新前処理」イベントプロシージャを次のようにします。 Private Sub 優先保管場所_BeforeUpdate(Cancel As Integer) '[優先保管場所]の更新前処理 Dim strWhere As String Dim intChkedCnt As Integer If Me!優先保管場所 Then ← 1 '優先保管場所がチェックされたとき '同じグループ内の優先保管場所のチェック数を取得 strWhere = "保管場所コード LIKE '" & Left$(Me!保管場所コード, 1) & "*' " & _ ← 2 "AND 優先保管場所 = True" ← 3 intChkedCnt = DCount("*", "mtbl保管場所マスタ", strWhere) ← 4 If intChkedCnt > 0 Then ← 5 Beep MsgBox "すでに優先保管場所が設定されています!", vbOKOnly + vbExclamation Cancel = True End If End If End Sub
実行例: ■同じ「A」で始まるグループにはまだ1つもチェックが付いていないので、どれでもチェックすることができます。 ■そこからさらに同じ「A」グループの他のレコードにチェックを付けようとするとメッセージが表示され、更新がキャンセルされます。 |
|||
|
Copyright © T'sWare All rights reserved |