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

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

アクセスで単票でリスト内もフィルタかけたい

2002アクセスを使っている初心者です。社員名簿を作っています。テーブル社員名簿.TBL、フィールド「氏名」・・・その他について、単票フォームを作成しました。ツールボックスより、リストコントロールを選択して、貼り付けると、リストボックスウイザードが立ち上がり、その中の3つのメニューの3番目の「リストボックスで選択した値に対応するレコードをフォームで検索する」を選択して、フィールド「氏名」を元に検索してその氏名のレコードの情報をを表示するようにしました。社員全データでは、調子良く動いています。この度、「課」別に表示しようとしています。メニューバーの中のフィルタ(漏斗の絵)を使って、選択フィルタで目標の「課」選択して、実行フィルタを押すと、単票フォームのレコード数は変化して、うまくフィルタしますが、リスト内の「氏名」データがフィルタされません。どうしたらクリックと同時にリスト内のフィールド「氏名」もフィルタされるのですか?宜しくお願いします。

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

  • ベストアンサー
回答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

  • 単票フォームと帳票フォームを連動 アクセス

    どういう構成にすればいいか教えてください。 元データはT_testのみですが T_testを元に、単票フォームと帳票フォームを作り、 この二つのフォームをサブフォームにし、1つの親フォームにはめて、 帳票フォームのレコードをクリックする(カレントレコードが変わる)度に 単票フォームは、帳票フォームのデータを表示させたいのですが どうすればいいでしょう? レコードソースは親フォームに設定すればいいのでしょうか? それとも単票フォームと帳票フォームそれぞれにT_testを設定すればいいでしょうか? 帳票フォームのレコードをクリックして単票フォームのデータを表示させる際は、 帳票フォームの値を取得して単票フォームにフィルタをかければいいのでしょうか?

  • Access2003でコンボボックスからデータを抽出したい

    自己啓発でAccess2003を勉強しています。 Access2003でコンボボックスで名前を選択して、データ(住所)を抽出したものをリストボックスに表示させたいのですがどこがまちがっているかわかりません。こんなことで3週間ぐらい悩んでいます。 回答またはアドバイスをお願いします。 もしくはもっと簡単なやりかたがあればお願いします。 (1)「氏名」、「住所」のテーブルを作成。テーブル名は「01データ」 (2)「氏名」、「住所」のクエリを作成。クエリ名は「クエリ1」 (3)フォームでコンボボックスとリストを作成。フォーム名は「印刷」 ⇒コンボボックスの名前は「検索」。 ⇒値集合ソースはSELECT [01データ].ID, [01データ].氏名 FROM 01データ; これで「氏名」が選択できた。 (4)クエリの「氏名」抽出条件にLike [forms]![印刷]![検索] (5)検索するマクロを作成。マクロ名「M検索」 アクションは 全レコードの表示 フィルタの実行 ⇒Where条件は[Forms]![印刷]![検索]=[クエリ1]![氏名] (6)マクロ「M検索」をコンボボックスのプロパティ「イベント」タブから変更時に設定する。 (7)フォーム「印刷」を開き、コンボボックスで氏名を選択すると『クエリ1!氏名』と表示されてしまいます。 (8)フォーム「印刷」のリストボックスは全レコードが表示されている。

  • ACCESSフォームのリストボックスでレコードが選択できない

    ACCESS2000です。 フォームの左側に親テーブルのフィールド1の値を選択させるリストボックスがあり、そこで選択したレコードにリンクする子テーブルのレコードをフォームの右側にサブフォームで表示させたいのですが、リストボックスでレコードを選択できません(クリックしても反転しません)。でもレコード移動ボタンを押すと、リストボックス内の該当レコードがちゃんと反転し、右側のサブフォームにも正しく反映します。 リストボックスのプロパティはくまなく見ましたがそれらしい設定項目はみつかりませんでした。どこを直せばよいのでしょうか。

  • アクセス2000でクエリを組んだのですが。。。

    こんにちわ。アクセス初心者です。まず順に追って説明します。 (1)15000件ある顧客名簿と1500件ある担当会社のテーブルをリレーションで結び、クエリを組みました。「Q_顧客名簿」と名づけました。その時点で15000件データが存在します。 (2)フォーム「Q_顧客名簿」を元にフォームを作成しました。そして氏名の曖昧検索をしたいのでまずフォームのテキストボックスに「氏名検索」と名づけて、クエリの画面に戻り「Q_顧客名簿」を元に新たなクエリを組み、「氏名」のフィールドの抽出方法に以下のような文を入れました。 『Like "*" & [forms]![集合フォーム_1]![氏名検索] & "*"』 このクエリを「Q_氏名検索」と名づけました。 (3)フォームの左端をに「Q_氏名検索」が生きるよう設定をし、「氏名検索」のテキストボックスに「再クエリ」を組んだのですが、顧客データ数が15000あるはずなのが11000まで減ってしまいました。 おそらく検索式に何かが足りないのだと思うのですが、SQLやVBAがわからないのでどうすればいいかわかりません。 アクセスの詳しい方、教えていただけませんでしょうか?よろしくお願いいたします。

  • 帳票から単票フォームへの表示がうまくいきません

    ACCESSを始めたばかりです。 帳票表示されているレコードを単票フォームで表示させたいです。 テーブル「売上データ」がありこのテーブルを使って帳票用と単票用のクエリを作成、それぞれに対してフォームを作っています。 「売上データ」には、オートナンバーで No があり、これを主キーにしてあります。 クエリ Q帳票   フォーム F帳票 クエリ Q単票   フォーム F単票 フォームF帳票には、レコード内にボタンをおきました。 ボタンには、下記のマクロをつくって イベント クリック時 のところにいれました。 マクロ フォームを開く  フォーム名 :F単票  ビュー   :フォームビュー  フィルタ名 :  Where条件式 :[No]=[Forms]![F帳票]![No]  データモード:  ウィンドウモード:ダイアログ フォームF帳票 で、検索窓を作って検索した一覧の中から単票表示したいレコードのボタンをクリックして単票フォームをダイアログで開かせたいです。 上記のようにやってみたのですが、単票フォームは開くもののデータは空白になってしまいます。 ちなみに、作ったマクロを実行してみると Forms!F帳票!No とパラメータの入力を求められるので適当な数字をいれるとその数字に該当した単票フォームが開きます。 WEBで探して同じような感じで作ってみたのですがうまくいきません。 どこが間違っているのでしょうか? ちなみにクエリ Q単票 の Noの抽出条件に[Forms]![F帳票]![No]をいれてみたりもしましたがうまくいきませんでした(空白で単票が開く) 何卒よろしくお願いします。

  • 単票フォームの印刷について

    めんどくさい質問ですみません。 フォームのレコードソースにSQLを設定してテーブルデータを条件検索して単票フォームを表示させたのですが、選択しているレコードだけを印刷することは可能なんでしょうか? また、そのレコードを事前に作製したXECELフォーマットの指定したセルにコピーして印刷ということも可能なんでしょうか? 自分でも調べているのですが後者のほうの資料がなくて困っています。 もしよかったらどなたか教えていただけないでしょうか?

  • フリー検索結果を(単票)と(帳票)で表示させたい

    [やりたいこと] フリー検索結果を単表フォームで表示していますが、検索レコードが多とき帳票フォームで表示させたい。アドバイス「ご指導」をお願い致します。 [オブジェクト(Access2007)] テーブル名:情報データベース「フィールド:日時、発生国、分野、内容、WEB」 クエリ:情報データ検索クエリ「抽出条件欄(記述):Like "*" & [内容(一文字可)] & "*"」 フォーム:情報データ検索結果単票(単票)「レコードソース:情報データ検索クエリ」 フォーム:情報データメインフォーム(単票) [現状のご報告(運用)] 情報データメインフォーム(単票)上にコマンドボタンを配して、情報データ検索結果単票(単票)を開いています。 [やりたいことのイメージ] 検索結果として単票フォームが開いた後、情報データ検索結果単票(単票)に配したコマンドボタンで、情報データ検索結果一覧(一覧)を開いて検索結果を一覧で表示させたい。 [考えてみたこと(やりたいことは自力実現できず)] 1,情報検索総合フォームを作成し、情報データ検索結果単票(単票)と情報データ検索結果一覧(一覧)を開く2個のボタンを配して、データが多そうなときは(一覧)のコマンドボタンで検索。データが少ないと思われるときは(単票)のコマンドボタンで検索。しかし、データの多少は実行してみないと分からないのと、結局のところ2度手間になるので断念しました。 2,ドルグボタンで(単票)検索後に(一覧)検索を行い、(単票)と(一覧)を一緒に表示させる方法もあるかと考えました。しかし、この方法では1のコマンドボタン2個が1個になるだけで、検索文字を入力する工数は変わらないので、考えただけで終わりました。※元々、マクロやプロシージャのコマンドやコーティングが分からないレベル。 3,自分なりの結論として、やはり(単票)で表示させたあとに、(単票)上に配したコマンドボタンで帳票を開く方法がベストかと考えました。「アドバイスがありましたら宜しくお願いします。」 以上ですが、宜しくお願いします。

  • アクセス:フォームで氏名をドロップ式で選んでレコード移動

    よろしくお願いします。 おそらく非常に基本的なことだと思いますが、ご指導をお願いいたします。 テーブルでidと氏名はすでに入力されています。他にフィールドがたくさんあり、フォームを使って入力したいのです。次のようにしたいのですが行き詰っています。ご指導お願いします。 やりたいこと:「フォームで氏名のボックスをドロップ式(リスト式?)にして、三角マークをクリックすると氏名が表示され、そこで氏名を選んでレコード移動をし、他のフィールドにデータ入力をしたい。」 よろしくお願いいたします。

  • Accessでテーブルにあるレコードが、選択クエリで抽出されない

    Accessについての質問です。 社員名簿を作ろうと思い入力用のフォームを作成して、そこから新入社員の氏名や部署などを入力しました。 それで、テーブルの内容を見ると新入社員の氏名や部署などは入っているのですが、 選択クエリを使って、新入社員の氏名で検索をしても引っ掛かりません。 テーブルに存在しているレコードを検索しても、引っ掛からないのはなぜでしょう?

  • Accessに於けるフォームフィルタについて

    フォームフィルタで選択する場合、データベースに1000件のレコードがある場合、コンボボックスにはきちんと候補のリストが出てきます。しかし、1001件のレコードになると、このコンボボックスの候補リストが出てきません。"Is Null" と"Is Not Null"の2つだけです。 (小生、英語版を使っているので、上記のような表現ですが)。これは、Acessの場合そういう仕様なんでしょうか? それとも、何か設定が足りないからなのでしょうか? 宜しくサジェスチョンをお願い致します。 尚、ACCESSのバージョンは、Access2000とAccess2003の両方でチェックしてみました。

専門家に質問してみよう