• 締切済み
  • 困ってます

Accessでデータベースを作っています。

Accessでデータベースを作っています。 先日、こちらで質問をさせていただいて、クエリで複数のフィールドを対象にデータを検索する ことはクリアできました。 ありがとうございました。 ご指導に基づき、4つのフィールド(仮にA,B,C,D)について、クエリの抽出条件に  Like "*" & [Aを入力] & "*"  Like "*" & [Bを入力] & "*" ・・・ とそれぞれ設定してパラメータ入力を求め、4つの条件すべて、または一部のみ設定して検索し、 正しい検索結果が得られました。 今度は、検索用のフォームを作成し、フォームで入力した条件をクエリに送って、同じ結果を 得たいと思うのですが、以下の方法では正しい検索結果が出てきません。 ・フォームに検索用のボックスをA~Dまで4つ作成(ひとつはコンボボックス、あとはテキスト) ・クエリの抽出条件に、それぞれ以下を入力     Like "*" & [Forms]![Q_form(作成したフォームの名前)]!                       [A(それぞれの検索ボックスの名前)] & "*" ・フォームに「クエリの実行」のコマンドボタンを配置 パラメータで入力する代わりにフォームを使いたい、というものなのですが(パラメータ入力 よりも、コンボボックスを使って値を選ぶ方が検索する人には使いやすいかと思って)、どうしたら うまいこといきますでしょうか。。 教えてください。

共感・応援の気持ちを伝えよう!

  • 回答数2
  • 閲覧数67
  • ありがとう数4

みんなの回答

  • 回答No.2
  • layy
  • ベストアンサー率23% (292/1222)

更新後処理?、 4つの検索条件を入力したら、検索ボタン押します。そこではクエリの実行でなくて再クエリの実行にするマクロ。フォームの値をクエリの条件にしたらこれよく使います。再クエリとは何かみておく。 1項目に偏るようならほか3項目の記載を真似します。やはりクエリデザインでまず確認。入力促す画面でるので*指定で全件出すところから。

共感・感謝の気持ちを伝えよう!

