- ベストアンサー
アクセス:主キーでクエリ検索結果エラー
- 主キーを使用してクエリを検索する際にエラーが発生し、検索結果が表示されません。
- IDを指定してクエリを検索しようとすると、全てのデータが表示されてしまいます。
- 全てのデータが表示されることから、指定した条件がデータ内に存在しない可能性があります。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
> Aの主キーは重複があり得ます。 主キーでは重複はありえません。 以下のページを参考にご覧になってください。 http://www.officepro.jp/access/table/index6.html > また今回検索したいのはAの主キーです。重複する結果も取り出したいのです。 全てのデータが結果として表示されたのですから、重複する結果自体も表示されたのではありませんか?どうも、説明が良く分かりません。 AとBの質問者さんが主キーと思われてるもの同士を結合して、Aで1を指定し抽出したのですから、質問者さんが書かれていたように B0001…A0001 B0002…A0001 B0003…A0001 Aテーブルの重複する0001のデータが全て抽出されたのですから、上記のような表示になって当然です。 質問文にありましたが「全データが表示されるのは、検索条件に指定したものが存在しないから」というお考えでしたし、なにか基本的に考え方が違うような気がしますので、何かしらアクセスの教則になる書籍を購入して基本的なところをおさえてみてはいかがでしょう。 書籍は個々の機能を脈絡もなく説明したものよりも、その書籍を通して何かしらのアプリを作成していき、その機能を実現するためにはこうするのだといった説明がされているものの方が実践的な勉強になります。
その他の回答 (3)
- kmetu
- ベストアンサー率41% (562/1346)
2010ですからこちらのページが見た目同じなので分かりやすいかもしれませんね。 http://office.microsoft.com/ja-jp/access-help/HA010341617.aspx?CTT=5&origin=HA010341487#BMspecifyprimarykeys http://japanism.info/access-relationship.html
補足
最終的には回答者様の仰せのとおり、小さいクエリから作り直し、検索をかけつつ、 フィールドを少しずつ増やしながら、どこで間違いが起こるかチェックし続けて、完成しました。 どうやらis null or not is null で非表示のコントロールをかけていた部分が問題のようで、 データシートビューから非表示をかけることで、解決できたように思いますが、自分でも説明しきれず、 本当にそこがポイントだったのかも自信がありません。 ともかく、イチから作り直したらチェックもしやすく、解決できました。 お付き合いいただき、まことにありがとうございました。
- kmetu
- ベストアンサー率41% (562/1346)
> クエリは二つのテーブルをつないだもので、今回は片方の主キーID(オートナンバー型)を検索しようとしています。 多分この繋ぎ方に問題があって全てのデータが表示されているように見えているのだと思われます。たとえば、片方のIDがオートナンバー型で重複しないデータで、繋がれたもう片方のデータが重複しているとした場合、表示されているのが重複しているデータのほうだとしたら、重複しているデータは全て表示されてしまいます。 > 書式は「0000」の四ケタになっておりました。自分で設定したものです。 この場合、見え方だけが0001になっているだけで実際のデータは1ですので、抽出条件の値は1で間違っていません。 一度、テーブルを主キーID(オートナンバー型)のあるほう1個だけのクエリを作成して抽出条件を設定してみてください。正しく0001のデータだけが表示されるはずです。
補足
たびたびのご回答誠に恐縮です。ありがとうございます。 どちらのテーブルにも主キーがあります。 これはテーブルやクエリの設定自体に問題があるのでしょうか。 クエリはテーブルAとBを関連付けています。 B0001…A0001 B0002…A0001 B0003…A0001 というようにクエリにおいてはBの主キーは重複がないのですが、Aの主キーは重複があり得ます。 また今回検索したいのはAの主キーです。重複する結果も取り出したいのです。 この場合は、どのようにしたら思うような結果が得られるのでしょうか。 何度も回答のリクエストすることをお許しください。お願いします。
- kmetu
- ベストアンサー率41% (562/1346)
主キーのIDはオートナンバー型なんですよね。そこに0001という文字列は入力されまぜんし、自分でもデータは入力できないはずですが…。書式設定を変更して、1が0001に見えるようにしてはいませんか。 > 全てのデータが表示されるということは、検索条件に指定したものが、 > そのデータの中に存在しない、ということのはずですが、どういうことでしょうか。 いえ、存在しなければデータはまったく表示されません。全てのデータが表示されるということは、全てのデータで抽出条件が合致したということです。 オートナンバー型は値が重複しませんから、オートナンバー型のフィールドに=1という抽出条件を設定して全てのデータが表示されるということは考えられません。 よく似た名前のフィールドがあるとか、よく似た名前のテーブルがあって、何か勘違いしているということはありませんでしょうか。
補足
前回に引き続き、早速のご回答いただきまして誠にありがとうございます。感謝いたします。 クエリは二つのテーブルをつないだもので、今回は片方の主キーID(オートナンバー型)を検索しようとしています。 テーブルまで戻って、確認しましたところ、当該のIDには左側に黄色い鍵のマークがついており、オートナンバー型であり、書式は「0000」の四ケタになっておりました。自分で設定したものです。 この桁をいじったことに問題はあるでしょうか。 また同じようなテーブルやフィールドがないか、探してみたのですが、自分では確認できませんでした。 どうか再度のご指導願えますよう、よろしくお願いいたします。
補足
ありがとうございました。いったんあきらめ、書籍を見返します。