こんにちは。
今、Accessであるデータベースを作っているんですが、
テーブルを作って、リレーションをはって、クエリを実行
すると、データシートに同じデータがいくつも出てきて
しまいます。
例えば、Aさんのレコードが3つ表示されてしまうんです。
5人分のデータが入っているとすると、3倍の15のレコードが出てしまうんですね・・・。
Accessの勉強をはじめて1ヶ月位の私には、何がなんだか
意味不明です。
こういうエラーの原因は何にあるのでしょうか???
どなたか、教えてください。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

詳しい構造が分からないので正確なことは言えませんが、


一人分のデータについて、何か3件ずつのデータを表示しようとしているのでしょうね。

簡単な例を挙げましょう。
テーブル1に5件のデータが入っています。
テーブル2に3件のデータが入っています。
クエリー1で、テーブル1とてーぶる2を参照し、リレーションを張らなかったとします。
で、テーブル1のデータだけを表示するようになっていたとします。
すると、クエリー1は、テーブル1とテーブル2のすべてのデータの組み合わせを作ろうと
します。この組み合わせの数は5×3=15ですよね。
表示されるのはテーブル1のデータだけですから、同じレコードが3つずつ表示されている
ように見えます。ですけれど、実は、それらは、テーブル2の別々のデータと組み合わされて
できる別のレコードなのです。
リレーションをはっているということですから、この例と全く同じではないでしょうけれど、
どこかでこれと似た関係ができてしまっているのだと思います。
    • good
    • 0
この回答へのお礼

ranxさんへ
アドバイスありがとうございました。
何とか,解決できました。
クエリのフィールドをひとつずつ定義していったら
なぜかできたんです。
理由は???ですけど・・・。

また質問があったときは、どうぞよろしくお願いします。

お礼日時:2001/08/16 13:03

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QphpMyAdminでのフィールド削除(クエリ実行)

本当にMySQL初心者なので基本的にコマンドが理解できないのですが、phpMyAdminにてデータベースを管理していますが、一つのテーブルに数千のデータが入っており、例えばID番号1から500までを一気に削除したいと言うときに、最初はローカルにCSVデータをエキスポートして編集した後インポートさせようとしたのですが、文字コードの関係でエラーになってしまい、解決策はクエリでデータを削除するしかないとの結論になりました。
例えばテーブルを指定してからクエリのウィンドウを開くとSELECT * FROM `テーブル名` WHERE 1
とすでに入力されているのですが、これをどのように書き換えれば複数のフィールドをいっぺんに削除できるのでしょうか?
非常に困ってます、アドバイスよろしくお願いします

Aベストアンサー

普通にクエリを書いて実行してください

DELETE FROM `テーブル名` WHERE `ID` BETWEEN 1 AND 500;

Q(MS-Access クエリ)直前レコードと同じレコードを空白としたい

MS-Accessのクエリで、文字列フィールドのデータが直前のレコードと同じデータの場合、そこを”空白”表示としたいのです。下記の様にしたいのです。教えてください。
 ----------------
 文字列フィールド
----------------
 ああああああああ
 ああああああああ <-----空白表示とする
 いいいいいいいい
 うううううううう
 うううううううう <-----空白表示とする
 ええええええええ

Aベストアンサー

(1)クエリとして実現したい場合は該当フィールドの他にレコードを
一意に識別できる項目が必要です。
(2)レポートで出力する場合はグループヘッダに指定することで、
最初に出現したものだけを表示することができます。
いずれにも該当しない場合は単純な方法では処理できません。

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

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

Aベストアンサー

はい、フォームのもとになっているクエリのデータが変わっても、更新行為をしないと反映されません。
具体的には、更新したいフォームに、コマンドボタンウイザードでフォーム→再表示を選択し、「再表示」ボタンを作ってみてください。押すとほら、更新されました。ボタン押し下げ動作を省略したい場合は、たとえば検索画面に戻るボタンがあるとしたら、そのボタンのクリック時イベントに、再表示ボタン内の主要ソースを貼り付ければ用を成すはずです。
但し、サブフォームをご利用の場合など、この方法がふさわしくない場合もあります。
確実に更新するには該当のフォームを閉じて開きなおすことです。マクロを作ってボタン化すれば少々画面がちらつくだけでそう不自然ではありません。
お試し下さい。

