• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:パラメータークエリで2個以上の条件を認識させたい)

パラメータークエリで2個以上の条件を認識させる方法

このQ&Aのポイント
  • パラメータークエリで2個以上の条件を認識させる方法についてアドバイスをお願いします。
  • 現在、フォームのレコードソースにパラメータークエリを設定していますが、2個以上の条件をスペースで区切って入力すると該当レコードが見つかりません。
  • 具体的な抽出条件欄への記述方法やテーブルとクエリの設定について詳細な説明をお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • piroin654
  • ベストアンサー率75% (692/917)
回答No.4

No2の最初のあたりで、 >「質問の内容に即して書けば、[顧客名]を[質問]とすべきで、」 と、書きましたが、「質問」ではなく「内容」でした。 フィールド名を正確にいれていませんでした。つまり、  「質問の内容に即して書けば、[顧客名]を[内容]とすべきで、」 です。 なお、この方法は条件が1個でも2個以上でも検索ができます。 たとえば、    コマンドボタン で検索すれば「コマンドボタン」を含むレコードが 表示されます。また、    コマンドボタン フォーム レポート と、半角スペースで区切って検索すれば、 「コマンドボタン」、「フォーム」、「レポート」 のいずれかを含むレコードが表示されます。 また、重要なことですが、抽出条件に    -1 とすることを忘れないように。また、 表示のチェックをはずしておくように。 これらを怠ると正確に検索できません。 なお、カンマ切りで検索をしたい場合は、 Eval(BuildCriteria("'" &[内容] & "'",10,"*" & Replace([内容(一文字可)],",","* Or *") & "*")) のように一部を変更します。同様にAnd条件の場合は、 Eval(BuildCriteria("'" &[内容] & "'",10,"*" & Replace([内容(一文字可)],",","* And *") & "*")) です。

eokwave
質問者

お礼

ありがとうございました。質問に忠実にご対応いただきまして感謝致しております。ただ、データ量が多いフィールドに於いてのみ、検索が上手くできていない状況です「私の習熟が問題かと・・・」。そこで、自身にて習熟を上げるべく試行を続けたいと思います。この件で再度質問が上がりました時、宜しくお願いします。

その他の回答 (5)

  • chayamati
  • ベストアンサー率41% (260/624)
回答No.6

