• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:アクセスで単票でリスト内もフィルタかけたい)

リスト内の氏名もフィルタできる単票フォームを作成したい!初心者におすすめの方法とは?

このQ&Aのポイント
  • 2002アクセスを使っている初心者が、社員名簿を作成するために単票フォームを作成しました。
  • リストボックスで選択した値に対応するレコードをフォームで検索し、氏名のレコード情報を表示するようになっています。
  • しかし、リスト内の氏名データがフィルタされない問題が発生しています。どうすれば解決することができるでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

すいません、返事が遅れてしまいました フォームのフィルタ機能に対応して、 リストボックスに表示されている内容を更新する方法ですよね Access2000以降は、フォームのイベントに「フィルタ実行時」が、 追加されていますので、そのイベントに対応する処理をコーディングします 下記サンプルソースを貼り付けて、試してみて下さい 多分できると思います '------------------------------ 'フィルタ実行時のイベント Private Sub Form_ApplyFilter(Cancel As Integer, ApplyType As Integer) Dim stSQL As String 'リストの基本ソース設定 stSQL = "SELECT テーブル1.ID, テーブル1.氏名 FROM テーブル1 " 'フィルタ条件を付加(フィルタ解除時は何もしない) If ApplyType = 1 Then stSQL = stSQL & _ "WHERE " & Me.Filter End If 'SQL最終文字付加 stSQL = stSQL & ";" '表示リストデータの更新 Me![リスト8].RowSource = stSQL End Sub '------------------------------

fusigi2
質問者

お礼

もうだめかと、思いながら、待っていました。ご親切にどうも有り難うございました。早速試してみます。やはり、持つべきものは、友です。

その他の回答 (1)

回答No.1

お疲れ様です やりたい事は、VBAを使用しないと出来ない事だと思われます。 もし、VBAでもよろしければ... ※社員名簿TBLのフィールド構成を教えてもらうと具体的に説明可能です

fusigi2
質問者

補足

お願いします。 社員名簿TBL:フィールド「氏名」「性別」「所属課」「プロフィル」でテーブルを作成して、フォームで新規に単票を作成、デザインでツールボックスのリストを貼り付けると、リストウイザードが立ち上がり、3番目の「選択して・・・」にチェックを入れて「氏名」で選択して OK を押すと、一応原型は出来上がりました。 リストのプロパテイで データの値集合ソースは SELECT テーブル1.ID, テーブル1.氏名 FROM テーブル1; で連結列は1 イベントの更新後処理は[イベント プロシージャ]そのコードは General  Option Compare Database で Private Sub リスト8_AfterUpdate() ' コントロールの値と一致するレコードを検索する Dim rs As Object Set rs = Me.Recordset.Clone rs.FindFirst "[ID] = " & Str(Nz(Me![リスト8], 0)) If Not rs.EOF Then Me.Bookmark = rs.Bookmark End Sub となっていました。 これをフォームフィルタ(ロートの形)を押して「性別」”男”でフィルタ実行(別ロートの形)を押すと、レコードセレクタ内容はかわりますが、リストの内容は変わりません。 よろしくお願いします。

関連するQ&A