QAccess:値が求めたい値の2倍3倍4倍になってしまいます。

どうもよろしくお願い致します。

Accessでシステムを製作しているのですが、
クエリを使ったところ、途中まではちゃんとした数値が出るのですが、
突然、値が、2倍、3倍、4倍になってしまいます。

クエリかなー? リレーションかなー? と感じるのですけれど、
色々試してみても、わかりません。

大変お手数かとは存じますが、
本来の数値が出るための方法をご指南ください。

どうぞよろしくお願い致します。

Aベストアンサー

主キーの設定をきちんとしていないと「リレーションシップ未定義」となります。
主キー設定すると「重複なし」になります。テキストフィールドの値で主キーにしていいのですが、値が重複していると、主キーとして設定できません。
テーブルの中で、重複データが存在しないフィールドを主キーにします。
それぞれのテーブルに主キーを設定したら、
テーブルのリレーションシップは、片方の主キーともう一方のテーブルのフィールド(相手の主キーと同じ種類のデータを格納するフィールド)を結びます。

う~ん、具体的なフィールド名がわからないと、これ以上の説明は難しいです。

Qテーブル削除クエリ

テーブル作成クエリはあるけどテーブル削除クエリはないのでしょうか?
ADOXで削除するしかないですか?

Aベストアンサー

クエリーのSQLビューで、下記の様なSQLを入力して保存すると、一種のテーブル削除クエリができますね。
DROP TABLE Table1;
データベースウィンドウで右クリックする方が早そうな...
VBAからなら、下記で実行できました。ご参考まで。
Sub Sample()
DoCmd.SetWarnings False
DoCmd.OpenQuery "Q_Table1削除"
DoCmd.SetWarnings True
End Sub

QAccess リレーションとデータの参照について

パソコンはアクセスとエクセルマクロの入門書を読み終えたレベルです。
只今、注文実績管理をする為にアクセスを構築していますが思うようにできません。
職場でPCの相談する相手がいないため、大変困っています。どなたかお知恵をください。

相談の内容ですが、【C】の注文テーブルにある「注文番号」と「数量」と「日付」で
期間中の発注実績の集計をしたいと考えています。
【B】と【C】がまったく関連付けることができません。


【A】顧客テーブル
   (1)ID(オートナンバー)
   (2)発注コード
   (3)氏名
    (注)顧客テーブルにある「発注コード」がローマ字と数字の組み合わせで
       、これでリレーションシップを設定したいのです。

【B】商品テーブル
   (1)ID(オートナンバー)
   (2)注文番号
   (3)品名
   (4)金額

【C】注文テーブル
   (1)ID(オートナンバー)
   (2)発注コード
   (3)日付
   (4)氏名
   (5)注文番号1
   (6)注文番号1(数量)
   (7)注文番号2
   (8)注文番号2(数量)
   (9)注文番号3
   (10)注文番号3(数量)
    ・
    ・
    ・
    注文番号50
    注文番号50(数量)

パソコンはアクセスとエクセルマクロの入門書を読み終えたレベルです。
只今、注文実績管理をする為にアクセスを構築していますが思うようにできません。
職場でPCの相談する相手がいないため、大変困っています。どなたかお知恵をください。

相談の内容ですが、【C】の注文テーブルにある「注文番号」と「数量」と「日付」で
期間中の発注実績の集計をしたいと考えています。
【B】と【C】がまったく関連付けることができません。


【A】顧客テーブル
   (1)ID(オートナンバー)
   (2)発注コード...続きを読む

Aベストアンサー

>【A】顧客テーブルは (2)の発注コードが主キー
>【C】注文テーブルは、(1)のID(オートナンバー)が主キーです。

これはOKです。ただし、注文テーブルのID は 注文ID というように内容が分かる名前に変更しましょう。