今晩は、 >気になる点として、And条件「Orは検索できる」では該当なし「ANDを満たすデータあり」になってしまいます。  式は「Like "*" & [Forms]![Access操作3]![検索1] And Like "*" & [Forms]![Access操作3]![検索2] & "*"」です。  アドバイスのOrでの式:Like "*" & [Forms]![Access操作2]![検索1] Or Like "*" & [Forms]![[Access操作2]![検索2] & "*"  ANDは「抽出条件」に式を入れ、ORでは「抽出条件とまたは」に式を入れるのでしょうか。  実際に入れてみましたが「抽出条件(欄)」に繋がって記載されてしまいました。 ★それで良いのです。  デザインビューでは単一の条件で編集して、ビューを閉じると自動で編集して一つの条件にまとめてくれます ★「抽出条件とまたは」の下の行もまたはの条件を入力行です ★検索キーは[検索1][検索2][検索3]の3つですね  これらのボックスと情報検索フォームを開くコマンドボタン  (作成済みですね)配置するフォームは一つです  [Access操作3][Access操作2]を[メニュー]とします 補足 1.メニュー画面のテキストボックッス名はどのフィールドが対象か 2.クエリデザインで検索行右クリックからズームを選択すると  添付のように入力窓が表示されここで編修可能 3.「または行」を複数使うときは[検索行」が無効に成らない様に注意  理解できますか?内容のキーワードが戦争または平和としたとき  分野の項目のキーワードは両方に定義します

eokwave
質問者

お礼

ありがとうございました。パラメータ検索の知識が不足している状態でアドバイスを求めましたこと、申し訳なく思っています。親身に対応いただきまして、本当にありがとうございます。試行錯誤「お恥ずかしい」で取り組みましたが、And条件での検索が上手くできません。少し時間を頂いて、再質問とさせて頂きたいと思います。尚、今回の質問タイトルが「テキスト窓にスペースで検索」であり、忠実に対応いただいた経緯もあり、その方をベストアンサーにさせて頂きたいと思います。そちらの方の提案に付いてですが、データ量が少ないフィールドでないと上手く検索させられない状況です「習熟が必要か・・・」。何れにしましても、自分のスキルを多少なり底上「できればですが・・・」げしたく思います。使い勝手に於いては、提案いただいた方法に賛同できる点もありますので、再アドバイスの節は宜しくお願いします。ありがとうございました。

  • chayamati
  • ベストアンサー率41% (260/624)
回答No.5

今晩は >同一フィールド「複数」キーワードによる検索が  可能な点は、作業や操作の面で十分メリットがあると思います。  今回の希望としましたのが、  パラメーターに複数のキーワード「スペース・他も含め」がありました。  1パラメーターに複数のキーワード入力にての検索を実現したく。 ★この要望は、ブラインドタッチの出来る聡明な方と思いますが  パラメーターに複数のキーワードとは、パラメータの中を単数のキーワードに  分ける「,」等の区切り記号を入れることになり、実効時に単体のキーワード  に分解し、このキーワードをクエリーの検索条件行以下の行に定義すれば,Or条件の検索になりますが  この処理はクエリーではダメでしょう。  情報検索フォーム(情報検索クエリ)を開く前に処理します  フォームのVBAによるプログラミングが必須です ★添付図は前回と変わりありませんが、吹き出し部分は  1行目は実行時に入力、3行目は事前にメニューに検索ボックスを  配置して、情報検索フォームを開く前準備をします。  これにより、  1.検索キーの情報が残りますので再検索が楽です  2.検索ボックスはテキストボックス、コンボボックスが可能です   参照用に分野テーブル、国テーブル用意して、コンボボックスに適用すると   検索キーもマウスで指示が可能です

eokwave
質問者

補足

ありがとうございます。実際に使ってみて「あなたの提案」使いやすい気がしました。ただ、気になる点として、And条件「Orは検索できる」では該当なし「ANDを満たすデータあり」になってしまいます。式は「Like "*" & [Forms]![Access操作3]![検索1] And Like "*" & [Forms]![Access操作3]![検索2] & "*"」です。 アドバイスのOrでの式:Like "*" & [Forms]![Access操作2]![検索1] Or Like "*" & [Forms]![[Access操作2]![検索2] & "*" お恥ずかしい話で恐縮ですが、ANDは「抽出条件」に式を入れ、ORでは「抽出条件とまたは」に式を入れるのでしょうか。実際に入れてみましたが「抽出条件(欄)」に繋がって記載されてしまいました。フィールドを2個使って、片方を「抽出条件」にもう片方を「または」に式をいれましたが、やはり一つにまとまってしまいました。 使い方が分かっていないことに気が付きました。アドバイスをお願いできますか。

  • chayamati
  • ベストアンサー率41% (260/624)
回答No.3

今晩は、 >「スペースで区切って」  スペースでは区切記号にはなりませんここでの区切り記号は演算子(And,Or)です    Like "*" & [検索1] And Like "*" & [検索2] & "*"  ここで[検索1] 、[検索2]はフォームを開くと入力窓が表示されます。  この[検索1]、[検索2]を「情報データ検索結果単票」を開くフォーム「メニュー」に配置して  Like "*" & [Forms]![メニュー]![検索1] And Like "*" & [Forms]![メニュー]![検索2] & "*" 補足  入力が大変ですね  添付は情報検索デザイン画面です  左端はワイルドカード(*)全てのフィールドが対象  2つ目、3つ目はAnd検索の為検索対象の  「内容」が2つで表示不要ですので表示✔を外してます  抽出条件以下は条件設定箇所です。   同一行の条件はAnd条件、行が変わるとOr条件  デザイン完了で一旦閉じて再度開くと「内容」が一つになりますが  表示✔を外してます

eokwave
質問者

お礼

ありがとうございます。親身に対応「イメージの添付」いただいて感謝いたします。アドバイス頂きました内容ですが、同一フィールド「複数」キーワードによる検索が可能な点は、作業や操作の面で十分メリットがあると思います。ありがとうございます。今回の希望としましたのが、パラメーターに複数のキーワード「スペース・他も含め」がありました。勿論、アドバイスいただきました手法は実際に試してみました。私のレベルには直感的でわかり易いと感じました。しかし、どうしても1パラメーターに複数のキーワード入力にての検索を実現したく思っています。ただ、方法は幾つも有ることを改めて知る機会となりました。感謝致します。

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.2

少し私の記述のしかたが悪かったみたいです。No1では、 Or検索をする場合は、 Eval(BuildCriteria("'" & [顧客名] & "'",10,"*" & Replace([内容(一文字可)]," ","* Or *") & "*")) と、書いていますが、この中の顧客名というのがどうも間違いの元のようです。 質問の内容に即して書けば、[顧客名]を[質問]とすべきで、 Or検索をする場合は、 Eval(BuildCriteria("'" &[内容] & "'",10,"*" & Replace([内容(一文字可)]," ","* Or *") & "*")) とします。つまりこのコード「[内容」というフィールドのデータについて 複数条件で検索をする、というもので、[内容(一文字可)]というのは 受け取るパラメータとなり、パラメータの標題としても表示されます。 そして抽出条件を-1にしておくのは同じです。And検索についても同様です。 したがって、補足にある、 Eval(BuildCriteria("'" & [質問内容(一文字可)] & "'",10,"*" & Replace([解決策(一文字可)]," ","* Or *") & "*")) のような書き方はしません。 したがって、質問ではテーブルのフィールド名が ・テーブル名:情報データベース「フィールド:日時、発生国、分野、内容、WEB」 のようになっていたので、この「内容」というフィールドに対する抽出条件 ということになります。ただし「内容」というフィールドの抽出条件に 書くのではなく、新しいフィールドにこの条件を書きます。 補足では、「質問内容フィールド」とフィールド名が変化しているので 多少なりとも戸惑っていますが、もし「内容」というフィールドが 実際には「質問内容」というフィールド名ならば、 Eval(BuildCriteria("'" & [質問内容] & "'",10,"*" & Replace([質問内容(一文字可)]," ","* Or *") & "*")) とします。つまり、 Eval(BuildCriteria("'" & [検索対象のフィールド名] & "'",10,"*" & Replace([パラメータの名称]," ","* Or *") & "*")) というような書き方をします。「パラメータの名称」というのは、 プログラムでいえば変数のようなもので、「XYZ」としても かまいません。 長くなるので、一応ここまでを確認してクエリを組んでみてください。

eokwave
質問者

お礼

ありがとうございます。アドバイスの情報を正確に理解していませんでした。例えば、Replace([パラメータの名称]であること等ですが、実際に試してみまして上手く行きました。希望通りの出来栄えになりそうです。ありがとうございました。取り急ぎご報告致します。

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.1

クエリの抽出条件に記述している「Like "*" & [内容(一文字可)] & "*"」を削除し、 新しいフィールドに Or検索をする場合は、 Eval(BuildCriteria("'" & [顧客名] & "'",10,"*" & Replace([内容(一文字可)]," ","* Or *") & "*")) And検索をする場合は、 Eval(BuildCriteria("'" & [顧客名] & "'",10,"*" & Replace([内容(一文字可)]," ","* And *") & "*")) と入れます(上記のいずれかをそのままコピーし、貼り付けます)。 そして、その抽出条件に     -1 それからその表示のチェックを外します。 つまり、 フィールド 日時  発生国  分野  内容  WEB   上記をここに テーブル   並び替え 表示   チェック チェック チェック チェック チェック チェック無し 抽出条件                            -1 のようにします。テーブル名は長いので省略しています。 保存し、一旦クエリを閉じ、もう一度クエリをデザインビューで開き、 新しいフィールドのチェックがはずれているか確認してください。

eokwave
質問者

補足

早速のアドバイスありがとうございます。データベースの検索機能のアップと丁寧な使い勝手に関心があり、せっかく頂いた貴重な機会でもありますので、実現させたいと思っています。 [やってみたこと] 利用頻度の高いデータベース「ACCESS操作」で検証を行ってみました。存在するデータを事前に確認しまして検索有無を検証しました。フィールド「質問内容」の情報に「帳票フォーム、コマンドボタン、他・・・」が存在、フィールド「解決策」の情報に「単票フォーム、オブジェクト、他・・・」が存在することを確認しました。 OR条件にて検索を行ってみましたが、該当する情報がありませんとのリアクションでした。「質問内容」パラメーターに「帳票フォーム(半角スペース)コマンドボタン」と入力、「解決策」パラメーターに「単票フォーム」と入力。 AND条件にて検索を行ってみましたが、該当する情報がありませんとのリアクションでした。「質問内容」パラメーターに「帳票フォーム(半角スペース)コマンドボタン」と入力、「解決策」パラメーターに「単票フォーム」と入力。 「対象のオブジェクトと設定」※質問内容・解決策 = フィールド名 ◆OR対象オブジェクト:Access操作2「単票フォーム」、クエリ名:Access検索クエリ質問 Eval(BuildCriteria("'" & [質問内容(一文字可)] & "'",10,"*" & Replace([解決策(一文字可)]," ","* Or *") & "*")) ◆AND対象オブジェクト:Access操作3「単票フォーム」、クエリ名:Access検索クエリ解決策 Eval(BuildCriteria("'" & [質問内容(一文字可)] & "'",10,"*" & Replace([解決策(一文字可)]," ","* And *") & "*")) ※Access検索クエリ質問とAccess検索クエリ解決策は同一フィールドを持ちます。現状では、Access検索クエリ質問のパラメーターは質問内容フィールドに設定、Access検索クエリ解決策のパラメーターは解決策フィールドに設定。 以上ですが、宜しくお願いします。

関連するQ&A

専門家に質問してみよう