MicrosoftAccess2000の選択クエリについて教えてください

このQ&Aのポイント
  • Access2000を使用してデータベースを作成している際に、クエリの結果が変化する現象が起きることがあります。
  • 具体的には、特定のクエリ(選択クエリ)の結果が正しくなく、レコード数が増えてしまうことがあります。
  • この現象は稀に発生し、データベース構造を再度インポートすることで解消されることがあります。
回答を見る
  • ベストアンサー

MicrosoftAccess2000の選択クエリについて教えて下さい

MicrosoftAccess2000の選択クエリについて教えて下さい 当方は全くの素人ですが、なんとかAccess2000を用いてデータベースを作成しています。 ところが、時々クエリの内容を全く変更していないのにクエリ結果が違ってくる、といった現象が起きてしまいます。原因が分からず対処できずにいます。 どうかお知恵をお貸し下さい。 事例) Aテーブル(レコード数50)を基にした、Bクエリ(選択クエリ)があるとすると、 Bクエリの結果が、正しくは50レコードである筈なのに、100レコード(2倍)、あるいは400レコード(4倍)抽出されてしまう現象が起こります。(重複して抽出されます。) この現象は1ヶ月のうち1~2回しか起きません。 データベース構造をコピーし、Aテーブルをインポートした後にBクエリを開くと、もうこの現象は起きません。

noname#111027
noname#111027

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

  • ベストアンサー
  • shinkami
  • ベストアンサー率43% (179/411)
回答No.3

起算日はデータを絞り込むためのものですね このような場合 フォームの対象となる時もそうですが、クエリーが開く前に確定していなければ なりません。 即ち起算日を入力するテキストボックスのあるフォームが開いていて初めて有効になります。 自分は[メニュー]という名のフォームに[起算日]と名付けたテキストボックスを配置してこのフォーム から目的のフォームを開いています。 メニューフォームの起算日を変更したイベントにより目的のフォームを開きます。 目的のフォームの絞り込み条件に FORMS!メニュー!起算日 とします。

noname#111027
質問者

お礼

ありがとうございました。

その他の回答 (2)

  • shinkami
  • ベストアンサー率43% (179/411)
回答No.2

一つのクエリの対象となるテーブルはリレーションシップが確立されているものだけです。 リレーションシップが確立されているテーブルは、クエリウィンドウ内で線で結ばれています。 孤立しているテーブルは右クリックから削除して下さい。 削除して不都合がある時はどのような不都合か具体的に仰ってください リレーションシップは通常1対Nの関係になっています。 例えば部門テーブルと従業員テーブルはリレーションシップで関係付けますが この場合のクエリーは、各部門内の従業員数だけ部門が重複表示されるのはご理解いただけますか

noname#111027
質問者

お礼

早速のご回答ありがとうございました。 私の見る限りではリレーションシップには問題なさそうなのですが、見落としがあるのかもしれません。再度確認してみます。 ただ、もしリレーションシップに問題があるということならば、クエリの結果は毎回正しく出ないように思うのですが、どうなのでしょうか? 当方のデータベースの場合、クエリ構造は矛盾がなさそうに見えており、ほとんどの場合で意図した結果がえられております。ただし、ごく稀な割合で結果が狂うので、なぜなのか知りたいと考えております。 質問文が分かりにくかった面があるようで、申し訳ありません。 ただ今問題としているクエリ内には孤立しているテーブルは1つ存在しますが、そのテーブルは削除すると求めている結果が出ませんので削除することが出来ません。 またこの孤立しているテーブルは、他のクエリでも(本データベース内に100個程度あります)孤立で使用していますが、今のところクエリ計算結果に問題はありません。 その孤立しているテーブルを具体的に示しますと、 孤立しているテーブル(テーブル名は「開始日」と名づけています。)は、データ抽出の起算日だけが入っています。レコード数は1です。 「開始日」テーブルの日付は、本データベース内の全てのクエリの起算日としています。 「開始日」テーブルの日付を変更することで、一定のタームごとの計算結果を得ることができます。 「開始日」テーブルの日付を基に別の締切日を計算し、その結果をクエリやフォームやレポートで表示させたりしたいため、パラメータは使用せず、1つのテーブルとしていました。こうすることで、パラメータのように毎度条件を尋ねられたりせずに使用出来ていました。 文章力がないため、分かりにくくて申し訳ないです。 またご教示ください。よろしくお願いします。

  • shinkami
  • ベストアンサー率43% (179/411)
