#451 特定のレコードだけ編集不可にするには? フォーム、VBA

フォームに表示されているレコードすべてを編集不可にするには、「レコードセット」プロパティを"スナップショット"に設定する、「更新の許可」プロパティを"いいえ"に設定するなどの方法がありますが、VBAのイベントプロシージャとコードを使うことによって、特定の条件に合致するレコードだけを編集不可にすることができます。

たとえば、次の例では、カレントレコードの商品区分テキストボックスの値が”2”の場合には、その編集ができないようにしています。

Private Sub Form_Dirty(Cancel As Integer)
'フォームのダーティー時

  '商品区分テキストボックスの値を確認
  If Me!商品区分 = 2 Then
    '商品区分が2なら編集不可
    Cancel = True
  End If

End Sub


Dirtyイベントは、フォームのレコードのいずれかのフィールドの内容が更新されようとしたときに発生します。そのタイミングでカレントレコードのフィールド値をチェック、もし更新させたくないレコードであれば、イベントプロシージャの引数である「Cancel」に"True"を代入します。それによってイベントがキャンセルされ、結果的に更新を受け付けてくれない(データのキーインが不可)ような状態にすることができます(レコードの削除は可能です)。
| Index | Prev | Next |

この情報は参考になりましたか?、問題は解決しましたか?、もしまだなら......
T'sWareのワンポイトテクニカルアドバイスをご利用ください。3000円/件〜でご支援します。
スタンドアロンからSQL Server対応まで、オーダーメイドのシステムを短納期・安価でお届けします


Copyright © T'sWare All rights reserved