Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1871 / 2272 ツリー ←次へ | 前へ→

【4853】フィルタについて うさこ 05/4/10(日) 0:07 質問[未読]
【4854】Re:フィルタについて Gin_II 05/4/10(日) 14:41 回答[未読]
【4855】Re:フィルタについて うさこ 05/4/10(日) 15:38 質問[未読]
【4856】Re:フィルタについて Gin_II 05/4/10(日) 16:27 回答[未読]
【4857】Re:フィルタについて うさこ 05/4/10(日) 17:06 質問[未読]
【4858】Re:フィルタについて Gin_II 05/4/10(日) 17:37 回答[未読]
【4859】Re:フィルタについて うさこ 05/4/10(日) 18:12 質問[未読]
【4861】Re:フィルタについて Gin_II 05/4/10(日) 21:56 回答[未読]
【4864】Re:フィルタについて うさこ 05/4/10(日) 23:19 お礼[未読]

【4853】フィルタについて
質問  うさこ  - 05/4/10(日) 0:07 -

引用なし
パスワード
   いろいろな条件をチェックボックスでチェックし、
その条件にあったデータだけをリストボックスに表示させたいのですが、
そういう場合、フィルタを使えますか?
テーブルはひとつだけです。
よろしくお願いします。

【4854】Re:フィルタについて
回答  Gin_II  - 05/4/10(日) 14:41 -

引用なし
パスワード
   >そういう場合、フィルタを使えますか?

使えません。
リストボックスの、RowSource プロパティを、動的に変更するとかに
なると思います。

【4855】Re:フィルタについて
質問  うさこ  - 05/4/10(日) 15:38 -

引用なし
パスワード
   ▼Gin_II さん:

ご返答、ありがとうございます。
初めて作っているので変な質問ですみません。
リストボックスだから使えないのでしょうか?

それと、リストボックスを使う場合は、

>リストボックスの、RowSource プロパティを、動的に変更するとかに
>なると思います。

というのは、DAO の Recordset を使ってやるというこどでしょうか?

【4856】Re:フィルタについて
回答  Gin_II  - 05/4/10(日) 16:27 -

引用なし
パスワード
   >リストボックスだから使えないのでしょうか?
はい。Filter プロパティは、フォーム・レポートにしかありませんので。


>というのは、DAO の Recordset を使ってやるというこどでしょうか?
DAOは、関係ないです。
Me!リストボックス名.RowSource = "SELECT FLD FROM テーブル名"
のように使うということです。

【4857】Re:フィルタについて
質問  うさこ  - 05/4/10(日) 17:06 -

引用なし
パスワード
   ▼Gin_II さん:

>Me!リストボックス名.RowSource = "SELECT FLD FROM テーブル名"
>のように使うということです。

今はリストボックスの値集合ソースにクエリを作っているのですが、
そこにクエリ(ただリストボックスに表示させるだけで、条件などはつけていません。)を書いてしまうとだめなんでしょうか?

初期画面でリストボックスにデータを全件表示させて、
チェックボックスで条件をつけて絞り込んでいくという風にしたいのですが、
チェックボックスがクリックされたら、上記のように
RowSourceを指定するという形にすればいいのでしょうか?

ほんとに初心者なのですみませんがよろしくお願いします。

【4858】Re:フィルタについて
回答  Gin_II  - 05/4/10(日) 17:37 -

引用なし
パスワード
   > そこにクエリ(ただリストボックスに表示させるだけで、条件などは
> つけていません。)を書いてしまうとだめなんでしょうか?

段階的に、リストボックスの値を変更したいんですよね?
でしたら、そのクエリに抽出条件を設定するか、リストボックスの値集合ソースを
動的に変更するかしないとダメだってことは理解してもらえましたか?

どっちの方法でも構わないと思いますが、、
> チェックボックスで条件をつけて絞り込んでいくという風にしたいのですが、
これの詳細な内容が分からないので、具体例も提示できません。


> チェックボックスがクリックされたら、上記のように
> RowSourceを指定するという形にすればいいのでしょうか?
です。

