dポイントプレゼントキャンペーン実施中!

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

A 回答 (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
'------------------------------
    • good
    • 1
この回答へのお礼

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

お礼日時:2003/01/27 08:47

お疲れ様です


やりたい事は、VBAを使用しないと出来ない事だと思われます。
もし、VBAでもよろしければ...

※社員名簿TBLのフィールド構成を教えてもらうと具体的に説明可能です

この回答への補足

お願いします。
社員名簿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

となっていました。

これをフォームフィルタ(ロートの形)を押して「性別」”男”でフィルタ実行(別ロートの形)を押すと、レコードセレクタ内容はかわりますが、リストの内容は変わりません。
よろしくお願いします。

補足日時:2002/12/26 22:08
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!