>【B】商品テーブルは、(1)のID(オートナンバー)が主キー

これは、ID を主キーにするなら、リンク先も ID(長整数型)にする必要があります。
注文番号をリンク先に格納したいのなら、「注文番号」を主キーにする必要があります。

注文テーブルは、下記のように2つに分割してください。

【C】注文テーブル
   (1)注文ID(オートナンバー)
   (2)発注コード
   (3)日付
   (4)氏名 ←この氏名が顧客テーブルの氏名ならば、このフィールドは不必要
         担当者とか別の内容のデータならOK、その場合は意味を表すフィールド名に変更したほうがよい。

【D】注文明細テーブル
   (1)注文明細ID(オートナンバー型)
   (2)注文ID(長整数型)
   (3)注文番号  ←商品テーブルの主キーが「注文番号」の場合
   (4)数量

>【A】顧客テーブルは (2)の発注コードが主キー
>【C】注文テーブルは、(1)のID(オートナンバー)が主キーです。

これはOKです。ただし、注文テーブルのID は 注文ID というように内容が分かる名前に変更しましょう。

>【B】商品テーブルは、(1)のID(オートナンバー)が主キー

これは、ID を主キーにするなら、リンク先も ID(長整数型)にする必要があります。
注文番号をリンク先に格納したいのなら、「注文番号」を主キーにする必要があります。

注文テーブルは、下記のように2つに分割してください。...続きを読む

QAccessの削除クエリについて

『先月分のデータを全て削除』という削除クエリを作りたいのです。
本を見ても、
『指定した日の○日前の分までのデータを削除する』はあるのですが・・・・。

例えば、
5月5日にクエリを実行しても、5月10日にクエリを実行しても、4月30日以前のデータが削除されて欲しいのですが。
よろしくお願いいたします。

Aベストアンサー

>『先月分のデータを全て削除』
ということであれば下記条件で削除クエリを作成
すればできます。
---
フィールド:式:Month([対象日付フィールド])
抽出条件:Month(DateAdd("m",-1,Now()))

QAccess2000 選択クエリで最新の日付のレコードだけ表示したい。

タイトルのように、フィールド「年月日」に抽出条件をつけたいのですが、
選択クエリ、デザインビューの抽出条件に何を入れればよいでしょうか?

やり方が違うのかも知れませんが・・・

Aベストアンサー

なんか回りくどいことをしていますが
各社員の最新レコードが得られればいいんじゃないんですか

時給テーブルから作ったクエリの年月日の抽出条件欄に

In (select max(年月日) from 時給テーブル as 時給テーブル_2 where 時給テーブル_2.社員番号=時給テーブル.社員番号)

>(0で始まる番号を含むため主キーに設定不可)
こんなことはありません。テキスト型でも主キーにできます

>このフォームをデザインビューにしてフォームビューに戻すと正しく更新できます。
再クエリされるからです
でも今の方法はやめたほうがいいでしょうね

>「マスター」テーブルに「時給テーブル」から最新の時給と年月日を抽出したい
テーブルに抽出ってどういうこと?
マスタを書き換えるの?
そんなことする必要はありませんよ。
というよりもっと言えばしてはいけません

Qアクセスのクエリでレコード削除ができません。

アクセス超初心者です。

テーブルを商品コードでくっつけて、クエリのデザインビューで表示しました。

いらないレコードを削除しようとしたところ、できません。

くっつける前の、テーブルではできますが、クエリで実行させ、レコードを削除しようとしたところできません。

どうしたらよいのか教えてください。

あと、もうひとつ、クエリで、出力したいフィールド名をドラッグしたあと、削除したいときには、どうすればよいでしょうか?

表示しないなら、できるのですが・・・。削除がわかりません。

よろしくお願いいたします。

Aベストアンサー

二つのテーブル構造が不明
クエリのSQL文も不明
サンプルデータ

以上三点が分からないと回答のしようもありません。
SQL文はクエリをデザインビューで開いて
その上で右クリックすると現れるコンテキストメニューに
SQLビュー が有りますので切り替えると
SELECT ・・・・ てのが有りますのでコピーして此処に貼り付けできます。