【4859】Re:フィルタについて
質問  うさこ  - 05/4/10(日) 18:12 -

引用なし
パスワード
   ▼Gin_II さん:

>段階的に、リストボックスの値を変更したいんですよね?
>でしたら、そのクエリに抽出条件を設定するか、リストボックスの値集合ソースを
>動的に変更するかしないとダメだってことは理解してもらえましたか?
>
はい!

>どっちの方法でも構わないと思いますが、、
>> チェックボックスで条件をつけて絞り込んでいくという風にしたいのですが、
>これの詳細な内容が分からないので、具体例も提示できません。
>
そうですよね・・

 <お料理テーブル>
  お料理名 牛肉 豚肉 鶏肉 タマネギ にんじん ジャガイモ 写真 レシピ     
   カレー  YES NO  NO  YES    YES    YES   YES  YES
  オムライス NO  NO YES  YES    NO     NO   NO   YES
  

  <フォーム>

  肉類:□ 牛肉 □ 豚肉 □ 鶏肉
  野菜:□ タマネギ □ にんじん □ ジャガイモ

  リストボックス   写真  レシピ  
   カレー      有    有 
   オムライス    無    有


  1.最初はリストボックスに全件表示
  2.例えば、牛肉とタマネギにチェックをつけたら、
    カレーとオムライスを表示
  3.例えば、豚肉のみにチェックをつけたら表示なし
  4.例えば、牛肉とジャガイモにチェックの場合はカレーのみ表示

  という感じです。
  
  検索開始とかのボタンはなくて、どれかのチェックボックスがクリックされた
  ら、すぐにリストボックスに反映させたいのです。

もう頭っからどういう風にしていいのか、参考書をよんでもわからず、
流れだけでも教えていただきたいのです。
わかりにくくてすみませんがよろしくお願いします。

【4861】Re:フィルタについて
回答  Gin_II  - 05/4/10(日) 21:56 -

引用なし
パスワード
   > <お料理テーブル>
>   お料理名 牛肉 豚肉 鶏肉 タマネギ にんじん ジャガイモ 写真 レシピ     
>    カレー  YES NO  NO  YES    YES    YES   YES  YES
>   オムライス NO  NO YES  YES    NO     NO   NO   YES


テーブル:T_材料
 フィールド:材料ID
       材料名

テーブル:T_料理
 フィールド:料理ID
       料理名
       写真の有無
       レシピの有無

テーブル:T_使用材料
 フィールド:料理ID
       材料ID


のようなテーブル構成がいいと思います。


まぁ、現在の構成を前提で回答します。

フォームの開く時イベントで、

Me!リストボックス.RowSource = _
        "SELECT お料理名, 写真, レシピ FROM お料理テーブル"


フォームモジュールの中に、
Private Sub 抽出サブ()

  Dim strSql As String
  
  If Me!chk牛肉 = True Then
    strSql = strSql & "牛肉 = True AND "
  End If
  
  If Me!chk豚肉 = True Then
    strSql = strSql & "豚肉 = True AND "
  End If
      :(省略)

  strSql = "SELECT お料理名, 写真, レシピ FROM お料理テーブル" _
      & Left(strSql, Len(strSql) - 4)
  Me!リストボックス.RowSource = strSql
  Me!リストボックス.Requery

End Sub


んで、各チェックボックスの更新後イベントで、

Call 抽出サブ

と入れてみてください。

テキストエディタでの直書きなので、間違いがあるかも ^^;

【4864】Re:フィルタについて
お礼  うさこ  - 05/4/10(日) 23:19 -

引用なし
パスワード
   ▼Gin_II さん:

ご指導のおかげで考え方がわかりました!
その通りにやってみたら、ここまでの処理はできるようになりました。
とっても助かりました(^^)。
1日お付き合い下さって、本当にありがとうございました。
また質問するかもしれませんので、そのときもぜひよろしくお願いしますm(_ _)m。

1871 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078242
(SS)C-BOARD v3.8 is Free