Access2007 クエリの作成 フィールド選択

このQ&Aのポイント
  • Access2007を独学で勉強中です。クエリを使ってテーブル「売上台帳」と「商品台帳」の情報を結合する方法について教えてください。
  • 「商品CD」を取得するため、テーブル「売上台帳」から情報を取得する必要がありますが、なぜテーブル「商品台帳」の「商品CD」を使わないのでしょうか?
  • リレーションシップと参照整合性の設定は行っています。クエリ作成において重要な要素ですので、詳細を教えてください。
回答を見る
  • ベストアンサー

Access2007 クエリの作成 フィールド選択

Access2007を独学で勉強中です。とっても基本的なことだと思いますが教えてください。 テーブル「売上台帳」には「売上No.」「売上日」「商品CD」「数量」があります。 テーブル「商品台帳」には「商品CD」「商品名」「単価」があります。 この二つをクエリを使って1つの表として扱えるようにしたいのですが、テキストをみると「商品CD」はテーブル「売上台帳」から取るようになっています。なぜテーブル「商品台帳」の「商品CD」を使わないのでしょうか??? 因みに、どちらから「商品CD」をとっても、クエリのデータシートビューで確認すると同じ結果になりました。 なお、リレーションシップと参照整合性の設定は行っています。 クエリを作成する上で重要なことのように思えましたので、質問させていただきました。 よろしくお願いいたします。

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

  • ベストアンサー
  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.2

リレーションシップとクエリの詳しい説明が無いので 一般的?な事を推測のもとに。 売上台帳は日々の売り上げで毎日更新されますね。 一方商品台帳は必要になった時だけですので一か月間更新なしの場合もあり得ます。 商品台帳はマスタテーブル、売上台帳はトランザクションテーブルといって良いと思います。 さて、 リレーションシップの設定を行っているので 売上台帳の商品CDは必ず商品台帳の商品CDに含まれます。 しかし、売り上げのない商品CDは当然売上台帳の商品CDにはありません。 >どちらから「商品CD」をとっても、クエリのデータシートビューで確認すると同じ結果になりました なのでクエリの結合が、両方のテーブルの結合フィールドが同じ・・・になっていると推測。 1---∞ この場合はどちらの商品CDにしても結果は同じです。 結合の種類を変えて、商品台帳1--→∞売上台帳 にして色々試してみてください。 何を求めたいのか・・でクエリも変える必要が有ります。 ここをご覧になってベン図で求めたい範囲が何かを考えてみてください。 http://www.sk-access.com/Syo_Query/SqA011_Property.html ちょっと蛇足かもしれませんが、現実には商品台帳にはまだ無いけど売上台帳に入力だけ先にしたい・・ などのケースが発生します。 その場合にはリレーションシップを張っていると出来ませんのでリレーションを削除して 入力作業に専念して後からマスタテーブルである商品台帳に登録することもあります。

auswa6015
質問者

お礼

さっそくのご回答、ありがとうございます。 なぜかログインができなくなってしまい、お礼が遅くなりました。 質問の内容も簡単に書きすぎていたようで、申し訳ございません。 その後、いろいろ試していたところ、売上台帳の商品CDをクエリで使わないと、クエリを使ってフォームを作成した場合、新規の登録ができないことに気がつきました! 「見るだけならどちらでもOK、入力があるならデータを書き込みたいテーブルから取る必要がある」ということですね。

その他の回答 (1)

noname#192382
noname#192382
回答No.1

なぜテーブル「商品台帳」の「商品CD」を使わないのでしょうか??? 因みに、どちらから「商品CD」をとっても、クエリのデータシートビューで確認すると同じ結果になりました。>> vszk 一つのテーブルに「売上台帳」の「商品CD」と「商品台帳」の「商品CD」の二つの「商品CD」という同じものを並べるのはむだだからです。どちらか一つのせれば十分です。

auswa6015
質問者

お礼

ログインができなくなってしまい、お礼がおそくなって申し訳ありません。 2つある商品CDのうちどちらを取ればよいのかが、よくわかりませんでした。 いろいろ触っていると、どちらから取っても表示はできるが、売上台帳から取らないと新規の入力ができないことが分かりました。 ご回答くださり、ありがとうございました。