関連するQ&A

  • Accessの使い方

    データの抽出条件をフォームで作成しクエリを実行させたいのですが、以前教えていただいた抽出条件に Like"*"&Nz([Form].[コンボボックス名],"*")&"*"を入力 するとのことでしたが、うまくいきません。 何が違うのかな? また、パラメーターの入力メッセージが表示されないようにしたいのですが、教えて下さい。

  • Accessコンボボックスについて

    Accessコンボボックスで選択した番号に連動する名前を他のフィールドへ表示する方法 Access初心者です。 どなたか方法をご存知の方がいらっしゃいましたら、お手数ですがご教授願います。 何分初心者なので、お手数ですが、噛み砕いてお教え頂けると助かります。 請求書の作成フォームを作っています。 フォーム上に[取引先名」という、コンボボックスを配置しています。 そのコンボボックス上から名前を選択できるようにしています。 作成済の請求書を名前別に検索できるようにパラメータクエリを作成して、あいまい検索?(Like検索)で 検索した名前に該当する請求書を抽出できるようにしたいと思っています。 実際にパラメータクエリを作成してみましたが検索結果0件で表示されてしまいます。 その際に作成したものは、「取引先名」フィールドの抽出条件に、Like"*"&[取引先名を入力して下さい]&"*" です。 これで駄目だったので、次に Like"*"& &"*"を削除して、[取引先名を入力して下さい」だけで作成してみましたが 取引先名で検索すると、検索結果は0件でした。 取引先IDで検索すると検索できましたが、何が駄目だったのかがさっぱり分かりませんでした。 説明下手で申し訳ありませんが、どなたかご存知の方がいらっしゃいましたら教えて下さい。

  • Access2003でコンボボックスからデータを抽出したい

    自己啓発でAccess2003を勉強しています。 Access2003でコンボボックスで名前を選択して、データ(住所)を抽出したものをリストボックスに表示させたいのですがどこがまちがっているかわかりません。こんなことで3週間ぐらい悩んでいます。 回答またはアドバイスをお願いします。 もしくはもっと簡単なやりかたがあればお願いします。 (1)「氏名」、「住所」のテーブルを作成。テーブル名は「01データ」 (2)「氏名」、「住所」のクエリを作成。クエリ名は「クエリ1」 (3)フォームでコンボボックスとリストを作成。フォーム名は「印刷」 ⇒コンボボックスの名前は「検索」。 ⇒値集合ソースはSELECT [01データ].ID, [01データ].氏名 FROM 01データ; これで「氏名」が選択できた。 (4)クエリの「氏名」抽出条件にLike [forms]![印刷]![検索] (5)検索するマクロを作成。マクロ名「M検索」 アクションは 全レコードの表示 フィルタの実行 ⇒Where条件は[Forms]![印刷]![検索]=[クエリ1]![氏名] (6)マクロ「M検索」をコンボボックスのプロパティ「イベント」タブから変更時に設定する。 (7)フォーム「印刷」を開き、コンボボックスで氏名を選択すると『クエリ1!氏名』と表示されてしまいます。 (8)フォーム「印刷」のリストボックスは全レコードが表示されている。

  • 回答No.1
  • layy
  • ベストアンサー率23% (292/1222)

クエリの結果は抽出条件を無視して全件でてますか?。 フォームに開いたときと検索条件でもう一度表示させたときでは、クエリのSQL文は違うので、検索後はクエリでなく再クエリとします。 これでもダメならクエリデザインで実行してみる。 前の課題で、 コンボボックスの結果を条件に使うのも可能です。集計クエリで重複をなくしたものを値集合ソースにします。 日付の範囲はカレンダーコントロール使えそうです。

共感・感謝の気持ちを伝えよう!

質問者からの補足

lavyさん、ありがとうございます。 全件ではないのです。 そして、検索結果が正しいこともあり、いろいろ試したのですが法則性がいまひとつ 見出せなくて困っていました。 検索条件のA,B,C,Dというのは、以前に質問させていただいた際の項目で言うと、 差出元、保管期間、日付、書類名、であり、差出元については、コンボボックスに直接 リストを書き込んで重複問題をクリアしていました。 検索に失敗するのは、どうもその差出元を条件に選んだときが多いような(そもそも、 差出元だけを条件に選んだ際に起こる気がします<ひとつの差出元を選んでも、ほかの データも出てくる・・・でも、微妙に全件ではない>。 ・・・ごちゃごちゃとすみません。 もう少し、失敗の原因を整理して、またお伺いした方がよいのですよね。。 再クエリとする設定というのは、フォームのそれぞれの検索用ボックスに対して、 プロパティ―イベント―更新後処理に、再クエリのマクロを設定すればよいのでしょうか? それをやってみたらば、マクロのエラーが出てしまって、先に進まなかったのです。 カレンダーコントロール・・・。 こちらの記事を検索などして、トライしてみます!!! 取り急ぎのお礼です。 また相談させてください。

関連するQ&A

  • ACCESSでの抽出について

    単純なクエリの抽出なのですが・・・。 区フィールド、町フィールドをクエリで作成して そのクエリを元に抽出フォームを作成しました。 そして、クエリの抽出条件に以下の式を入力しました。 Like "*" & [Forms]![F_抽出]![区] & "*" Like "*" & [Forms]![F_抽出]![町] & "*" しかし、大本のデータに [区]フィールド→品川区 [町]フィールド→空白 ・・・と、どちらかが空白の場合、そのレコード を抽出してくれません。 このように、空白フィールドを持つレコードをも 抽出するにはどのようにしたらようですか? 初歩的な質問で申し訳ありませんがよろしくお願いいたします。

  • ACCESS のフォームの内容をクエリーの抽出条件にするには?

    Windows2000,Access2000です。 Accessのクエリーでデータを選択して表示する作業をしています。 現在はクエリーを自分で修正して実行しています。 でもそれではみんなで使うには使いづらいので、 フォームを作成しそのフォーム上の入力項目に入力された データをクエリーの抽出条件に指定する様にしようという事になりました。 フォーム上の入力フィールドの内容をクエリーの抽出条件に設定する方法はすぐわかりました。 でも「like」を指定する方法がわかりません。 つまりフォーム上の入力データを“xxx”とした時、クエリーの抽出条件を 「like "*xxx*"」としてクエリーを実行したいのです。 つたない文章でわかりにくいかと思いますが、ご存じの方おりましたら、 よろしくご教示ください。

  • Access2002での複数項目検索について

    教えてください。 Access2002でデータベースを作っています。 ふたつのテーブルから選択クエリを作成、そのクエリ内で部分一致のパラメータを設定し、 複数項目(5つ)の検索を行っていましたが、検索のたびに毎回5つのダイアログボックスを クリア(必要項目を入力、入力しないパラメータは「OK」でとばす)するのがめんどくさいと 使用者にいわれ、検索フォームからの検索に変えたいと思っています。 その場合、  (1)選択クエリを基としたフォームを新規作成し、  (2)非連結のテキストボックスを5つ作り、それぞれ適当な名前を付け、  (3)クエリの抽出条件の欄の現在パラメータ設定をしているところを、       [Forms]![フォーム名]![テキストボックス名]に変える だけではできないのでしょうか。。 いろいろWeb上で調べたり、本を読んで見よう見まねでつくってみましたが、出来上がった フォームから検索ボタン(「クエリの実行」ボタン)を押しても、全件が表示されてしまうの です。 パラメータではできているのに・・・。 どなたか、ご教示くださるとうれしいです。 よろしくお願いいたします。

  • ACCESSでクエリーを使った検索

    VBAを使えば簡単にできるのですが、事情があり、クエリーのみで行わなければいけません。 フォームに入力された情報を元に検索できるクエリを作成しました。 通常でしたらクエリのフィールド名の下の抽出条件に Forms![F_検索]![検索条件1] とすればいいのですが、これが複数の条件を設定した場合はすべての条件を入力しないと、検索結果が出ないことから 以下のように変更しました。 フィールド名の抽出条件には何も書かず、別に式として IIf(IsNull(Forms![F_検索]![検索条件1],True,[フィールド1]=[Forms!]![F_検索]![検索条件1])) と入力しそこの抽出条件に「True」と入力しました。 これで何も入力されてない場合は全件が表示されるようになりました。 通常の検索はこれでいいのですが疑問点が2点あります。 1.期間を抽出する場合はどうしたらいいのか? IIf(IsNull(Forms![F_検索]![検索条件1],True,[フィールド1]=Between [Forms!]![F_検索]![検索条件1] and [Forms!]![F_検索]![検索条件2])) とかしてみましたがダメでした。 2.あいまい検索をするにはどうしたらいいのか? IIf(IsNull(Forms![F_検索]![検索条件1],True,[フィールド1]=Like [Forms!]![F_検索]![検索条件1])) なんてしてみましたがだめでした。 ご回答よろしくお願いします。

  • (続き)accessでの2段階クエリの作り方

    お世話になります。 accessで下記の質問を立てましたが、解決できなかったので再度質問いたします。 (http://okwave.jp/qa/q6890851.html) 下記に説明をしています、分かりにくいかもしれません。。 どうぞご指導をお願い致します。 ◆DBの構成◆ 1)テーブル名:名簿(フィールドは下記の通り)  ID,名前1、名前2(担当者名)、ふりがな、住所、電話、住所1、住所2(マンション名等)、備考等) 2)フォーム名:検索フォーム  デザインビューで初めから作成して、テキストボックスを1つ作っています。  名前は『キーワード検索ボックス1』です。  またテキストボックスの下に検索をしてヒットした名簿を表示するサブフォームを入れています。 3)サブフォームのクエリ ・元データ   ⇒名簿のテーブル。全フィールドを挿入して作成。     メインフォーム内のサブフォーム名は『(sub)キーワード検索』  ・抽出条件   ⇒フィールドの『名前1』、『名前2』、『ふりがな』、『住所1』、『住所2』、『備考』の抽出条件欄に    1行ごとずらして、『Like & "*" & [Forms]![検索フォーム]![キーワード検索ボックス1] & "*"    とした。  ・マクロ   ⇒メインフォームのテキストボックスの隣に検索という名前をつけたボタンを配置。    マクロは再クエリでコントロール名を『(sub)キーワード検索』とした。    ボタンのプロパティのイベントタブでクリック時に上記のマクロが実行されるように登録した。 ◆やりたい事◆  accessで会社の顧客名簿を作成しました。  今の状態は1個のキーワードだと検索結果がサブフォームに表示されます。  それを、2段階で絞りこんでいく方法を探しています。  テキストボックスをもう一個作り、2個のキーワードで絞りこみたいです。   まず、1個のキーワードで『名前1』、『名前2』、『ふりがな』、『住所1』、『住所2』、『備考』のフィールドを検索してヒットしたものをサブフォームで表示させる。さらにそこから、また任意のキーワードを 『キーワード検索ボックス2』に入力してボタンをクリックすると、同じサブフォーム(または別のフォームに)絞りこみ検索結果が表示されるようにしたい。またVBAは苦手なので、クエリで解決をしたいです。   ◆出来たこと、出来なかった事◆ ・質問NO(6890851)で指導を頂いた、chuparkさんのある一つのフィールドに 『Like "*" & [Forms]![検索フォーム]![名前検索1] & "*" And Like "*" & [Forms]![検索フォーム]![名前検索2] & "*"』と入れると、そのフィールドに対しては2個のキーワードがヒットするとサブフォームに表示される事が出来た。 ⇒これだと1つのフィールドに対してなので、やりたい事ではない。  1つのフィールドだけでなく、検索したいフィールド全てに対してまず1個のキーワードで  検索されたものを表示させ、そこから更にキーワードを検索して表示させたい。   ・クエリに新しいフィールドを作りました。そこは全てのフィールドを『&』で結び、 抽出条件にchuparkさんの条件を入れてました。 ⇒これだと一度に2個のキーワードを検索してしまう。1回目と2回目を比較もしたいので、一度ではなく、段階を踏んで検索が出来ない。また、フォーム自体を開いた時にサブフォームが真っ白になり メッセージも出て見辛い。。(どんなメッセージが忘れました…)                                                        以上

  • accessでコンボボックスとサブフォームでデータ表示したい。

    accessのフォームでデータ検索表示したいのですが? データ表示の検索フォームを作成しようとしています。 まず検索したいテーブルの検索KEYにしたいフィールドを クエリを使い集計し、その結果をコンボボックスで表示して コンボボックスで指定すると、同一フォーム内にサブフォーム もしくはリストボックスで検索結果を表示したいのですが パラメータのわたしかた等が、よくわかりません。 方法を教えていただけないでしょうか? 参考になるサンプル等があれば助かります。 よろしくお願いします。

  • ACCESS VBA Filterに配列を使いたい

    初めての書込みです。誤りがあれば、訂正致しますので、宜しくお願いします。 (背景) Access2003で作成したプログラムを、3年ほど使ってきました。 少しずつバージョンアップを加え、機能を増やしてきた次第です。 これまでの検索は、クエリによる抽出条件設定を行っていましたが、 入力型フィールドが2つから4つに増えるため、Is Null とlikeによる抽出条件の設定ではカバーしきれないと判断しました。 (本題) 検索結果フォームのレコードに、VBAでFilterをかけるべく頑張ってきましたが、 Loopを使う為にフィールド名を配列変数にしているところで 行き詰まってしまいました。 (やりたいこと) 検索条件 ="部署 Like '*人事*'"   'としたい。 (今の状態) 検索条件 = "部署 Like '* Form_frm_検索ボックス!部署検索 *'" 'となってしまう。 (1)コード 検索条件 = sh(i) & " Like '*" & "Form_frm_検索ボックス!" & sh(i) & "検索" & "*'" (2)データ型 Dim 検索条件 As Variant Dim sh(4) As String Dim i as integer コード、及びデータ型で、間違っている場所が分かれば、ご指導頂けないでしょうか。 宜しくお願いします。

  • ACCESSでコンボボックスが作れません

    ACCESS2000のフォーム内に抽出クエリを元にしたコンボボックスを作成しようとしているのですが、「1つ以上の必要なパラメータの値が設定されていません」と表示され作成できません。元になる抽出クエリを開くと、コンボボックスに表示したいデータが表示されているのですが、上記エラーがでてコンボボックスが作成できない状態です。どなたか解消方法がおわかりの方教えてください。宜しくお願いします。

  • Access2003 式ビルダでのLikeについて教えてください

    Acccess初挑戦の状態で困っております。 例えばデータベース内の名前で「山」の文字が含まれる名前を抽出させたい場合、「クエリの抽出条件でLike "*山*"」とすることで抽出できるのはわかるのですが、フォームでマクロの式ビルダを用いて同様の抽出を行いたいのです。 「顧客データ」のテーブルにある「お客様名」のフィールドから、「検索フォーム」の「名前検索」に入力されたキーワードを含むものを抽出させるために、以下の用に式ビルダで作成したのですが、 [顧客データ]![お客様名]=[Forms]![検索フォーム]![名前検索] 完全に一致する場合しか抽出してくれません。 データベース内に「山田 太郎」の名前があったとして検索フォームで「山田 太郎」と入力すると抽出されます。これを「山」と入力しただけで「山田 太郎」が抽出されるようにしたいのです。 Likeの演算子を用いてアスタリスクを使用すれば、できるのかなとは思うのですが、式ビルダへの記述方法がわかりません。 アドバイス頂ければ助かります。

  • Access97 テキストボックスを利用したあいまい検索フォーム

    Acces97にて下記のようなデータベースを使用しております。  テーブル:銀行コード一覧(銀行コード、銀行名、支店コード、支店名、支店住所)  クエリー:Q-銀行名検索、Q-支店名検索  フォーム:F-銀行名検索、F-支店名検索 今は検索したいフィールド毎にクエリーとフォームが作ってあり、同じようなクエリーとフォームが複数ある状態です。  <クエリー>   (1)Q-銀行名検索→フィールド「銀行名」に【Like "*" & [調べたい銀行名の一部入力] & "*"】設定   (2)Q-支店名検索→フィールド「支店名」に【Like "*" & [調べたい支店名の一部入力] & "*"】設定   ・・・以下同様のクエリー複数あり  <フォーム>   (1)F-銀行名検索にQ-銀行名検索を設定   (2)F-支店名検索にQ-支店名検索を設定   ・・・以下同様のフォーム複数あり 今回作りたいのは、1つのフォーム内に検索したいフィールド分の検索ボタンを作り、検索したい項目をテキストボックス内に入力後該当ボタンをクリックすることによって入力した項目を含むデータが抽出されるというフォームです。 例えば、"東京"と入力し「支店名」ボタンをクリックすると『東京営業部』『東京中央』等"東京"を含むデータが抽出される といった具合です。 部署内にAccess作成事例集なるものがあり、それを元に下記のように作成してみました。 フォーム名を「F-銀行コード一覧」・テキストボックス名を「検索」として、「支店名」ボタンのマクロに [Forms]![F-銀行コード一覧]![検索]=[銀行コード一覧]![支店名] というアクション(フィルタの実行→Where条件式)を設定。しかし、これでは『東京』のみしか抽出されませんでした。 Like関数を利用するのかと思い Like "*"&[Forms]![F-銀行コード一覧]![検索]&"*"=[銀行コード一覧]![支店名] としてみましたが設定できませんでした。 どのようなアクションを設定したらフォームでのあいまい検索ができるのでしょうか?