#629 | フォームの全レコードのチェックマークをON/OFFする方法 | フォーム、VBA | |
サブフォーム内にある全レコードのYes/No型フィールドの値を一括してON/OFFする方法です。 ここでは、メインフォームにオプショングループコントロールならびにトグルボタンコントロールを配置して、その切り替えによってサブフォームの値を変更します。 例では、オプショングループは「fraチェックマーク」という名前とし、その中に配置されたトグルボタンはそれぞれ『ONは「1」』、『OFFは「2」』という値を「オプション値」プロパティに設定します(トグルボタンの名前はなんでもかまいません)。 またサブフォームコントロールの名前は、「frm商品マスタ_sub」(ソースオブジェクトとなるフォームの実体の名前はなんでもかまいません)とします。 またサブフォーム内のチェックボックスは、Yes/No型フィールドである「対象」という名前のフィールドと連結されています。 そして、オプショングループの切り替えでアクションを起こすようにしますので、その「AfterUpdate/更新後処理」イベントプロシージャにそのプログラムを記述します。 Private Sub fraチェックマーク_AfterUpdate() 'チェックマークのオプショングループの更新後処理 Dim blnOnOff As Boolean Dim rst As Recordset 'オプショングループの選択値を取得にBoolean値に変換 ' (ONならTrue、OFFならFalse) blnOnOff = (Me!fraチェックマーク = 1) 'サブフォームのレコードセットクローンを取得 Set rst = Me!frm商品マスタ_sub.Form.RecordsetClone With rst 'レコードがあるときだけ処理 If .RecordCount > 0 Then 'いったん先頭レコードに戻す .MoveFirst 'すべてのレコードをたどるループ Do Until .EOF '指定のON/OFF状態に更新 .Edit !対象 = blnOnOff .Update .MoveNext Loop End If .Close End With 'サブフォームを再クエリして最新情報を表示 Me!frm商品マスタ_sub.Requery End Sub 実行例: ■ONをクリックしたとき ■OFFをクリックしたとき
※ネットワークでテーブルを共有している場合、フィールド値を直接するこのような操作が複数のパソコンから同時に行われると、処理結果が想定外のものとなる可能性が高いです。そこで実際には、たとえば次のような回避策をとった方がよいかもしれません。
|
|||
|
Copyright © T'sWare All rights reserved |