アクセス:主キーでクエリ検索結果エラー

このQ&Aのポイント
  • 主キーを使用してクエリを検索する際にエラーが発生し、検索結果が表示されません。
  • IDを指定してクエリを検索しようとすると、全てのデータが表示されてしまいます。
  • 全てのデータが表示されることから、指定した条件がデータ内に存在しない可能性があります。
回答を見る
  • ベストアンサー

アクセス:主キーでクエリ検索結果エラー

http://soudan1.biglobe.ne.jp/qa8360363.html ↑で教えていただいたとおりに試しましたが、検索結果なしの状況になってしまいます。 (すべてのデータが表示される) 主キーのIDからクエリ結果を検索しようとして、 抽出条件にたとえば0001のIDを検索するつもりで 1 もしくは =1 と入れても、全データが表示されます。IDが0001のデータはその中にあります。 全てのデータが表示されるということは、検索条件に指定したものが、 そのデータの中に存在しない、ということのはずですが、どういうことでしょうか。 初心者ゆえ至らない部分は補足いたしますので、どうぞご指摘ください。 上級者の方にアドバイスいただけたら幸いです。

  • wilion
  • お礼率63% (242/382)

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

  • ベストアンサー
  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.3

> Aの主キーは重複があり得ます。 主キーでは重複はありえません。 以下のページを参考にご覧になってください。 http://www.officepro.jp/access/table/index6.html > また今回検索したいのはAの主キーです。重複する結果も取り出したいのです。 全てのデータが結果として表示されたのですから、重複する結果自体も表示されたのではありませんか?どうも、説明が良く分かりません。 AとBの質問者さんが主キーと思われてるもの同士を結合して、Aで1を指定し抽出したのですから、質問者さんが書かれていたように B0001…A0001 B0002…A0001 B0003…A0001 Aテーブルの重複する0001のデータが全て抽出されたのですから、上記のような表示になって当然です。 質問文にありましたが「全データが表示されるのは、検索条件に指定したものが存在しないから」というお考えでしたし、なにか基本的に考え方が違うような気がしますので、何かしらアクセスの教則になる書籍を購入して基本的なところをおさえてみてはいかがでしょう。 書籍は個々の機能を脈絡もなく説明したものよりも、その書籍を通して何かしらのアプリを作成していき、その機能を実現するためにはこうするのだといった説明がされているものの方が実践的な勉強になります。

wilion
質問者

補足

ありがとうございました。いったんあきらめ、書籍を見返します。

その他の回答 (3)

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.4

2010ですからこちらのページが見た目同じなので分かりやすいかもしれませんね。 http://office.microsoft.com/ja-jp/access-help/HA010341617.aspx?CTT=5&origin=HA010341487#BMspecifyprimarykeys http://japanism.info/access-relationship.html

wilion
質問者

補足

最終的には回答者様の仰せのとおり、小さいクエリから作り直し、検索をかけつつ、 フィールドを少しずつ増やしながら、どこで間違いが起こるかチェックし続けて、完成しました。 どうやらis null or not is null で非表示のコントロールをかけていた部分が問題のようで、 データシートビューから非表示をかけることで、解決できたように思いますが、自分でも説明しきれず、 本当にそこがポイントだったのかも自信がありません。 ともかく、イチから作り直したらチェックもしやすく、解決できました。 お付き合いいただき、まことにありがとうございました。

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.2

> クエリは二つのテーブルをつないだもので、今回は片方の主キーID(オートナンバー型)を検索しようとしています。 多分この繋ぎ方に問題があって全てのデータが表示されているように見えているのだと思われます。たとえば、片方のIDがオートナンバー型で重複しないデータで、繋がれたもう片方のデータが重複しているとした場合、表示されているのが重複しているデータのほうだとしたら、重複しているデータは全て表示されてしまいます。 > 書式は「0000」の四ケタになっておりました。自分で設定したものです。 この場合、見え方だけが0001になっているだけで実際のデータは1ですので、抽出条件の値は1で間違っていません。 一度、テーブルを主キーID(オートナンバー型)のあるほう1個だけのクエリを作成して抽出条件を設定してみてください。正しく0001のデータだけが表示されるはずです。

