• 締切済み
  • 困ってます

Access97での抽出

検索フォームでデータを入力しテーブルを検索したいのですが、空データと空フィールドが等しいと判定されません。 今やりたいのは例えば ・名前 ・フリガナ ・TEL ・FAX のフィールドを持つテーブルがあり 検索フォームには ・名前orフリガナ ・TELorFAX の二つの欄をもうけておき ●「名前orフリガナ」が[名前]または[フリガナ]に一致 かつ ●「TELorFAX」が[TEL]または[FAX]に一致 上記のテーブルをクエリーなどで複合検索したいんです。 しかし「TELorFAX」[TEL][FAX]ともに空欄だと不一致の判定を受けてしまいます。 ちなみに上記のような比較が十項目ほどあります。 何かこのような場合によい方法はないでしょうか? 長くなってしまって済みません。

noname#5002
noname#5002

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

  • 回答数2
  • 閲覧数130
  • ありがとう数1

みんなの回答

  • 回答No.2
  • mnabe
  • ベストアンサー率33% (427/1283)

クエリーだけとの話ですので、少々無茶をしますが(^^; 例)テーブルに、『名前』と『ふりがな』を用意します。   フォームに、『検索名前』と『検索ふり』を用意します。  クエリーで単純に、上記テーブルを追加します。 表示したいフィールド(『名前』と『ふりがな』)を追加します。  そこで一旦、該当データが表示される事を確認します(または、データを入力します)  抽出条件で、名前の抽出条件の一番上の欄に『フォーム!検索名前』を入れます。次に一行下の行を飛ばして、3行目に『フォーム!検索ふり』を入力して下さい。次に、ふりがなの抽出条件の2行目(1行目は空欄のままでOK)に『フォーム!検索名前』を入力して下さい。次に、4行目に『フォーム!検索ふり』を入力して下さい。  これで、一応の要求は満たされると思います。後は、この繰り返し(^^;  十項目もあるとの話なので、上記の様な物を複数個用意して、組み合わせて一個のクエリーにする事で対応出来ると思います。  出来なかった時には、クエリーのSQLソースを補足して下さい。SQLソースは、表示(V)→SQLビュー(Q)で表示される物です。

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

関連するQ&A

  • ACCESSクエリでの結合の仕方・・・SQL文かも

    ACCESS 2003を使用しています。 テーブルA テーブルB の2テーブルでクエリを作っています。 結合的には・・・ テーブルAのフィールドX ⇔ テーブルBのフィールドY です。 これで2テーブルに共通する一致データのみ抽出はできるのですが、 2テーブルに共通する一致データに加えて、 2テーブルの不一致データも一緒にクエリ表示されるようにしたいのです。 欲しいのは抽出イメージは、以下のような感じのクエリ結果です。 テーブルA:フィールドX|テーブルBのフィールドY a             |(空) (空)           |b c             |c d             |(空) (空)           |e f              |f  g             |(空) h             |h おそらく、SQL文を書く必要があるとは、想像できるのですが・・・ どなたか、ご教授いただけると助かります。 よろしくお願いします。

  • 【Access】部分一致で不一致データを抽出したい

    クエリで2つのテーブルから、不一致データを抽出したいのですが、 完全一致だけでなく部分一致のデータも一致データとして取り除きたいです。 [テーブルA]フィールド1 000-0001 000-0001A 000-0002 000-0003 000-0004 [テーブルB]フィールド2 000-0001 000-0002 というようなデータで、結果は [結果] 000-0003 000-0004 というふうにしたいです。 (000-0001だけでなく000-0001Aというデータも取り除きたいのです。) Access初心者で、クエリウィザードを使用した重複データ抽出、不一致データ抽出、 およびクエリデザインを使用した重複データ抽出が何とかできる程度です。 初心者でも分かるようにご回答いただければ大変助かります。 よろしくお願いいたします。

  • Access_vbaフィルタ機能

    現在テーブルに格納されている顧客情報から任意のキーで検索できる様、検索用フォームを作成しています。 複数条件(or)を用いる、あいまい検索(Like*)の式がうまくいかず苦労しています。 T_顧客情報(テーブル) フィールド名1:氏名(テキスト型) フィールド名2:氏名フリガナ(テキスト型) フィールド名3:住所(テキスト型) [氏名フリガナ]だけのあいまい検索の式は ME.Filter = "氏名フリガナ Like""*" & ME!テキストボックス名 & "*""" でうまくいきました。 住所だけのあいまい検索も同様にうまくいっています。 しかしこの2つをORでつなぐと『型が一致しません』のエラーがでます。 ME.Filter = "フリガナ氏名 Like""*" & ME!テキストボックス名 & "*""" Or "住所1 Like ""*" & ME!テキストボックス名 & "*""" よろしくお願いします。

  • 回答No.1
  • mnabe
  • ベストアンサー率33% (427/1283)

質問の件ですが、解決には少々情報が足りません。 補足下さい。  抽出は、(1)クエリーだけを使用して行いたいのか?      (2)AccessBASICを使用して行いたいのか?      (3)SQLの文法の質問なのか? (1)の場合は、基本機能だけでは難しく、複合クエリーを利用すれば出来ると思う...。 (2)楽勝!! (3)出来なくはないが、面倒だなぁ(^^;  (1)と(2)の複合だと割合簡単に実現出来ます。

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

質問者からの補足

早速の書き込みありがとうございます。 では補足させていただきます。 できればクエリーで実現させたいです。 というのもAccessBASICとかSQLは余りよく分からないんで・・・ もしもAccessBASICが楽というのであれば 簡単に教えてください。

関連するQ&A

  • Access:検索結果が1件しか出ない

    Access2003です。 普通にテーブルがあり、それをフォームウィザードに沿って(全てのフィールドを配置した)フォームがあります。 このフォームを開き、例えば『企業名』で検索すると (詳細設定は↓) 探す場所:フィールド名 検索条件:フィールドの一部分 検索の方向:全て テーブルには同じ企業名が複数あるのに1件しか検索してくれません。 『フリガナ』や『担当者名』で検索しても同じでした。 ちなみに探す場所をテーブルにすると、“次を検索”でちゃんと次々見つけてくれます。 でも本来は探す場所:フィールド名でも該当するデータは次々見つけてくれていたような... 何か設定を変えてしまっているのでしょうか。こういう物なのでしょうか? 分かる方いらっしゃいましたらお願い致します。

  • Accessクエリでの複数の抽出条件設定

    Accessを利用して住所録のデータベースを作成しています。パラメータークエリを利用して複数の項目の検索結果をフォーム上に表示させたいのですが上手くいきません。 フリガナと勤務先の二つのフィールドを利用して検索結果を表示したいのですが, ・フリガナだけに条件を入力した場合 ・勤務先だけに条件を入力した場合 ・フリガナと勤務先の両方に条件を入力した場合 の3つのパターンを想定しています。 例えば,フリガナと勤務先の両方の検索結果を表示させる場合,フリガナフィールドの抽出条件に Like [フリガナを入力] & "%" 勤務先フィールドの抽出条件に Like [勤務先を入力] & "%" Or Is Null と入力すると,フリガナと勤務先の両方に検索条件を入力した場合, ・フリガナが該当し,かつ勤務先が該当するデータ のほかに ・フリガナが該当し,勤務先が空白のデータ が抽出されます。フリガナと勤務先の両方に検索条件をいれたときには,勤務先が空白のデータを抽出しないようにしたいのですが,どうしたら良いでしょうか。フリガナだけで検索するときには,勤務先が空白かどうかは考慮しない結果を表示させたいと思います。 ちなみに, フリガナフィールドの抽出条件に Like [フリガナを入力] & "%" 勤務先フィールドの抽出条件に Like [勤務先を入力] & "%" とすると,勤務先だけで検索したい場合に,勤務先の記載がない人のデータが出てこなくなってしまいます。 初心者ですが,よろしくお願いいたします。

  • Accessでの不一致クエリについて

    同じデザインの2個のテーブルに データが(順不同に)入っています。 この2個のテーブルの整合性を確かめたいのですが、 不一致クエリだと一箇所のフィールドしか比べることができません。 全てのフィールドの整合性を一度に確かめたいです。 何かいいほうほうはありますでしょうか? よろしくお願いします。

  • ACCESSクエリでの結合の仕方

    ACCESS 2003を使用しています。 テーブルA テーブルB テーブルC の3テーブルでクエリを作っています。結合的には・・・ テーブルAのフィールドX⇔テーブルCのフィールドX テーブルBのフィールドX⇔テーブルCのフィールドX です。 これで3テーブルに共通する一致データのみ抽出はできるのですが、 3テーブルに共通する一致データに加えて、テーブルAとテーブルBの不一致データ(テーブルCに対する)も一緒に抽出できるようにしたいのです。 2テーブルだけの結合であれば、結合プロパティを、 テーブルAのフィールドX⇒テーブルCのフィールドX のようにすることで実現できるのですが、3テーブルの結合の場合、どのようにすればよいでしょうか? テーブルAのフィールドX⇒テーブルCのフィールドX テーブルBのフィールドX⇒テーブルCのフィールドX のようにしてみましたが、「あいまいな外部結合が含まれているので、SQLステートメントを実行できません。云々。。。」と警告エラーがでてしまいます。 どなたが、ご教授いただけると助かります。 ご面倒ですが、よろしくお願い致します。

  • MS accessで2つのテーブルを比較したい

    数々この質問は出ているのですが、『不一致クエリウィザード』でやっても上手くいかないので、こちらで質問させていただくことにしました。 比較したいデータは、フィールドの名前が異なる2つのテーブルがあって、その比較したいフィールド数は120になります。 同一フィールドは「FID」「laa」というフィールドです。 一応自分で『不一致クエリウィザード』でやってみた手順としては以下の通りになります。 1.『不一致クエリウィザード』をクリック 2.どちらかのテーブルを選択(レコード抽出テーブルや比較するテーブルなど) 3.関連付けフィールドは、2つのテーブルで同じものを選択  (「FID」「laa」を選択) 4.結果を表示するフィールドを選択(120個全部) 5.「クエリのデザインを編集する」の方にチェックを入れて「完了」 6.クエリのデザインになったら、それぞれの名前は違うけど対応するフィールド同士をつなぐ 7.結合プロパティで2番ないし3番を選択 8.それを全部のフィールドにした   ↓ すると「クエリが複雑すぎます」とエラーメッセージが出てしまった。 一体どうすればよいのでしょうか? なにぶん初心者ですので、よろしくお願いします。 ※もしかして、フィールド名が異なっているのはダメなのでしょうか?

  • Accessでの抽出について

    Accessで下記のようなテーブルがあるとします。 フィールド1  フィールド2  フィールド3 ----------------------- Aさん      20       200 Aさん      10       180 Bさん      10       300 Cさん      10       250 Cさん      30       310 条件1・・・フィールド2が「20」 条件2・・・フィールド3が「200」 この条件が当てはまる、フィールド1のデータはすべて抽出というふうにしたいのですが・・・。 (上記のテーブルでは、1件目と2件目のレコードがあてはまります。) どのようにして抽出したらよいでしょうか?よろしくお願いします。 Access2000を使用します。

  • access データ更新

    Access初心者です。 いま、自分がやってる業務の簡単なDBをaccessで作成しようとしてます。質問ですが、テーブル(1)とテーブル(2)、((1)(2)ともにフィールドは仮に、A列(ユニークなコード)、B、C、D(日付)、E(午前 or 午後)とした場合) テーブル(2)に日々CSVファイルをインポート。その際、テーブル(1)と(2)の差分((1)にあって(2)にないもの)をテーブル(1)に追加したいのと、テーブル(1)(2)両方あるが、D列、またはE列が、テーブル(1)と(2)が違った場合、テーブル(2)にあるデータを書き換えてテーブル(1)に保存するような、マクロを作りたいと考えてます。 不一致クエリとか使えば、出来そうな気がするんですが・・・ どなたか、ご存知の方、教えてください。

  • Access 抽出クエリーについての条件

    先の投稿に重複しますが、 それぞれ異なるテーブルについて、 クエリーで、、 Between #5:00# And #19:00# Between 500 And 1900 上記の方法等で同じ数値ではなく、 期間に幅をもたせて一致としそれぞれの 一致データを抽出するクエリーは つくれますか? もちろん抽出対象のテーブル、列はそれぞれ同じ書式です。 > between関数を使って、 フィールドのデータ型が日付/時刻型の場合 抽出条件欄に、 > 5:00から19:00を抽出したい、 Between #5:00# And #19:00# > 5:00から25:00を抽出したい、 Between #5:00# And #23:59# OR Between #0:00# And #1:00# Access の日付/時刻型では、25:00 というような表現はできないので、上記のように分割することになります。 > また上記がテキストだった場合も、 > 500から1900を抽出したい フィールドがテキスト型の場合、テキスト比較になり数値比較とは異なる抽出結果になるので、 フィールドに Val([テキスト型フィールド]) と式を設定して数値型に変換します。このの抽出条件に、 Between 500 And 1900 と設定します。 通報する

  • 2つのテーブ2つのフィールド一致レコード抽出

    複数マッチングデータテーブル [フィールド1][フィールド2][フィールド3]   1      A      1      2      A      1      3      A      1      4      A      1    5      A      1      6      A      1   複数マッチング引抜テーブル [フィールド1][フィールド2][フィールド3]   1      A      1      2      A      1      3      A      1      4      A      1    5      A      1      6      B      1  クエリ(結果) [フィールド1][フィールド2][フィールド3]   1      A      1      2      A      1      3      A      1      4      A      1    5      A      1    上記のように [フィールド2][フィールド3]のデータが 一致したデータのみ 抽出したいのですが アドバイスいただけないでしょうか。 因みに 不一致クエリなら SELECT 複数マッチングデータ.* FROM 複数マッチングデータ LEFT JOIN 複数マッチング引抜 ON (複数マッチングデータ.[フィールド2] = 複数マッチング引抜.[フィールド3]) AND (複数マッチングデータ.[フィールド2] = 複数マッチング引抜.[フィールド3]) WHERE (((複数マッチング引抜.[フィールド1]) Is Null)); のような感じで対応できるのですが 一致データ抽出についてアドバイスお願い致します。

  • ACCESS パラメータクエリの設定

    ACCESSでデータの抽出をしています。 抽出をしたいキーワードが15個ほどあり、そのつどクエリを作るとかなり時間がかかります。データは(20万件ほどです) そこで本を見たところパラメータクエリというものがあり、早速試してみたのですができません。 テーブル名は”本”です。 フィールド1…番号  フィールド2…雑誌名 フィールド3…著者  フィールド4…JANコード になっています。 私はフィールド2のところで抽出条件として "[雑誌名を入力してください]" と入れました。 後もう一点ですが、同一雑誌でも名前が少し違って登録されているものもあり、重複するデータを抜き出して削除したいのですが、削除分と削除された残りのデータが共に必要です。こういった場合はどう処理するのが妥当でしょうか?削除分は別に保存した上で、不一致クエリを使えば正確にできますか?もっとよい方法がありますか? どうぞよろしくお願いいたします。

専門家に質問してみよう