関連するQ&A

  • アクセスのクエリの作り方

    初心者なので教えてくださいませんか? アクセスでテーブルを複数作成して、それをクエリで結合するときに、どのテーブルからどのフィールドを選べばいいのかわかりません。 例えば・・・ 売上テーブル:NO 売上日 商品コード 数量 商品テーブル:商品コード 商品名 単価 この二つのテーブルを結合するクエリを作ります。 NO 売上日 商品コード 商品名 単価 数量 上記のフィールドを使用したいのですが、このとき、商品コードをどちらのテーブルのを使ったらよいのでしょう。 その判断は何からしたらよいのでしょうか。 うまく説明できているかわかりませんが、よろしくお願いします。

  • Accessでクエリを作った際の順番

    Access2003の質問です。 以下のテーブルがあってそれらの項目を抜き出してクエリを作っています。 テーブル1 ・商品CD ・商品名 ・単価 テーブル2 ・No ・売上日 ・得意先CD ・商品CD ・数量 テーブル3 ・得意先CD ・得意先名 ・フリガナ ・郵便番号 ・住所 ・TEL ・担当者CD ・DM テーブル4 ・担当者CD ・担当者名 クエリ ・No(テーブル2) ・売上日(テーブル2) ・得意先CD(テーブル2) ・得意先名(テーブル3) ・担当者CD(テーブル3) ・担当者名(テーブル4) ・商品CD(テーブル2) ・商品名(テーブル1) ・単価(テーブル1) ・数量(テーブル2) クエリを作って、データシートビューに切り替えるとなぜか得意先CDで昇順に並んでいます。 もちろんNoで並べ替えを設定すれば、Noで並べ替わるのですが、なぜ得意先CDで昇順に並ぶのでしょうか? Noが一番左にあるので、Noで並べ替わりそうなものですが・・ 何も並べ替えを設定しないとどのような基準で並ぶのでしょうか? わかる方がいれば教えてください。

  • ACCESS 選択クエリの集計について

    そもそもテーブルの作り方が悪かったと言えるのですが、是非お知恵をお借りしたく投稿しました。 売上テーブル  売上ID 日付 得意先 売上A種テーブル 売上A種ID 売上IDNo 品目 数量 単価 合計  売上B種テーブル 売上B種ID 売上IDNo 品目 数量 単価 合計  売上C種テーブル 売上C種ID 売上IDNo 品目 数量 単価 合計  売上テーブルにメインの情報を入力し、売上A種テーブル、売上B種テーブル、売上C種テーブルに詳細情報を入力できるように売上IDと売上IDNoでリレーションシップを作成しました。 選択クエリでその日の各種の売上を集計したいのですが、必ずその日の得意先の売上の中に売上A種、売上B種、売上C種が含まれているわけではないので、選択クエリで 売上ID-グループ化 日付-グループ化 得意先-グループ化 売上A種合計-合計 売上B種合計-合計 売上C種合計-合計 とした場合、A種、B種、C種すべてに入力がなければ拾ってくれません。 入力の無いもの(売上IDNoのないもの)は0で、あるものはその合計を集計させるにはどのようにしたらよいでしょうか? 何卒、よろしくお願い申し上げます。

  • Access クエリ内のクエリ

    クエリの中で、他のテーブルと一致するデータを抽出したいのですが、結果が0件の結果しかかえって来ません。 何処が間違っているのかお教え頂けたら幸いです。 何がしたいかと言うと、「dbo_VIEW_CIJ用売上伝票」の下記項目の中の「T_得意先」の中の抽出フラグのTrueデータを抽出し新しい「T_税抜」テーブルを作成したいのですが、結果は0件しかかえって来ません。 ちなみに、得意先CDのIN句を抜くとちゃんとデータは抽出されます。 《テーブル》 【dbo_VIEW_CIJ用売上伝票】(SQL Serverリンクテーブル) ・納品日付 ・伝票NO ・得意先CD ・税抜金額 ・消費税区分 ・商品名 ・摘要 ・数量 ・単位名 ・単価 ・金額 {T_得意先】 得意先CD 抽出フラグ(YES・NO型) 《抽出条件》 納品日 : >=#(開始日変数)# And #(終了日変数)# 消費税区分 : 1 得意先CD : IN(SELECT [T_得意先]![得意先CD] FROM [T_得意先] WHERE[T_得意先]![抽出フラグ]='True') 《SQL》 SELECT dbo_VIEW_CIJ用売上伝票.納品日付, "" AS 部門コード, dbo_VIEW_CIJ用売上伝票.伝票NO, dbo_VIEW_CIJ用売上伝票.得意先CD, "" AS F, dbo_VIEW_CIJ用売上伝票.税抜金額, dbo_VIEW_CIJ用売上伝票.消費税区分, "" AS 商品CD, dbo_VIEW_CIJ用売上伝票.商品名, dbo_VIEW_CIJ用売上伝票.摘要, "" AS ケース数, "" AS 入数, dbo_VIEW_CIJ用売上伝票.数量, dbo_VIEW_CIJ用売上伝票.単位名, dbo_VIEW_CIJ用売上伝票.単価, [dbo_VIEW_CIJ用売上伝票]![消費税区分]*[dbo_VIEW_CIJ用売上伝票]![税抜金額] AS tmp小計, [dbo_VIEW_CIJ用売上伝票]![数量]*[dbo_VIEW_CIJ用売上伝票]![単価] AS tmp単価計 INTO Tmp税抜 FROM dbo_VIEW_CIJ用売上伝票 WHERE (((dbo_VIEW_CIJ用売上伝票.納品日付)>=#10/21/2013# And (dbo_VIEW_CIJ用売上伝票.納品日付)<=#11/20/2013#) AND ((dbo_VIEW_CIJ用売上伝票.得意先CD) In (select [T_得意先]![得意先CD] from [T_得意先] Where [T_得意先]![抽出フラグ] = True)) AND ((dbo_VIEW_CIJ用売上伝票.消費税区分)=1)) ORDER BY dbo_VIEW_CIJ用売上伝票.納品日付; ※上記SQL文は、SQLビューを記載してますが、デザインビューで作成し、得意先CDのIN句の部分は、得意先CDにビルドを使って入力しました。 参考にしたURL http://office.microsoft.com/ja-jp/access-help/HA010206111.aspx ・サブクエリをクエリ フィールドの抽出条件として使用する Access2010 Windows7

  • 「Access2000」クエリー作成についてお教えください。

    たとえば、売上テーブルから売上先、商品、数量を抽出するクエリーを作成する場合、数量分のレコードを発生させたいのですが・・・。 つまり、売上テーブルに次のレコードがあったとき・・・  A商店 りんご 3個  B商店 みかん 2個 クエリーには以下のように表示させたいのですが・・・  A商店 りんご 3  A商店 りんご 3  A商店 りんご 3  B商店 みかん 2  B商店 みかん 2 以上、よろしくお願いします。

  • access 簡単な関数

    access2007で売上管理を作ろうと始めたのですが、クエリで金額:[単価]*[数量]と入れると 指定されたフィールド’○○○’がSQLステートメントのFROM句にある複数のテーブルを参照しました とエラーになってしまいます 在庫のテーブルの[数量]の名前を変えて解決はしたのですが、 テキストを買ってきてそれをその通りにしたのになぜできないのか ヘルプを見てもよくわからないので、気が向いたらどなたか回答お願いします

  • Access DB 商品名の扱いについて

    (テーブル名):(フィールド名) 商品テーブル:商品名。 単価数量テーブル:商品単価、数量、仕入番号、商品名。 仕入テーブル:仕入番号、仕入日、注文日、手数料、輸送費など。 売上テーブル:売上、販売日付、仕入番号、商品名。 リレーションシップ:一対多 商品テーブル商品名-単価数量テーブル商品名 商品テーブル商品名-売上テーブル商品名 仕入テーブル仕入番号-売上テーブル仕入番号 仕入テーブル仕入番号-単価数量テーブル仕入番号 このように作成しました。 ここで問題なのが、商品名の入力です。 仕入テーブルをメイン、単価数量テーブルをサブフォームにしてフォームを作成しました。 さて、商品名を単価数量テーブル商品名フィールドのサブフォームから入力・・・と思ったら、商品テーブル商品名フィールドに名前がないためエラーが出ます。(参照整合性をしているため) サブフォームの入力フィールドを商品テーブル商品名に変更すれば入力できます。 しかし、重複した商品名を入力できません(重複しないに設定しているため) 何故このようなことをするか?ですが、同じ商品でも購入日が違えば単価が違う場合があります。 ですので単価数量テーブルでは同じ商品名を使用する必要があります。 しかし、商品テーブルでは同じ商品名は必要ありません。 もちろん先に商品テーブルに商品名を入力すれば問題ありませんが、入力効率から言って問題あります。 さてここで質問なのですが、一対多の多から商品名を入力して一側に反映できないでしょうか? 一側にすでに同じ商品名がある場合は反映してはいけません。 ちないにVBAやSQLはコピペぐらいはできますが、書けませんのでご了承を。

  • クエリでの抽出の仕方を教えて下さい。

    クエリでの抽出の仕方を教えて下さい。 Access2000です。 下記のような入出庫テーブルがあるのですが、 日付 ・・・・・・・日付/時刻型 取引先No.・・・・テキスト型 取引先名・・・・テキスト型 区分・・・・・・・・テキスト型 商品コード・・・・テキスト型 メーカー名・・・・テキスト型 商品名・・・・・・ テキスト型 単価・・・・・・・・数値型 入庫数量・・・・・数値型 出庫数量・・・・・数値型 備考・・・・・・・・・テキスト型 id・・・・・・・・・・・オートナンバー ここに下記のようなデータがいくつもあります。 日付 ・・・・・・・2009/8/1 取引先No.・・・・1234 取引先名・・・・ABC会社 区分・・・・・・・・出庫 商品コード・・・・01 メーカー名・・・・AAA 商品名・・・・・・ ひも 単価・・・・・・・・100 入庫数量・・・・・0 出庫数量・・・・・50 備考・・・・・・・・・特になし id・・・・・・・・・・・1 これの金額(単価*出庫数量)の合計を求めるには どうしたらいいですか? 例えば、2007/1/1~2008/12/31までの 取引先No.1234のABC会社のひもの金額の合計を知りたいんですが、、、 (例) --日付---取引先No.-取引先名----区分----商品コード--商品名---単価---入庫数量--出庫数量---備考--id 2007/1/1     1234    AAA会社   出庫    01      ひも    100      0     50     なし  1     2007/2/8       1234    AAA会社   出庫    01      ひも    100      0     100    なし  1     2007/4/8        1234    AAA会社   出庫    01      ひも    100      0     250    なし  1     2007/8/9        1234    AAA会社   出庫    02      革     200      0     5      なし  1 2007/11/25        9876    ZXY会社   出庫    01      ひも    150      0     25     なし  1  上記の例でしたら、100*50+100*100+100*250=40,000とでるような クエリを作成したいのですが…できますでしょうか?? 宜しくお願いします。

  • Access クエリで新規テーブルを作成

    お世話になります。 クエリで新規テーブルを作成することは可能でしょうか。 テーブル作成クエリだと、既存のテーブルで抽出した内容で新規に作成する ことになるかと思います。 今回はまっさらな新規のテーブルを作成したいところです。 例えば、フィールド名とデータ型が  ID オートナンバー  受注日 日付型  商品   テキスト型 の場合だと、どのようになりますでしょうか。 ご教授の程、宜しくお願い致します。

  • Accessのフォームでの合計欄を二つにわけたい

    テーブル1;売上明細T フィールド名;売上明細番号、商品コード、数量、摘要 テーブル2;商品T フィールド名;商品コード、商品名、単価 クエリで売上明細と商品Tをつなぎ、下記のように表示します。 商品コード 商品名 摘要  数量  単価 明細計                  (数量*販売単価) 001    物件1  作業代  1  500 500 002    物件2  作業代  2  400 800 051    物件51  作業代  1  500 500 051    物件51  交通費  1  350 350  上記クエリを元にフォームを作成(帳票形式)して、 テキストボックスで課税対象計(作業代計)と、非課税対象計(交通費計) のボックスをもちたいのですが可能でしょうか? 最終的には、売上伝票フォームに売上明細フォームをサブフォームで 取り込み、売上伝票上で合計金額を表示させたいと思っています。 よろしくお願いします。

専門家に質問してみよう