回答No.1

参照等のために別のテーブルがAテーブル以外に設定されていませんか 別のテーブルのレコードの数だけ表示が重複します。

noname#111027
質問者

お礼

早速の回答ありがとうございます。 ご指摘の通り、このBクエリにはAテーブル以外にも多数のテーブル(テーブル数は、Aテーブルを含め、11あります)を使用しています。 (事例では、具体的になりすぎかと思い省いておりました。) 別のテーブルのレコードの数だけ表示が重複する、そして 現実には2倍または4倍に表示が重複したということは 使用している11のテーブルのうち、レコード数が2または4のテーブルが原因で重複しているのでしょうか。レコード数が2または4のテーブルは、4あります。 重複しないようにするには、どうすればよいのでしょうか?

関連するQ&A

  • 選択クエリを基に不一致クエリを作成したけれど...

    識者の力をお借りしたく質問いたします。 質問ページから不一致クエリに関する内容を参考に、ある不一致クエリを作成しています。 しかし、出来るはずの方法で結果が正しく表示されず途方にくれています。 処理の内容としては、あるクエリのフィールドを参考に不一致クエリで差分レコードを抽出したいというものです。 通常不一致クエリはテーブルの主キーを基に作成するものと私は理解しているのですが、今回の処理では基のテーブルに主キーが無く、(作成できない事情があり)クエリで無理矢理主キーもどきのものを作りました。 クエリで作成したのは、数字6桁(最大で)の後ろにチェックディジットとしてアルファベット1文字を追加した計7文字のフィールドです。 例:131401A 不一致を抽出したい基となる2つのテーブルに対しこのクエリを作成しました。 この2つのクエリから不一致クエリで差分を抽出し、基のテーブルに追加クエリで追加したいのですが、どうやっても不一致項目が表示されません。 根本的にクエリからの不一致クエリは作成できないのでしょうか? よろしくお願いいたします。 ■状況 テーブル1/テーブル2(基となるテーブル、主キー無し) クエリ1/クエリ2(テーブル1/テーブル2のレコードにコードを追加するクエリ) コード1/コード2(クエリ1/クエリ2で作成したコード)例:131401A 不一致クエリ テーブル2 → テーブル1 (リレーションシップ) コード2 条件:Not Null ※テーブル2の方が最新レコードが入っているので、テーブル2の差分レコードをテーブル1に追加したいというのが基本的な内容です。 よろしくお願いいたします。

  • Access97のクエリーについて

    Access97のクエリーで次のようなデータ抽出をしたいのですが、設定方法が良く分かりません。 1.約20000レコードのCSVファイルを外部データ   のインポートでTDLを作成。 2.重複クエリーを走行すると、約10000レコードが   重複していた。 3.作成したTBLから重複者がいないデータを抽出した   い。 イメージ: 処理前  a,2222,111,1,1234567  a,1111,100,1,0001234  b,0001,234,1,5555511  c,0003,001,1,0005555  c,0005,201,1,3345678  ↓(クエリー) 処理後  a,1111,100,1,0001234  b,0001,234,1,5555511  c,0003,001,1,0005555 どのような、関数、クエリーを使えば実現できるのでしょ うか。ご教示の程よろしくお願いします。

  • ACCESS クエリで”1”でないものを選択するには?

    ACCESS2003で排他選択("1"でないものを選択) をしたいのですが あるフィールドに”1”かブランクが入っていて ”1”以外のものを選択したいのですが クエリのデザイン画面で ------------------------- フィールド テーブル 並べ替え 表示 抽出条件  <> "1" ------------------------- 抽出条件に = "1" を入れると、"1"のレコードのみ 選択できます やりたいのは "1"以外のものを選択したいのです そこで 抽出条件に<> "1"といれると レコードがゼロ件になります また、Not "1"とか <> "1"、とか、Not = "1" と入れてみても、抽出結果はゼロ件になります 原因を教えてください

  • access クエリ 重複について

    2つのテーブルA,Bでクエリを作成するのですが、 テーブルA,Bを別々に条件Xによって抽出した場合、抽出されるレコード数は違います。 希望する抽出結果は、   テーブルAの条件Xによる抽出結果AXに   テーブルBの条件Xによる抽出結果BXを割り当てていき、   BXが足りなくなったら、以降は空白となる。 です。 前提としてレコード数は、必ずAX>BXです。 よろしくお願いします。

  • 選択クエリーについて

    すでに出来上がっている選択クエリーを実行したときに、何レコード抽出されるか事前に知りたい場合、 DCountのような関数で知ることは可能でしょうか? Me![F_サブフォーム名].Form.RecordSource = "Q_クエリー名"のように、 サブフォームで明細を表示する前に、何件合致しましたという表示をさせたいのですが・・・。 (選択クエリーなので、テーブルを作成しているわけではありません。)

  • Access 選択クエリーの抽出条件

    Access2000を使っています。 選択クエリーの抽出条件にテーブルの値を設定することは可能でしょうか? たとえば、テーブルAに対して、抽出条件をテーブルBのデータでコード番号 ”B*”(コード番号にBのつくもの)を抽出したいのですが・・・。 よろしくお願いします。

  • クエリがうまくいきません

    WinMe,Access2000,Excel2000を使用しています。 練習で名簿を作成してみましたが、 クエリがうまくいきません。 100レコードあるテーブルからクエリを作り、 「人名」フィールドの抽出条件を「Like "*"」としました。 人名を記入していないレコードが40ある場合は 記入のある60レコードが抽出されると思うのですが、 クエリのレコード数は100のままです。 条件を「is not null」に変えても変化ありません。 データシートビューで、人名が空欄になっている レコードの所で非選択フィルタをかけてみても 変化が無いところを見ると、見た目は空欄でも 実際は空欄ではないのだと思います。 テーブルを、エクセルからのインポートで 作ったのがいけなかったのでしょうか。 解決策をネットで捜してみたのですが、 検索の仕方が悪かったのか、見当たりませんでした。 方法を教えて頂けると大変ありがたいです、 宜しくお願い致しますm(_ _)m

  • アクセスのクエリの使い方(基本?)

    氏名と複数項目のデータをもつテーブルがあります。半年後とに新たに同項目によるテーブルとして追加されます。 氏名は重複あり、また追加や次には削除もあります。 A~Eさんのデータがあるテーブル1と、B~Hさんまでのテーブル2で (1)全員分のデータにしていくつかの項目のデータをクエリで抽出したいのですが、選択クエリだとAさんは消えます。 (2)ある項目について要件を満たす氏名をどちらかも抽出したい。 クエリでは無理だと聞いたことがありますが本当に無理でしょうか?

  • アクセス・選択クエリについて

    アクセス・選択クエリについて こんにちは。現在、選択クエリについて悩んでおります。 テーブルAとテーブルBからそれぞれ3つのフィールドを選び、選択クエリを作成。しかし、出来上がったクエリのデータシートには一切データが表示されていません。ならばと思い、テーブルAからだけ3つのフィールドを選びクエリを表示させると、きちんと表示します。テーブルA,テーブルBには当然主キーが設定されていますが、その事と関係するのでしょうか?ご存知の方、どうか教えてください。宜しくお願い致します。

  • 特定のレコードのみの更新クエリ

    過去ログより、項目の更新クエリはありましたが、 特定のレコードの更新方法はどう考えればいいのかアドバイスください。 テーブルには、毎月あたらしいデータがインポートされていきますが、 前月と比べて同じレコードは削除して常に新しいレコードにしておきたいのですが、これは一旦、重複クエリで重複レコードすべて削除してから新しいデータをインポートする2段階の方法をとるしかないのでしょうか?

専門家に質問してみよう