Access実践入門 TOPへ
 ■ 検索を絞り込み検索に変更
作業テーブルを使って、検索結果を絞り込んでいく
Ver3.0では、検索結果が一覧表に残りますが、次の検索ではその検索結果に対してさらに検索ができるようにしています。
作業テーブルを2つ用意して、交互に検索結果を書き込んでいきます。
作業テーブルは次の2つです。
「to住所録a」、「to住所録b」

モジュールの「Module」に次のような変数の定義を追加しています。
Public kenmode As Integer


検索画面の検索ボタンの[クリック時]が次のようになっています。

--------------------------------------
Select Case kenmode

Case 1
DoCmd.OpenQuery "quto住所録b削除"
DoCmd.OpenQuery "quto住所録b追加"
kenmode = 2
Form_fo住所録一覧表.RecordSource = "qu住所録一覧表かな順検索b"
DoCmd.Close acForm, "fo住所録検索"

Case 2
DoCmd.OpenQuery "quto住所録a削除"
DoCmd.OpenQuery "quto住所録a追加"
kenmode = 1
Form_fo住所録一覧表.RecordSource = "qu住所録一覧表かな順検索a"
DoCmd.Close acForm, "fo住所録検索"

Case Else
DoCmd.OpenQuery "quto住所録a削除"
DoCmd.OpenQuery "quto住所録初回追加"
kenmode = 1
Form_fo住所録一覧表.RecordSource = "qu住所録一覧表かな順検索a"
DoCmd.Close acForm, "fo住所録検索"
End Select
--------------------------------------
プログラムが起動した時は、kenmodeはゼロですから、一番最初は、Case Elseを通ります。
作業テーブルの「to住所録a」を削除する、削除クエリ「quto住所録a削除」を実行
作業テーブルの「to住所録a」に検索結果を書む追加クエリ「quto住所録初回追加」を実行
(この追加クエリは、「ta住所録」をもとに作られます)
kenmodeを1にしておきます。
一覧表のレコードソースを変更します。
検索指定フォームを閉じます。

続けて検索した場合は、Case1を通ります。
作業テーブルの「to住所録b」を削除する、削除クエリ「quto住所録b削除」を実行
作業テーブルの「to住所録b」に検索結果を書む追加クエリ「quto住所録b追加」を実行
(この追加クエリは、「to住所録a」をもとに作られます)
kenmodeを2にしておきます。
一覧表のレコードソースを変更します。
検索指定フォームを閉じます。

続けて検索した場合は、Case2を通ります。
作業テーブルの「to住所録a」を削除する、削除クエリ「quto住所録a削除」を実行
作業テーブルの「to住所録a」に検索結果を書む追加クエリ「quto住所録a追加」を実行
(この追加クエリは、「to住所録b」をもとに作られます)
kenmodeを1にしておきます。
一覧表のレコードソースを変更します。
検索指定フォームを閉じます。

検索を止めるときは、一覧表の下のボタン「かな順」か「番号順」が押されるともとの全レコード表示に戻ります。

それぞれの[クリック時]は次のようになっています。
--------------------------------
Private Sub かな順_Click()
kenmode = 0
Me.RecordSource = "qu住所録一覧表かな順"
End Sub
--------------------------------
Private Sub 番号順_Click()
kenmode = 0
Me.RecordSource = "qu住所録一覧表番号順"
End Sub
--------------------------------
kenmodeをゼロにしてから、レコードソースを変更して、次回の検索の準備をしています。