Page 184 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼絞込み検索画面を作りたいのですが・・。 ikedatti 03/1/28(火) 19:28 ┗Re:絞込み検索画面を作りたいのですが・・。 JAZZ兵衛 03/1/29(水) 16:41 ┗Re:絞込み検索画面を作りたいのですが・・。 ikedatti 03/1/30(木) 2:44 ┗Re:絞込み検索画面を作りたいのですが・・。 JAZZ兵衛 03/1/31(金) 14:46 ┗Re:絞込み検索画面を作りたいのですが・・。 ikedatti 03/2/3(月) 2:25 ─────────────────────────────────────── ■題名 : 絞込み検索画面を作りたいのですが・・。 ■名前 : ikedatti ■日付 : 03/1/28(火) 19:28 -------------------------------------------------------------------------
会員マスタから複数条件でメール配信先の会員を絞り込み検索するフォームを 作成しています。 条件は、性別、勤務希望地域1〜5、資格、免許、です。 入力された条件のみで検索します。 会員マスタの勤務希望地域も5つまで登録できるようになっています。 入力されたカラムの内容を見て、nullでなければwhere条件に 追加していくようにしたいのですが、スキルが追いつきません。 どなたか、力を貸してください。お願いいたします! |
長文ですみません。 こんな感じですかねぇ。 Private Sub 検索ボタン_Click() Dim sql_str As String '条件未入力時はエラーにする If IsNull(性別) And _ IsNull(勤務希望地域_01) And _ IsNull(勤務希望地域_02) And _ IsNull(勤務希望地域_03) And _ IsNull(勤務希望地域_04) And _ IsNull(勤務希望地域_05) And _ IsNull(資格) And _ IsNull(免許) Then MsgBox ("条件未入力") Exit Sub End If 'SQL文生成 '初期化 sql_str = "" '性別 If IsNull(性別) Then Else '条件が入力されていたら、条件を追加 sql_str = sql_str & "(([tbl_ex].[性別])='" & 性別 & "')" End If '勤務希望地域_01 If IsNull(勤務希望地域_01) Then Else If sql_str = "" Then Else '前条件が入力されていたら"and"を付加する sql_str = sql_str & " and " End If '条件が入力されていたら、条件を追加 sql_str = sql_str & "(([tbl_ex].[勤務希望地域_01])='" & 勤務希望地域_01 & "')" End If If IsNull(勤務希望地域_02) Then Else If sql_str = "" Then Else sql_str = sql_str & " and " End If sql_str = sql_str & "(([tbl_ex].[勤務希望地域_02])='" & 勤務希望地域_02 & "')" End If If IsNull(勤務希望地域_03) Then Else If sql_str = "" Then Else sql_str = sql_str & " and " End If sql_str = sql_str & "(([tbl_ex].[勤務希望地域_03])='" & 勤務希望地域_03 & "')" End If If IsNull(勤務希望地域_04) Then Else If sql_str = "" Then Else sql_str = sql_str & " and " End If sql_str = sql_str & "(([tbl_ex].[勤務希望地域_04])='" & 勤務希望地域_04 & "')" End If If IsNull(勤務希望地域_05) Then Else If sql_str = "" Then Else sql_str = sql_str & " and " End If sql_str = sql_str & "(([tbl_ex].[勤務希望地域_05])='" & 勤務希望地域_05 & "')" End If If IsNull(資格) Then Else If sql_str = "" Then Else sql_str = sql_str & " and " End If sql_str = sql_str & "(([tbl_ex].[資格])='" & 資格 & "')" End If If IsNull(免許) Then Else If sql_str = "" Then Else sql_str = sql_str & " and " End If sql_str = sql_str & "(([tbl_ex].[免許])='" & 免許 & "')" End If sql_str = "SELECT tbl_ex.* FROM tbl_ex WHERE (" & sql_str & ")" DoCmd.OpenForm "new_form" Forms!new_form.RecordSource = sql_str End Sub |
▼JAZZ兵衛 さん: ありがとうございました。何とかできそうです。 で、さらに質問していいですか? フィルタをかけた結果を、テーブルかクエリに残しておきたいのですが それはどうしたらいいのでしょうか?教えてください。 |
またまた長文で失礼します。 元のテーブル:"tbl_ex" 生成されるクエリ:"que_ex" 抽出したデータを登録するテーブル:"tbl_new" "que_ex"は作成しておいて下さい。 "tbl_new"は"tbl_ex"と同じフィールドで定義して下さい。 私、DAOしか使えませんので、ご了承ください。 Private Sub 検索ボタン_Click() Dim db As Database Dim que As QueryDef Dim sql_str As String Dim sql_str_02 As String '条件未入力時はエラーにする If IsNull(性別) And _ IsNull(勤務希望地域_01) And _ IsNull(勤務希望地域_02) And _ IsNull(勤務希望地域_03) And _ IsNull(勤務希望地域_04) And _ IsNull(勤務希望地域_05) And _ IsNull(資格) And _ IsNull(免許) Then MsgBox ("条件未入力") Exit Sub End If 'SQL文生成 '初期化 sql_str = "" '性別 If IsNull(性別) Then Else '条件が入力されていたら、条件を追加 sql_str = sql_str & "(([tbl_ex].[性別])='" & 性別 & "')" End If '勤務希望地域_01 If IsNull(勤務希望地域_01) Then Else If sql_str = "" Then Else '前条件が入力されていたら"and"を付加する sql_str = sql_str & " and " End If '条件が入力されていたら、条件を追加 sql_str = sql_str & "(([tbl_ex].[勤務希望地域_01])='" & 勤務希望地域_01 & "')" End If If IsNull(勤務希望地域_02) Then Else If sql_str = "" Then Else sql_str = sql_str & " and " End If sql_str = sql_str & "(([tbl_ex].[勤務希望地域_02])='" & 勤務希望地域_02 & "')" End If If IsNull(勤務希望地域_03) Then Else If sql_str = "" Then Else sql_str = sql_str & " and " End If sql_str = sql_str & "(([tbl_ex].[勤務希望地域_03])='" & 勤務希望地域_03 & "')" End If If IsNull(勤務希望地域_04) Then Else If sql_str = "" Then Else sql_str = sql_str & " and " End If sql_str = sql_str & "(([tbl_ex].[勤務希望地域_04])='" & 勤務希望地域_04 & "')" End If If IsNull(勤務希望地域_05) Then Else If sql_str = "" Then Else sql_str = sql_str & " and " End If sql_str = sql_str & "(([tbl_ex].[勤務希望地域_05])='" & 勤務希望地域_05 & "')" End If If IsNull(資格) Then Else If sql_str = "" Then Else sql_str = sql_str & " and " End If sql_str = sql_str & "(([tbl_ex].[資格])='" & 資格 & "')" End If If IsNull(免許) Then Else If sql_str = "" Then Else sql_str = sql_str & " and " End If sql_str = sql_str & "(([tbl_ex].[免許])='" & 免許 & "')" End If sql_str = "SELECT tbl_ex.* FROM tbl_ex WHERE (" & sql_str & ")" DoCmd.OpenForm "new_form" Forms!new_form.RecordSource = sql_str Set db = CurrentDb 'クエリ作成 DoCmd.DeleteObject acQuery, "que_ex" Set que = db.CreateQueryDef("que_ex", sql_str) 'テーブルに追加 sql_str_02 = "" sql_str_02 = sql_str_02 & "DELETE tbl_new.* " sql_str_02 = sql_str_02 & "FROM tbl_new" db.Execute sql_str_02 sql_str_02 = "" sql_str_02 = "INSERT INTO tbl_new " & sql_str db.Execute sql_str_02 db.Close End Sub |
いつも、丁寧な回答をありがとうございます。 一人っきりの製造なのでとても心強く思います。 回答していただいたコードを参考に問題解決できました。 本当にありがとうございました!! |