アクセス2003での作り込みの段階で悩んでします。ほぼ初心者です。
当方、検索条件をプルダウンで選び、検索キーワードを入力し、データを抽出するプログラムを作りました。またこの検索条件&キーワードは2つあり、絞込検索ができるようになっています。
その際のVBAは、以下の通りです。
Me.Filter=""&Me![検索条件1(コンボ1)]&"like'"&"*"&Me![検索キーワード1(テキスト1)]&"*"&"'and"&Me![検索条件2(コンボ2)]~
質問
(1)検索条件1や検索キーワード1が空欄であった場合、エラーのポップアップが出るようにするには?
→今のところ、検索条件2と検索キーワード2が空欄でも抽出はできるのです。
ただし、検索条件2と検索キーワード2のみに入力すると、エラー「演算子がありません」が出る。
(2)本当なら、どちらかでも空欄になってもエラーが出ないようにしたい。
それに対し、bin-chanさんが回答してくださったVBA(2013/10/26 22:09)ですと、まず
列って何を指すのか?
列をテキストにしてみるとエラーが出てしまう。
のです。
(3)本当なら、検索条件なんか選ばず、検索キーワードを2つくらい入力して抽出したい。すなわち、検索するフィールドをテーブルの全フィールを対象とする場合、これまたbin-chanさんが回答してくださった(同上の日時)ユニオンクエリを使ったら、エラー「ユニオンクエリが定義できません」と・・・。どうすればよいでしょうか?
決してbin-chanさんをやり玉にするのではなく、私のやり方が何か間違っていると思いますし、一旦質問内容を整理したく、新たに質問しました。
(4)これはアクセスとは関係ない質問です。goo教えてで行った質問が、やってもいないのに、Okwaveなるものに同じ質問がありました。これはどうしてなんでしょうか?
以上、よろしくお願いいたします。
No.3ベストアンサー
- 回答日時:
No2の一部を載せると、
'(1)
If Not IsNull(Me!コンボ2) And Not IsNull(Me!テキスト2) Then
Me.Filter = "" & Me![コンボ1] & " Like '" & "*" & Me![テキスト1] & "*" & "' AND " & Me![コンボ2] & " Like'" & "*" & Me![テキスト2] & "*" & "'"
Me.FilterOn = True
Exit Sub
End If
'(2)この場合、コンボ1とテキスト2の組合せをしても問題ないならば
'問題があれば MsgBox "検索不能" としてExit Sub の前にこれを入れ、あとは削除
If IsNull(Me!コンボ2) And Not IsNull(Me!テキスト2) Then
'コンボ1とテキスト1、およびコンボ1とテキスト2の組合せでANDで結ぶ場合
Me.Filter = "" & Me![コンボ1] & " Like '" & "*" & Me![テキスト1] & "*" & "' AND " & Me![コンボ1] & " Like'" & "*" & Me![テキスト2] & "*" & "'"
'またはORで結んでテキスト1とテキスト2のどちらかを含む場合。普通はこちらかも。
'Me.Filter = "" & Me![コンボ1] & " Like '" & "*" & Me![テキスト1] & "*" & "' OR " & Me![コンボ1] & " Like'" & "*" & Me![テキスト2] & "*" & "'"
Me.FilterOn = True
Exit Sub
End If
'以下省略
'(3) ここは(2)と同様に複雑。検索、フィルタをしても問題ない組合せを考える
If Not IsNull(Me!コンボ2) And IsNull(Me!テキスト2) Then
Me.Filter = "条件を設定"
Me.FilterOn = True
Exit Sub
End If
'(4) この場合はコンボ1とテキスト1の組合せのみの条件設定。中身は省略
If IsNull(Me!コンボ2) And IsNull(Me!テキスト2) Then
Me.Filter = "条件を設定"
Me.FilterOn = True
Exit Sub
End If
回答、ありがとうございます。
この回答で、他に回答が出ないと判断し、ベストアンサーとして選ばせていただきました。
bin-chanさん、piroin654さんらの回答は、家ではなかなか見れませんが、会社のPCでは見ています。
また、ただ単にマネするだけではなく、教えてくださったものからさらに応用ができるように、そのVBA(SQL)文を解読しています。
よって、自分のものにするにはちょっと時間がかかります。しかし、必ずや実現させていきます。
何通りにも設定しないといけないのは、費用対効果の面から、あまり得策ではないですね。
おつきあい、本当にありがとうございました。
No.2
- 回答日時:
お礼欄にあります、
>(3)の検索条件を選ばすの件
>そうですか。時間と暇ですか。
>本当は、これを実現したいのです。しかし、
>すぐに運用をと要求されているので、一旦差し置きます。
については、No1で申し上げたようなことですが、
何故?といわれれば、簡単に言いますと、四つのコントロールが
Nullであるか、そうではないかの組合せは、
2の4乗通り
すなわち、16通りの組合せがあるからです。さらに、
これらの個々の条件を積(AND)にするのか、和(OR)に
するのかによってさらに条件が複雑になり、組合せも膨大に
なるのです。
これと同等のことを二つのテキストボックスでのフィルタで
実現しようと思えば、少なからず考え込むのでは、と思います。
コンピュータはプログラム通りにしか動かないのです。
コンボ1とテキスト1をNull禁止にすれば、
組合せは、積(AND)ならば、(XはNullです)
1 2 3 4
コンボ1 ○ ○ ○ ○
テキスト1 ○ ○ ○ ○
コンボ2 ○ X ○ X
テキスト2 ○ ○ X X
の四つの組合せのみです。これらの組合せを
フィルタのためのWHERE句をかけばいいのです。
すなわち、わかりやすくしようと思えば、
Xのところは条件からはずせばいいのです。
組合せ別に、たとえば、条件はコンボとテキストの
関係が分からないので書いていませんが、以下のように。
Private Sub コマンド0_Click()
Me.FilterOn = False
'検索に進む前に最初に入力状況をチェック
If IsNull(Me!コンボ1) Then
MsgBox "検索条件1の選択をしてください"
'処理を中断します。
Exit Sub
End If
If IsNull(Me!テキスト1) Then
MsgBox "検索キーワード1を入力してください"
'処理を中断します。
Exit Sub
End If
'検索とフィルタ
'(1)
If Not IsNull(Me!コンボ2) And Not IsNull(Me!テキスト2) Then
Me.Filter = "条件を設定"
Me.FilterOn = True
Exit Sub
End If
'(2)
If IsNull(Me!コンボ2) And Not IsNull(Me!テキスト2) Then
Me.Filter = "条件を設定"
Me.FilterOn = True
Exit Sub
End If
'(3)
If Not IsNull(Me!コンボ2) And IsNull(Me!テキスト2) Then
Me.Filter = "条件を設定"
Me.FilterOn = True
Exit Sub
End If
'(4)
If IsNull(Me!コンボ2) And Not IsNull(Me!テキスト2) Then
Me.Filter = "条件を設定"
Me.FilterOn = True
Exit Sub
End If
End Sub
のようにします。条件によっては中の条件をいくつか
くっつけることで短くはできますが、内容がわからないので
このようにしておきます。
No.1
- 回答日時:
(1)
コンボ1とテキスト1への入力は必須とするのですか。
もし、そうならば、たとえばボタンクリックのイベントで
検索しフィルタをかけるならば、
Private Sub ボタン0_Click()
If IsNull(Me!コンボ1) Then
MsgBox "検索条件1を選択してください"
Exit Sub
End If
If IsNull(Me!テキスト1) Then
MsgBox "検索キーワード1に入力してください"
Exit Sub
End If
以降、変数の宣言や検索、フィルタなどの記述
・
・
・
のように、最初に記述しておき、入力待つようにします。
(2)
>本当なら、どちらかでも空欄になってもエラーが出ないようにしたい。
二つのコンボボックスと二つのテキストボックスの
どのような組合せでフィルタをかけたいのか、そこを
明確にしないと、後出しで「実はこうなのです」と
言っていると、肝心な回答がつかなくなります。
「列」とはフィールドを指すのでは。フィールドとは
テーブルのフィールド、あるいは帳票タイプのフォーム
ならばデザインビューにしたときに表示されるレコードを
表示するテキストボックスなど、では。
>列をテキストにしてみるとエラーが出てしまうのです。
この場合のテキストとはどれを指すのか分からないので
何とも言えません。
(3)
>本当なら、検索条件なんか選ばず、検索キーワード
>を2つくらい入力して抽出したい。
これは、コード量がどのくらいになるのかわかりませんが、
出来ないことはないにしても、時間と暇があれば、
のことになります。これもどのようなデータをどのように
抽出をしたいのか細部にわたり情報が必要になります。
これは、質問の趣旨から離れているのでここでは言及
しません。
(4)
goo以外にもありますが、以下に
http://faq.okwave.jp/EokpControl?&site=guidePC&t …
あるように、OKWaveが主催で、gooなどの提携先からログインして行なわれた
Q&AはOKWaveのサーバーで管理され、それぞれの提携先にサーバーのデータが
再配分されるようになっています。
以上ですが、(2)の前半についてが主要なことなので、
そのあたりはどうですか。
回答、ありがとうございます。
(1)の「検索条件1」「検索キーワード1」を空欄にしたらの件
そうでしたか。最初にIF文を入れるのですね。Me.filterの後に入れてました。
(4)のOKWAVEに載ってしまう件
なんだか勝手に載っているようで、気味が悪かった。
これをやめてくれ、gooだけにしてくれとか訴えることはできないのでしょうか?
あっちゃこっちゃで面倒。
(3)の検索条件を選ばすの件
そうですか。時間と暇ですか。
本当は、これを実現したいのです。しかし、すぐに運用をと要求されているので、一旦差し置きます。
(2)のどちらかを空欄にしてもの件
人間はファジイなので、これの処理を行えれば良いのかなと思っています。
これについては、先のbin-chanさんからいただいたのを試行錯誤しながら行っています。
ご回答してくださった内容と合わせ、もう少し研究させてください。そのうえで改めてご質問します。
次の段階として、抽出したデータでグラフとか集計を要求されてきています。
よろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) Access 複数条件検索の設定が上手く行きません 1 2022/07/22 20:37
- Excel(エクセル) セルの値をグーグルで検索するエクセルVBAについて! 2 2022/08/01 21:41
- Excel(エクセル) エクセルVBAについて質問です。 2 2022/12/09 17:59
- SEO SEOの検索順位について 例えばあるキーワードで検索順位が6位だとしたら、そのキーワードに関連する良 1 2022/06/30 21:51
- Excel(エクセル) エクセル 条件に合う日付に入力された時間数の合計したい 4 2022/06/17 22:18
- Visual Basic(VBA) VBA チェックボックスの設定について 1 2022/10/24 10:27
- 教えて!goo 指摘されたので質問です 1 2022/04/17 14:11
- ヤフオク! ヤフオク タイトル 隠し技? 裏技? 1 2023/04/25 06:09
- Excel(エクセル) 【Excel】指定のセル内容を基に別シートのセルを検索して選択する【VBA】 1 2022/06/16 16:16
- Visual Basic(VBA) VBAチェックボックスで有効無効切り替えできるように 5 2022/10/21 16:13
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Access コンボボックスの値を...
-
しょーもない質問ですが…
-
アクセスのコンボボックスの重...
-
コンボとセットの違い
-
MP3が聞けるオーディオコンボ
-
ラテン語で「闇」を意味する単...
-
「ぱーりない」「パーリナイ」...
-
金目当ての女しか寄ってこない...
-
ビッグモーターについて
-
「太陽にほえろ!」の太陽は朝...
-
半分寝ている状態のとき、不思...
-
家系が途絶える事は悪い事か
-
ヒロアカのオールマイトは何で...
-
「闇」から連想するもの・・・
-
天然な人って、どんな人?
-
もし世界中の人が自分の過去に...
-
密かに…や、隠れた…などを美し...
-
恋人とパーティーをする場所、...
-
緊急 アムウェイのパーティ?ド...
-
闇バイトの応募はおとり捜査で...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Access コンボボックスの値を...
-
コンボとセットの違い
-
Access 複数条件検索の設定が上...
-
アクセスのコンボボックスの重...
-
Access パラメータークエリ VBA...
-
「コンボ」の意味教えてください
-
しょーもない質問ですが…
-
ACCESSコンポボックス
-
アクセス コンボボックス VBA
-
access vba コンボボックス 読...
-
Nullについて
-
CD-RWドライブで、CD-...
-
PS3バイオハザード6 マーセナリ...
-
コンボボックスの値が変更され...
-
「ぱーりない」「パーリナイ」...
-
ラテン語で「闇」を意味する単...
-
転生アニメの食事問題。 日本人...
-
闇バイトの応募はおとり捜査で...
-
ヒロアカのオールマイトは何で...
-
梶井基次郎の「闇の絵巻」という...
おすすめ情報