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

No.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
ありがとうございます!!
ちゃんと検索できるようになりました。
KenKen_SP様の言う通り難しく考えすぎていたんですね…すべてのパターンで考えなければならないと思っていました。
頼るものが本しかなかったので本当に助かりました。
SQLというのも初めて知ったので、教えていただいたコードを意味を調べてみてとても勉強になりました。
本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
アクセスのfilter、複数条件の記述方法を教えてください。
Access(アクセス)
-
ACCESSのフォーム上で複数検索したい項目がある場合どうすればいいですか?
Access(アクセス)
-
Access 同じデータをたくさんのレコード(同一列)に一度に入力するには
Access(アクセス)
-
-
4
ACCESS検索★ある文字を複数のフィールドの中から検索したい
その他(コンピューター・テクノロジー)
-
5
複数条件検索について
Access(アクセス)
-
6
ACCESSのフォームからデータの追加ができない
その他(データベース)
-
7
access 検索フォームで検索が出来ない(コードについて)
その他(データベース)
-
8
accessvba 複数条件でFilterをしたい
Access(アクセス)
-
9
Access レポート印刷するときに1ページに収める方法
Access(アクセス)
-
10
アクセスVBAのMe!と[ ]
Access(アクセス)
-
11
ACCESSで空白のデーターをクエリで判定/識別する方法を教えてくださ
Access(アクセス)
-
12
Accessフォームでの複数条件検索
Excel(エクセル)
-
13
フォームに複数の検索機能をつける方法
Access(アクセス)
-
14
アクセスで追加した項目に全て同じ値を一発で入れたい
Access(アクセス)
-
15
「フォームを作成できませんでした」
Access(アクセス)
-
16
Accessクエリ 複数フィールドを対象に空白の場合は全件表示したい
Access(アクセス)
-
17
ACCESSでVBAから選択クエリの抽出条件を指定したい
Access(アクセス)
-
18
Accessのテーブルのフィールドに式を入れる方法
Access(アクセス)
-
19
アクセスで#エラーを表示させない方法は?
Access(アクセス)
-
20
Access2010 「演算子がありません」エラー
その他(データベース)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Microsoft 365 Basic サブスク...
-
ACCESS VBA でのエラー解決の根...
-
列が255以上のCSVファイルをAcc...
-
Accessのリンクテーブルのパス...
-
Accessのクエリで、replace関数...
-
「テキストデータで送ってくだ...
-
ACCESSでの、データの並び替え...
-
access2019の起動が遅い
-
Excelの質問
-
Accessのレポートについて
-
Accessフォームの配色テーマを...
-
Accessのクエリの印刷設定
-
アクセスで、実行時エラー3075 ...
-
レポートの印刷を一括ではなく...
-
Excelを開く時と閉じる時に一度...
-
Accessのルックアップ
-
Accessデータベースを開くと同...
-
Accessで選択クエリを作成中で...
-
Excel上から、Accessのマクロビ...
-
access2021 コンパイルエラーの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Access コンボボックスの値を...
-
Access 複数条件検索の設定が上...
-
コンボとセットの違い
-
サブフォームにあるコンボボッ...
-
光学式ドライブの交換について...
-
アクセスのコンボボックスの重...
-
コンボボックスでの絞り込み2つ...
-
Access パラメータークエリ VBA...
-
コンボボックスの値が変更され...
-
「コンボ(ドライブ)」の由来、...
-
しょーもない質問ですが…
-
IDEのCD-Rドライブで現...
-
(アクセス)フォームからのメ...
-
アクセス コンボボックス VBA
-
テーブルに追加したデータフォ...
-
PS3バイオハザード6 マーセナリ...
-
VBAで検索した結果をコンボボッ...
-
ControlTypeの切り替えはデザイ...
-
コンボドライブとSuperDrive
-
「コンボ」の意味教えてください
おすすめ情報