質問: アクセスで アクセスで、この様に上に検索する項目があり、下にその一覧が表示されます。この状態は、部署名を"1"で検索した状態で、部署"1"の担当者名と品名の一覧が表示されています。 この時に、担当者名の名前や品名をクリックすると、上の検索フォームの検索欄にその担当者名が入る様にできますか? 検索をする時に、例えば部署で検索し、その後、担当者名を見て、検索フォームに入力しという作業が面倒であり、品名は15文字以上になる事もあり、インターネットのホームページなどでこの様な物を見たことがあり、できれば便利です。コンボボックスに入力し、選ぶというのも考えましたが、できれば下の一覧からクリック一つで済む様にしたいです。 説明がへたくそですいません。誰か教えて頂けないでしょうか? よろしくお願いします。
回答: 前提条件があまり分かりませんが、あるテーブルに「部署」「担当者名」「品名」があり、 フォームウィザードで表形式で作成されたものがベースであると仮定します。 ヘッダー部に「txt部署」「txt担当者名」「txt品名」名のテキストボックス、 および、条件クリア用のコマンドボタン「btn00」を配置したとします。 「部署」は、数値型と仮定します。 「txt部署」を直接入力するか、一覧内の「部署」をクリックすると、絞込み表示します。 タイミングは、「txt部署」の更新後処理になります。 一覧内の「部署」がクリックされた時に「txt部署」の更新後処理を走らせるために、 me.txt部署.setfocus me.txt部署.text = me.部署 としています。 更新後処理を走らせる必要が無ければ、 me.txt部署 = me.部署 とし、setfilter 関数を呼ぶのであれば、処理を追加します。 「txt担当者名」「txt品名」でも filter 絞込み表示が必要なら、コメントを有効にします。 後は、条件クリアでどこまでをクリアするか等、工夫してください。 (「txt部署」はクリアしないとか) おかしな動きがあれば、ドンドン修正してください。 以下例) ' 表示フィルターの設定 private sub setfilter() dim swhere as string dim sandor as string sandor = " and " swhere = "" if (not isnull(me.txt部署)) then swhere = swhere & sandor & "([部署] = " & me.txt部署 & ")" end if ' if (not isnull(me.txt担当者名)) then ' swhere = swhere & sandor & "([担当者名] = '" & me.txt担当者名 & "')" ' end if ' if (not isnull(me.txt品名)) then ' swhere = swhere & sandor & "([品名] = '" & me.txt品名 & "')" ' end if if (len(swhere) > 0) then me.filter = mid(swhere, len(sandor) + 1) me.filteron = true else me.filteron = false me.filter = "" end if end sub ' 初期状態 条件のクリア private sub form_load() call btn00_click end sub ' 条件クリアのボタンが押されたら private sub btn00_click() me.txt部署 = null me.txt担当者名 = null me.txt品名 = null call setfilter end sub ' ヘッダー部に配置したテキストボックスの更新後処理 private sub txt部署_afterupdate() call setfilter end sub private sub txt担当者名_afterupdate() ' call setfilter end sub private sub txt品名_afterupdate() ' call setfilter end sub ' マウスでクリックされたら private sub 部署_click() me.txt部署.setfocus me.txt部署.text = me.部署 end sub private sub 担当者名_click() me.txt担当者名.setfocus me.txt担当者名.text = me.担当者名 end sub private sub 品名_click() me.txt品名.setfocus me.txt品名.text = me.品名 end sub