クエリはSQL文を分かりやすいように作られたモノで実体はSQL文です。
掲示板ではこのSQL文でやり取りをします。
さて、なぜ削除できないかというと、そのように作ってしまっているからです。
このリンク先の説明を理解すれば原因が突き止められます。
クエリのデータを編集できない状況
http://office.microsoft.com/ja-jp/access-help/HA010097876.aspx

フィールドの削除は、Access2010の場合なら
リボンの中に「列の削除」が有ります。
または、フィールド名の少し上にマウスカーソルを持って行くと
下向きの太い矢印になるのでクリック、列全体が反転しますので Deleteキーで削除
なお、次回からはAccessのバージョンも明記しましょう。

二つのテーブル構造が不明
クエリのSQL文も不明
サンプルデータ

以上三点が分からないと回答のしようもありません。
SQL文はクエリをデザインビューで開いて
その上で右クリックすると現れるコンテキストメニューに
SQLビュー が有りますので切り替えると
SELECT ・・・・ てのが有りますのでコピーして此処に貼り付けできます。

クエリはSQL文を分かりやすいように作られたモノで実体はSQL文です。
掲示板ではこのSQL文でやり取りをします。
さて、なぜ削除できないかというと、そのように作ってしまっているか...続きを読む

QACCESS2000でクエリで抽出したレコードをフォームに表示するには

A顧客テーブルで作成したフォームからコマンドボタン(電話番号検索)押下時に
電話番号入力画面が出て入力した電話番号とマッチした顧客レコードをフォームに
表示させたいのですが上手く出来ません。
現在進めている方法では何がダメなんでしょうか(以下は考え方)

A顧客テーブルから作成したフォムに電話番号コマンドを作成してコマンドを
押すとクエリの実行をさせる。クエリはA顧客テーブルのフィールドを全て選択して抽出条件に[電話番号入力]としている。
(結果)
・フォームを開くと先に電話番号入力が出てくる、先にフォームが開かない。
・電話番号検索コマンドボタンを押すと抽出条件に合ったレコードはデーターシートビューに表示される。
よろしくお願いします

Aベストアンサー

>この入力させるダイアログをパラメータダイアログのような
>シンプルな物にすることは困難でしょうか?

そういう場合は、自分で検索ダイアログフォームを作ることになります。
それが面倒(または難しい)場合は、InputBox関数で代用しましょう。
また、検索の部分を自分でコーディングすることになります。
その一例です。(DAOのレコードセットによる方法)

まず、VBE画面のメニューの[ツール]→[参照]で、
「Microsoft DAO X.X Object Library」(X.Xはバージョン、多分3.6か3.5)
にチェックが入ってなければ、チェックしてOKします。
で、電話番号検索ボタンのクリックイベントに以下のように書きます。


Dim temp As String
Dim rs As DAO.Recordset

temp = InputBox("電話番号を入力して下さい。")
If Len(temp) = 0 Then
  Exit Sub
End If

Set rs = Me.Recordset.Clone
rs.FindFirst "電話番号 = '" & temp & "'"
If rs.NoMatch Then
  MsgBox "該当するレコードがありません。"
Else
  Me.Bookmark = rs.Bookmark
End If

rs.Close: Set rs = Nothing


なお、テーブルの電話番号フィールドは文字列型である必要があります。
また、コードの内容は各キーワードでヘルプで検索して下さい。

>この入力させるダイアログをパラメータダイアログのような
>シンプルな物にすることは困難でしょうか?

そういう場合は、自分で検索ダイアログフォームを作ることになります。
それが面倒(または難しい)場合は、InputBox関数で代用しましょう。
また、検索の部分を自分でコーディングすることになります。
その一例です。(DAOのレコードセットによる方法)

まず、VBE画面のメニューの[ツール]→[参照]で、
「Microsoft DAO X.X Object Library」(X.Xはバージョン、多分3.6か3.5)
にチェックが...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報