フィルターの操作
フォームフィルター
フォームにフィルターをかけるには「RunCommand」の「acCmdFilterByForm」でフォームフィルターを起動します。
Private Sub CmdFilter_Click() 'CmdFilterをクリック時にフォームフィルターを起動する DoCmd.RunCommand acCmdFilterByForm End Subフォームフィルターであいまい検索を行う場合は面倒でも、*(アスタリスク)を使用しなければなりません。
その場合は抽出用のテキストボックスを作成し、「FilterOn」を使って抽出します。
Private Sub CmdFilter_Click() 'フィールド名「所属」からテキストボックス「条件」に入力された '文字を含むデータを抽出する Me.Filter = "所属 Like ""*" & 条件 & "*""" Me.FilterOn = True End Sub
コンボボックスの値でフィルターをかける
コンボボックスの値でフィルターをかける場合の例です。
'コンボ1のレコードソースにグループ化した所属をセットする 'コンボ1のレコードソース SELECT tbl_社員.所属 FROM tbl_社員 GROUP BY tbl_社員.所属; '抽出ボタンをクリックしたらコンボ1の値でフィルターをかける Private Sub 抽出_Click() Me.Filter = "所属 = '" & コンボ1 & "'" Me.FilterOn = True End Sub *************************************************************** Private Sub コンボ1_AfterUpdate() 'コンボ1の値が更新されたらフィルターをかける Me.Filter = "所属 = '" & コンボ1 & "'" Me.FilterOn = True End Sub
オプションボタンでフィルターをかける
フリガナをオプションボタンで抽出する方法です。
オプショングループ:フリガナ
'オプショングループ「フリガナ」のボタンの更新後処理に 'よってサブフォーム「s_リスト」フリガナにフィルタをかける Private Sub フリガナ_AfterUpDate() Select Case Me!fraフリガナ.Value 'あ行 Case 1 Me!s_リスト.Form.Filter = "フリガナ Like '[ア-オ]*'" 'か行 Case 2 Me!s_リスト.Form.Filter = "フリガナ Like '[カ-ゴ]*'" 'さ行 Case 3 Me!s_リスト.Form.Filter = "フリガナ Like '[サ-ゾ]*'" 'た行 Case 4 Me!s_リスト.Form.Filter = "フリガナ Like '[タ-ド]*'" 'な行 Case 5 Me!s_リスト.Form.Filter = "フリガナ Like '[ナ-ノ]*'" 'は行 Case 6 Me!s_リスト.Form.Filter = "フリガナ Like '[ハ-ボ]*'" 'ま行 Case 7 Me!s_リスト.Form.Filter = "フリガナ Like '[マ-モ]*'" 'や行 Case 8 Me!s_リスト.Form.Filter = "フリガナ Like '[ヤ-ヨ]*'" 'ら行 Case 9 Me!s_リスト.Form.Filter = "フリガナ Like '[ラ-ロ]*'" 'わ行 Case 10 Me!s_リスト.Form.Filter = "フリガナ Like '[ワ-ヲ]*'" 'すべて Case 11 Me!s_リスト.Form.Filter = "" End Select Me!s_リスト.Form.FilterOn = True End Sub
タブコントロールでフィルターをかける
タブが変更された時、タブのページインデックス対応した条件で抽出 します。
抽出するサブフォームのフィールドのデータとページインデックスの値が等しい データを作成します。例)
tbl_社員の性別フィールドの値:男 = 0 女 =1
タブ0のタブインデックス:0 = 男 1 = 女 2 = 全てタブ0のタブインデックスの状態を取得するテキストボックス「条件」を 不可視でメンフォーム「frm社員」に作ります。
サブフォーム「List」のレコードソースの抽出条件をテキストボックス「条件」 の値にする。SELECT tbl_社員 FROM tbl_社員
WHERE (((tbl_社員.性別) [Forms]![frm_社員]![条件]));
Private Sub タブ0_Change() 'タブ0変更時に以下の値をテキストボックス「条件」にセットして 'クエリーを実行 Select Case Me!タブ0.Value '男 Case 0 Me!条件 = "0" '女 Case 1 Me!条件 = "1" '全て Case 2 Me!条件 = "*" End Select Me!List.Requery 'サブフォームの再クエリー End Subこのようにして、「クエリー」「SQL」の抽出条件でフィルターを実行することもできます。
チェックボックスにフィルターをかける
チェックボックスを使ってフィルターを実行ます。
フレ−ム1のオプションボタンの値でフィルターをかけます。フォーム名:frm_社員
フレ−ム1のオプション値:0 = 男 1 = 女 (規定値:0)
Private Sub Form_Load() 'フォーム読み込み時、フレ−ム1の既定値=0 でフィルターを 'かける Me.Filter = "性別 = 0" Me.FilterOn = True End Sub ****************************************************** Private Sub フレーム1_AfterUpdate() 'フレ−ム1のオプション値の更新後処理でフィルターを 'かける If フレーム1.Value = 0 Then Me.Filter = "性別 = 0" ElseIf フレーム1.Value = 1 Then Me.Filter = "性別 = 1" End If Me.FilterOn = True End Sub
サブフォームにフィルターをかける
コンボボックスの値でサブフォームにフィルターを実行ます。
フォームヘッダーに[Cmb車検月] をつくります。フォーム名:frm_車両管理
コンボボックス名:Cmb車検月
値:SELECT 車両管理.車検月 FROM 車両管理 GROUP BY 車両管理.車検月;
サブフォームの抽出するフィールド:車検月
Private Sub Cmb車検月_AfterUpdate() 'コンボボックスの値でサブフォームにフィルターを実行ます。 Me!s_車両管理.Form.Filter = "車検月 = '" & Cmb車検月 & "'" Me.FilterOn = True End Sub