Access 2007での複数フィールドに対するあいまい検索の方法

このQ&Aのポイント
  • Access 2007を使用して顧客管理データベースを作成している初心者です。新規入力と検索フォームを作成し、顧客データを格納しています。名前や住所からのあいまい検索を実装したいのですが、検索条件を設定するフィールドが多くてうまく方法がわかりません。
  • 「名前検索」と「住所検索」のキーワードを入力して検索ボタンを押すと、サブフォーム内にキーワードを含むデータが表示されるようにしたいです。例えば、「山」と「中町」を入力した場合は、「名前1」または「名前2」に「山」を含み、「住所1」〜「住所4」に「中町」を含むデータが表示されます。
  • また、キーワードの入力が一部欠けている場合でも検索を行えるようにしたいです。例えば、「木」と入力した場合は、「名前1」または「名前2」に「木」を含むデータが表示されます。
回答を見る
  • ベストアンサー

アクセス2007にて複数フィールドに対してのあいまい検索のやり方がわかりません

アクセス2007を使用しています。 初心者ですので説明がわかりずらいかもしれませんが、都度補足していきますのでよろしくお願いいたします。 現在、顧客を管理するためのデータベースを作成しています。 新規顧客のデータを入力する→【F新規入力】フォーム 既存の顧客のデータを名前、もしくは住所から検索する→【F検索】フォーム を作成しました。 【F新規入力】フォームから入力されたデータは【T顧客データ】に格納されます。 【F新規入力】には『名前1』『名前2』『住所1』『住所2』『住所3』『住所4』というフィールドがあります。 『名前1』は必須入力で『名前2』は空欄でもOKとします。 住所に関しては都道府県名~地番までを『住所1』~『住所4』に分けて入力します。 【F検索】にはテキストボックス『名前検索』と『住所検索』があります。検索ボタンとサブフォームもあります。 検索キーワードを入力して検索ボタンを押すとサブフォーム内に検索キーワードを含むデータが表示されるようにしたいのです。 間違っているのかも知れませんが、【Q検索クエリ】を作成し、抽出条件を【F検索】の『名前検索』『住所検索』に入力されたキーワードであいまい検索、【Q検索クエリ】を元にサブフォームを作成すればできると思っているのですが、検索条件をあてはめるフィールドが多くて、どのように条件を設定すればいいのかわかりません。 たとえば 『名前検索』キーワード……山 『住所検索』キーワード……中町 と入力し、検索ボタンをおすと『名前1』『名前2』のいずれかに"山"を含み、かつ『住所1』~『住所4』のいずれかに"中町"を含むデータが表示される たとえば 『名前検索』キーワード……木 『住所検索』キーワード……空欄 と入力し、検索ボタンをおすと『名前1』『名前2』のいずれかに"木"を含むデータが表示される ようにするのが目標なのですが、どなたかお知恵を貸してください。。。

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

  • ベストアンサー
  • yatoaa
  • ベストアンサー率30% (110/362)
回答No.1

選択クエリーを新規作成して検索フォームのソースに指定します クエリーの選択指定のところへ Like "*" & [FORMS]![F検索]![名前検索] & "*" というように LIKE機能 FORMS機能 を使用したらいいですね 空欄とした場合は全件対象という意味になるのですが 上の構文で(もしかしたら)うまくいかないかもしれないので わたしの場合は全件という意味の場合は空欄ではなくて  * を強制的に入れています 複数の組み合わせ選択の場合は クェリーの選択欄へ 横方向にかけば AND条件 縦の方向だと OR条件になるので LIKE文を適宜に複数記載します

sotamiki
質問者

お礼

早速のご回答ありがとうございました!!! できました!! 思ったとおりに動いてくれました! 行き詰っていたのでかなりうれしいです!! ありがとうございました!