wilion
質問者

補足

たびたびのご回答誠に恐縮です。ありがとうございます。 どちらのテーブルにも主キーがあります。 これはテーブルやクエリの設定自体に問題があるのでしょうか。 クエリはテーブルAとBを関連付けています。 B0001…A0001 B0002…A0001 B0003…A0001 というようにクエリにおいてはBの主キーは重複がないのですが、Aの主キーは重複があり得ます。 また今回検索したいのはAの主キーです。重複する結果も取り出したいのです。 この場合は、どのようにしたら思うような結果が得られるのでしょうか。 何度も回答のリクエストすることをお許しください。お願いします。

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.1

主キーのIDはオートナンバー型なんですよね。そこに0001という文字列は入力されまぜんし、自分でもデータは入力できないはずですが…。書式設定を変更して、1が0001に見えるようにしてはいませんか。 > 全てのデータが表示されるということは、検索条件に指定したものが、 > そのデータの中に存在しない、ということのはずですが、どういうことでしょうか。 いえ、存在しなければデータはまったく表示されません。全てのデータが表示されるということは、全てのデータで抽出条件が合致したということです。 オートナンバー型は値が重複しませんから、オートナンバー型のフィールドに=1という抽出条件を設定して全てのデータが表示されるということは考えられません。 よく似た名前のフィールドがあるとか、よく似た名前のテーブルがあって、何か勘違いしているということはありませんでしょうか。

wilion
質問者

補足

前回に引き続き、早速のご回答いただきまして誠にありがとうございます。感謝いたします。 クエリは二つのテーブルをつないだもので、今回は片方の主キーID(オートナンバー型)を検索しようとしています。 テーブルまで戻って、確認しましたところ、当該のIDには左側に黄色い鍵のマークがついており、オートナンバー型であり、書式は「0000」の四ケタになっておりました。自分で設定したものです。 この桁をいじったことに問題はあるでしょうか。 また同じようなテーブルやフィールドがないか、探してみたのですが、自分では確認できませんでした。 どうか再度のご指導願えますよう、よろしくお願いいたします。

