アプリ版:「スタンプのみでお礼する」機能のリリースについて

画像のようにコンボ1、コンボ2、テキストボックス3という検索フォームフォームを作りました。
コンボ1は会社の部署、コンボ2は所属課、テキスト3は備考、メモ欄です。
検索開始をクリックしたら選択されている項目のみでレコードを表示させたいです。
パターンは、
コンボ1コンボ2テキスト3全て完全一致の検索。
コンボ1は選択、コンボ2は未選択、テキスト3は検索範囲を絞るワードを入れる、検索。
コンボ1、2が選択でテキスト3は空白で検索
最後にテキスト3のみで検索。
4パターンを作れと指示があり、本を読みながら検索フォームまで何とか漕ぎ着けた初心者です。
完全一致はマクロビルダーを使って出来たのですが、他のパターンがand検索にならず困っています。
マクロビルダーではこれらの事をするのは難しいでしょうか?

「Access 複数条件検索の設定が上手く」の質問画像

A 回答 (1件)

こんにちは。



なかなか回答付かないですね、、
自信ありませんけど回答してみます。ご質問の内容自体はそれ程難しいことではないです。

ただ、さらりと書いていらっしゃいますが、マクロビルダーでこれを考えるのは大変です。できるとは思いますけど、その手順を説明するのがしんどいです。

よって、コンボボックスへデータ追加等の基本的な部分はできている前提で、VBA の回答をします。考え方は応用できると思います。


1.>レコードを表示させたいです。
・・どこに?
とりあえず、[検索フォーム結果] というサブフォームを作って、そこに表示させます。


2.検索条件について
4パターンあるとのことですが、恐らく考え過ぎです。シンプルに考えてみます。
まず、テキスト3が「備考」であるなら、テキストボックスに完全一致する検索語を入力するって大変じゃないですか?
部分一致検索(ワイルドカードによる)で問題ないと思います。

テキスト3が空の時は、ワイルドカードで挟んでしまえば良いだけ。
そこを押さえたら後は、

 1)ComboBox1 に入力値があれば AND で条件を追加する
 2)ComboBox2 に入力値があれば AND で条件を追加する

でご希望の結果を表示させる SQL が完成します。

検索ボタンの名前が btnSearchとしたら、そのクリック時に[イベントプロシージャ]、次のようなコードを書き込みます。なお、

  cbo部署 → ComboBox1
  cbo所属課 → ComboBox2
  txt備考 → TextBox1

の様にご自身のコンロール名に置き換えて下さいね。


Private Sub btnSearch_Click()
  
  '/Guard
  If IsNull(cbo部署) * IsNull(cbo所属課) * IsNull(txt備考) Then
    MsgBox "検索条件を入力して下さい", vbInformation
    Exit Sub
  End If
  
  Dim dep As String: dep = Nz(cbo部署.Value)
  Dim sec As String: sec = Nz(cbo所属課.Value)
  Dim mem As String: mem = Nz(txt備考.Value)
  Dim sql As String
  
  sql = ""
  sql = sql & "SELECT *"
  sql = sql & " FROM [テーブル1]"
  sql = sql & " WHERE [備考] LIKE '*" & mem & "*'"
  If Len(dep) Then sql = sql & " AND [部署] ='" & dep & "'"
  If Len(sec) Then sql = sql & " AND [所属課] ='" & sec & "'"
  sql = sql & ";"
  
  With Me.検索フォーム結果.Form
    .RecordSource = sql
    .Requery
  End With
  
End Sub
    • good
    • 1
この回答へのお礼

ありがとうございます!!
ちゃんと検索できるようになりました。
KenKen_SP様の言う通り難しく考えすぎていたんですね…すべてのパターンで考えなければならないと思っていました。
頼るものが本しかなかったので本当に助かりました。

SQLというのも初めて知ったので、教えていただいたコードを意味を調べてみてとても勉強になりました。
本当にありがとうございました。

お礼日時:2022/07/26 10:51

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A