- ベストアンサー
Accessで、yes/no型
業者抽出クエリの中に、得意分野をチェックボックスで6個、営業地域をチェックボックスで10個作っています。 それに対応する業者抽出フォームのフォームヘッダーに、得意分野をチェックボックスで6個、営業地域をチェックボックスで10個、抽出用コマンドボタン1個を配置しています。 得意分野を1個&営業地域を1個選択して、そのふたつの条件を満たす抽出用コマンドボタンのSQL文はどのように書けばよいのでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
チェックボックス名が ck分野1 ~ 6、ck地域1 ~ 10 とすると。 Private Sub コマンド0_Click() Dim flt As String flt = "" If Nz(Me.ck分野1, False) Then If flt <> "" Then flt = flt & " and " flt = flt & "[分野1] = True" End If If Nz(Me.ck分野2, False) Then If flt <> "" Then flt = flt & " and " flt = flt & "[分野2] = True" End If '同様に分野6まで If Nz(Me.ck地域1, False) Then If flt <> "" Then flt = flt & " and " flt = flt & "[地域1] = True" End If If Nz(Me.ck地域2, False) Then If flt <> "" Then flt = flt & " and " flt = flt & "[地域2] = True" End If '同様に地域10まで If flt <> "" Then Me.Filter = flt Me.FilterOn = True 'SQL = SQL & "WHERE " & flt Else Me.FilterOn = False End If End Sub ベタに書くならこうなると思います。 form のfilter を使って選択しています。 SQL文にしたいのなら、 SQL = SQL & "WHERE " & flt こんな感じで、SQL文にWHERE句を追加してください。 得意分野&営業地域を2個以上選択してもOKです。
その他の回答 (1)
- CHRONOS_0
- ベストアンサー率54% (457/838)
SQLは関係ないのでは、どう設計するかの問題です 肝心のテーブルの情報がありませんが どちらも1個しか選ばないのならチェックボックスはオプショングループにすればいいでしょう 得意分野オプショングループの戻り値を得意分野ID 営業地域オプショングループの戻り値を営業地域ID となるようににしておけば、そのまま抽出条件に使えます
お礼
質問の仕方を間違えました。 すみませんでした。 ありがとうございました。
補足
回答ありがとうございます。 質問の仕方がまずかったようです。 業者一覧テーブルの一部のデータを表示するために、業者抽出クエリを作りました。得意分野6個はYes/No型、営業地域10個もYes/No型でテーブルを作っています。 業者抽出フォームで得意分野を1個&営業地域を1個選択して、そのふたつの条件を満たすデータを帳票形式で表示させたいと思っています。 得意分野及び営業地域1個選択と書きましたが、二つ以上の選択もありえますので、オプショングループは使わず作りたいと思います。 業者抽出クエリ全体を表示させる業者抽出フォームは、あいうえお検索ができるコマンドボタンをフォームヘッダーにつけています。 同じように抽出用コマンドボタンを押すことによって、得意分野&営業地域を選択して、それらの条件を満たす抽出用コマンドボタンのSQL文---これが間違っていたのでしょうか?---イベントプロシージャはどのように書けばよいのでしょうか?
お礼
これですこれです!!! ありがとうございました!!! 思い描いていたイメージ通りのものが出来上がりました。 大変勉強になりました。