関連するQ&A

  • アクセス:主キーでクエリ結果を検索:データ型違う

    アクセス2010を使用しています。 出来上がったあるクエリより、ある結果をID(主キー)から検索して抽出しようとしました。 IDの抽出条件の欄に "0243" という文字列を入れたのですが、データ型が違うというエラーメッセージが出ました。 調べてみると主キーはオートナンバー型ですが、これは検索できないのでしょうか。 できるとしたらどのように検索するのでしょうか。 初心者の質問で不手際があると思います。もし不足がありましたら補足します。 どうぞ上級者の方にご指導願えたら幸いです。どうぞよろしくお願いします。

  • Access 2007 クエリのあいまい検索について

    Access 2007 クエリのあいまい検索について 特定の文字を含むデータ以外を表示させたいと考えています。 下記の文字を含むデータ以外を表示させたい場合 どのように抽出条件を入れればいいでしょうか。 <抽出条件> 担当者もしくは空欄を含むデータ以外を表示 ※「担当者」という文字列です。 よろしくお願いいたします。

  • 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])) なんてしてみましたがだめでした。 ご回答よろしくお願いします。

  • アクセス クエリ抽出

    アクセスのクエリについてお伺いします。各フィールド毎に行をずらして抽出条件を入れて、1つでも条件があった場合にはそのデータ全てを抽出するようにしています。その抽出されたデータの中で、条件が一致したものについてのみフォントの色(例えば:赤)を変えて表示する事はできないでしょうか。よろしくお願いします。

  • アクセスの削除クエリでいいのでしょうか?

     データベースで検索できるようにしたいのですが・・・・。クエリの検索結果をフォームに反映させています。  検索結果表示後、もう一度検索フォームに戻り、検索をかけたときヒットするデータがないにも関わらず前回の検索結果が表示されたままになってしまいます。 削除クエリを使用すればいいのでしょうか?  また削除クエリをどのように設定したらいいのでしょうか?(たとえば抽出条件が必要なのでしょうか?)  この場合、マクロはいったん削除クエリを開き、もう一度クエリを開く設定でいいのでしょうか?分かりにくい質問ですいませんが教えてください

  • Accessのクエリ

    初めまして。Accessのクエリについての質問です。 Access2003を使っています。 検索フォームを作り、その検索フォームにテキストボックスを2つ作り、そのテキストボックスに検索したい言葉を入力し、コマンドボタンで作った検索ボタンを押すとマクロでフィルタの実行がされデータを抽出できるというものを作りました。フィルタには選択クエリを使用しています。抽出したい2つのフィールドの抽出条件にあいまい条件のLike "*" & [Forms]![フォーム名]![テキストボックス名] & "*"を入れています。 今はテキストボックスが2つですが、もっと増やしていろんな条件で検索出来るようにしたいので、3つ目のテキストボックスを作り、抽出条件も同じように入れました。ですが、そうすると今までちゃんとできていた最初の2つのテキストボックスによる抽出が違った結果となりでてきました。このとき、新しく作った3つ目のテキストボックスは空欄なので最初と同じ結果が出ると思ったのですが、これは抽出条件が3つはできないということでしょうか?どなたか教えてください。

  • アクセスでクエリーによる抽出方法

    アクセスの超初心者です。 クエリーのデータをフォームのコンボボックス等のデータを選ぶことにより抽出したいのです。クエリーの抽出条件にフォームのコンボボックスを割り当てて抽出することはできるのですが、例えばクエリーデータは下記のようになっています。  A  B  石川  100 東京  200   沖縄  150 フォームのコンボボックスで石川を選べば  "石川" "100"と表示できますが、コンボボックスに”すべて”という項目をつけてその”すべて”をクリックするとクエリーが全表示になるようにしたいのです。(そのクエリーにはすべてという項目はない) 長くなりましたがおわかりいただけたでしょうか。よろしくお願いします。 また、クエリーを使わず別の抽出方法がありましたら教えてください。というのもいろいろな抽出条件をするのにそのつどクエリーを作らなければならないからです。よろしくお願いします。

  • access2003で軽快な検索クエリを作るには?

    access2003で検索フォームを作成しています。 リレーションの結ばれた複数のテーブルを対象に、検索語句による検索をしようとクエリを作っています。 基本となるテーブルには数値(ID)が中心となっており、それらの実際の値をDlookUpで参照して結果を作っています。 この際に、DlookUpで指定した参照元について抽出条件を設定すると異様に時間が掛かり、実用的ではなくなってしまいました。 テーブルの構成上、DlookUpを使わざるを得ないので、その参照元も含めて検索語句で抽出できるようにしたいのですが、 どのようにすればレスポンスの良い検索クエリができますでしょうか。

  • アクセス クエリ

    アクセス クエリの抽出について教えて下さい。例えば、1つのクエリの中に数値のフィールドが5つ作成してあり、それぞれ違うフィールドの抽出条件をしています。それぞれの条件を入れてしまうと5つのフィールド条件全てに合ったものしか抽出できません。 5つのフィールドのうち、どれでも1つ一致したら抽出できるようにしたいのですが良い方法を教えて下さい。宜しくお願いします。

  • ACCESSでクエリがうまく使えません。

    ACCESS2003初心者です。 製品区分というルックアップがあります。 ルックアップの列数は2、連結列は2になっています。 1列目 | 2列目 薬剤A | 1 薬剤B | 2 ・ ・ ・ 薬剤S | 19 まであります。 このデータの11までをクエリで抽出したいのですが、 クエリの製品区分の抽出条件に <="11" と入力して実行しても上手く処理してくれません。 1と10と11だけに該当して表示されます。 >="1" And <="11" としても同じ結果でした。 ※仮に、抽出条件に"8"と入力して実行すると 問題なく、8に該当するデータが表示されます。 他の数字も同じように抽出されます。 11以下に該当するデータだけを抽出したいのですが、 どこが悪いのでしょうか? そもそも、ルックアップの2列目を抽出するような方法は良くないのでしょうか?

専門家に質問してみよう