関連するQ&A

  • (続き)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回目を比較もしたいので、一度ではなく、段階を踏んで検索が出来ない。また、フォーム自体を開いた時にサブフォームが真っ白になり メッセージも出て見辛い。。(どんなメッセージが忘れました…)                                                        以上

  • 検索フォームの検索結果。毎回先頭のレコードを表示させたい。

    こんにちは。 顧客データベースを作成しています。 当方初心者なもので、調べながらですがようやく顧客検索フォームができあがりました。 【Q検索】を作成し、それを元に【F検索】を作りました 顧客名の一部をキーワードとし、【F検索】内に配置したテキストボックスにキーワードを入力し検索ボタンを押すと、【F検索】内に埋め込んだサブフォームに該当顧客データが単票フォームで表示されるようにしました。誰でも使えるように、サブフォーム内に【前のレコードへ】と【次のレコードへ】という2つのレコード移動ボタンを配置しました。検索処理はうまく動いたのですが、一度検索をして、続けて検索をした時、先頭のレコードからの表示になりません。 例えば、「東」をキーワードにして検索し、検索結果が30件あったとします。一度目の検索では、検索結果は先頭のレコードが表示されます。【次のレコードへ】ボタンで10番目のレコードまで移動した後、今度は「西」をキーワードにして検索をすると10番目のレコードが表示されてしまいます。「西」の検索結果が5件しかなかった場合は新規レコードが表示されてしまいます。 ネットで調べていろいろ試してはみたのですが どのタイミングでどう記述すればいいのかわかりません。 説明に不備がありましたら追記していきますので よろしくお願いします。

  • Access2000 フォームからレコード検索

    Access2000で質問です。 「顧客テーブル」を作ります。 顧客テーブルには以下のフィールドを設けます。 顧客ID(主キー) 名前 TEL 住所 変更住所 顧客IDから住所まではすでにデータが入っています。 「変更住所」に新しくデータを入れていきます。 その際に、フォームを利用したいと思っていますが、 新規フォーム(何もデータが入っていない)に顧客IDを入れたら、すでに顧客テーブルに入力されている名前、TEL、住所がパッと表示され、変更住所だけが空欄で表示されるようなフォームを作りたいと思います。 どのような方法がありますでしょうか? ぜひお知恵を貸してください。よろしくお願いいたします。

  • Access2000で検索フォームの作成方法を教えてください。

    Access2000で検索フォームの作成方法を教えてください。 Accessの知識はテーブル、クエリー、フォームの初歩的な作成方法ぐらいしか分かりません。 【今の状況】 フォームを4つ作成しています。 (1)検索条件を指定するフォーム1つ(F4)を作成済みです。 (2)フォーム(F4)には、条件を指定するコンボボックス(条件1、条件2)を2つと、  コマンドボタン(検索ボタン)を1つ作成しています。  ※コンボボックスは、非連結で、値集合タイプに値リストを設定し、値集合ソース値を指定しています。   ※コマンドボタンは、フォーム上にボタンを描いただけで何も設定していません。 (3)検索結果を表示させるフォーム3つ(F1、F2、F3)を作成済みです。 (4)それぞれメインフォーム(M)とサブフォーム(S)で構成されています。 (5)メインフォーム(M)は、3つのフォーム(F1、F2、F3)共通です。  サブフォーム(S)は、3つとも表形式ですが、表示している元データ(クエリー)が異なります。 (6)検索条件を設定したい項目は、メインフォーム(M)にも表示されている項目です。 【やりたいこと(完成イメージ)】  検索条件指定のフォームに作成している「検索ボタン」をクリックすると、  検索結果表示用のフォーム(F1、F2、F3)に検索条件に該当するデータのみ表示させたい。  (上記(6)にも書きましたが、メインフォーム(M)にも検索条件に指定した値を表示させたいです。)  検索条件は、最大6項目指定しますが、条件が選択されているもののみをAND条件で検索したいです。 【教えていただきたいこと】  コンボボックスの条件をANDで指定するには、どこに何を設定すれば良いのでしょうか?  「検索ボタン」の作成方法後に、設定をする必要があると思うのですが、どこに何を設定すれば良いのでしょうか?  検索条件フォーム(F4)の結果を、検索結果表示フォーム(F1、F2、F3)に関連付けるには、どこに何を設定すれば良いのでしょうか?  その他に設定が必要な部分はありませんか?    あと、お勧めの方法が他にあれば教えてください。 初歩的なことしか理解していませんので、 不十分な説明文で申し訳ありませんが、 よろしくお願いします。

  • 【Access】複数フィールドを対象とする検索

    Access上で「検索ボタン」をクリックすると、 「データ」フォームのフィールド1、フィールド2、フィールド3のいずれかに「検索条件1」の語を含み、かつ、フィールド4、フィールド5、フィールド6のいずれかに「検索条件2」の語を含むレコードを抽出できるようにしたいと思います。 検索条件はテキストボックスに入力するようにしており、テキストボックス名は「検索条件1」、「検索条件2」となっています。 以下のコードでやってみたのですが、「実行時エラー13、型が一致しません」というエラーが出てうまく抽出できません。 Private Sub 検索ボタン_Click() Dim filter1 As String filter1 = "フィールド1 like '*" & Me!検索条件1 & "*' or フィールド2 like '*" & Me!検索条件1 & "*' orフィールド3 like '*" & Me!検索条件1 & "*'" And " フィールド4 like '*" & Me!検索条件2 & "*' or フィールド5 like '*" & Me!検索条件2 & "*' orフィールド6 like '*" & Me!検索条件2 & "*'" DoCmd.OpenForm "データ", acNormal Forms!データ!.filter = filter1 Forms!データ!.FilterOn = True End Sub 「検索条件1,2」のテキストボックスがあるフォーム上の「検索ボタン」をクリックすると、 「データ」フォームが開き、検索をかけるという流れをイメージして作成 しています。 どなたか正しい記述を教えていただけませんでしょうか。 よろしくお願いいたします。

  • access2000でのフォームの詳細ボタンについて

    access2000を使用して、顧客のカナを入力すると該当する顧客が抽出される一覧を作成いたしました。 作り方は、 メインフォームに顧客一覧のサブフォームを置きました。 検索カナ入力用のテキストボックスを置き、その横に検索ボタンを置いています。 ここまでは順調でしたが、サブフォームに置いた詳細ボタン(指定した顧客の詳細の単票フォーム)が作動しなくなりました。 サブフォームだけで実行すると表示されます。 メインフォームでボタンを押しても作動しません。 行き詰っています。どなたかご教授下さい。。 お願いします。

  • VBでのデーターベースレコード検索方法

    VB6.0を使って顧客データーベースを作っているのですが質問させてください。 まず作成した順序として ・ビジュアルデーターマネージャーを使ってレコードを作成しました。 ・顧客コード、フリガナ、名前、住所・・・あと何点かありますが・・ ・データーフォームウィザードで顧客フォームを表示できるようにしました。 ここからが質問ですが、 1.フォームを開いた時点では顧客コードに1番が割り振られるのでそれをまず空欄にしておきたい。 2.例えば23を顧客コードフォームに入力しエンターキーを押せば23の顧客データーを検索し各フォームに表示されるようにしたい。 3.23番の顧客を表示後、削除ボタンをおすとそのレコードが削除されるが、23番を2.のように入力するとレコードがない為自動的に新規入力となり保存すると23番目のレコードに挿入されるようにしたい。 以上の3点です。ど素人的な質問ですがどうかよろしくお願いします

  • アクセス2007 フォームで入力したデータが検索フォームの結果に反映されません

    アクセス2007を使用しています。 今顧客のデータベースを作成しています。 新規の顧客のデータを入力し、検索して顧客データを閲覧できるようにしたいです。 以下のような構成にしてあります。 ○T顧客マスタ ○F新規入力 ○F検索 ○Q検索 新規の顧客データをフォーム【F新規入力】より入力して、入力したデータはテーブル【T顧客マスタ】に格納されます。 また、検索フォームとして顧客名や顧客住所から、該当する顧客データをあいまい検索できるような【F検索】を作成しました。(Q検索から作成) しかし、サンプルデータとしてはじめにインポートしたデータ200件は検索対象となっているのですが、【F新規入力】から入力したデータ10件は検索に引っ掛かりません。【T顧客マスタ】には格納されているのですが・・・ 当方、アクセスは初心者なので何か根本的に間違っているのかも知れませんが、どうにもこうにもわからないので質問いたしました。 質問内容がわかりづらいようでしたら申し訳ありません。都度補足いたしますのでよろしくお願いいたします。

  • accessでの複数条件での検索について

    現在accessで売上管理を作成しています。 T_一覧には売上日付、担当者、品名、金額、入力者、入力日付のデータが格納されています。 F_一覧は、T_一覧を基に、すべてのデータが閲覧できるフォームです。 ヘッダー部分に、売上日付、担当者、入力者、入力日付のテキストボックスを配置し、「検索」コマンドボタンを押下すると、検索したい条件に一致するデータのみが表示されるようにしたいです。 現在は担当者と入力者に検索したい値を入力し、「検索」ボタンを押下すると、条件に合ったデータのみが表示されるのですが、売上日付と入力日付に検索したい日付を入力しても、なにも検索できません。 担当者と入力者はQ_検索をT_一覧より作成し、抽出条件にLikeを使っています。 日付はどのように抽出条件にかけばよいのでしょうか?

  • Access サブフォームでの表示フィールド選択

    Accessでアドレス帳を作成しています。 データシートには名前、ヨミ、TEL番号、FAX番号、メールアドレス、郵便番号、住所、メモ等のフィールドが存在します。 フォーム上タブコントロールでヨミより「あ・か・さ・た・な」検索できるようにクエリ抽出条件を作成しました。 フォーム上に設置したサブフォームにクエリの抽出結果が表示されます。 ここで、フォーム上に連絡先、住所、メモのオプションボタンを作成し、連絡先にチェックした時にはTEL及びFAX、住所にチェックした場合は郵便番号及び住所・・・のところだけを表示することは可能でしょうか? つまりはクエリの表示項目をフォーム上のオプションボタンでコントロールできるのでしょうか? よろしくお願いします。

専門家に質問してみよう