Access2003のクエリで生産数量の累計を算出する方法は?

このQ&Aのポイント
  • Access2003のクエリで生産数量の累計を算出する方法について教えてください。
  • 累計の算出式を入力しても、全ての商品の合計が年月日ごとに入力されてしまいます。
  • どのようにすれば、年月日ごとの各商品の生産数量の累計を算出することができるのでしょうか?
回答を見る
  • ベストアンサー

Access2003のクエリでフィールドに累計の式を入力したのですが、うまくいきません。

以下のような「生産出荷クエリ」があります。 ※商品コードは「オートナンバー型」です 年月日 商品コード 生産数量 2008/01/01 商品1  1 2008/01/01 商品2  0 2008/01/01 商品3  2 2008/01/02 商品1  0 2008/01/02 商品2  1 2008/01/02 商品3  0 ・・・・ 2008/01/15 商品1  2 2008/01/15 商品2  3 2008/01/15 商品3  1 「作成したいクエリ」は以下のとおりです。 累計はその月の1日からの合計です 年月日 商品コード 生産数量 生産数量の累計 2008/01/01 商品1  1  1 2008/01/01 商品2  0  0 2008/01/01 商品3  2  2 2008/01/02 商品1  0  1(1+0)商品1の2008/01/01から2008/01/02までの合計 2008/01/02 商品2  1  1(0+1) 2008/01/02 商品3  0  2(2+0) ・・・・ 2008/01/15 商品1  2  9(1+0+・・・+2)商品1の2008/01/01から2008/01/15までの合計 2008/01/15 商品2  3  8(0+1+・・・+3) 2008/01/15 商品3  1  10(2+0+・・・+1) ※生産数用の累計の(1+0+・・・+2)は表示しなくて良いです。 「生産数量の累計」フィールドに 生産数量の累計: DSum("[生産数量]","生産出荷クエリ","[商品コード]=[生産出荷クエリ].[商品コード] And [年月日] Between #" & CDate(Format(生産出荷クエリ!年月日,"yyyy/mm") & "/01") & "# and #" & Format(生産出荷クエリ!年月日,"yyyy/mm/dd") & "#") と入力すると 年月日 商品コード 生産数量 生産数量の累計 2008/01/01 商品1  1  3(2008/01/01の全ての商品の合計) 2008/01/01 商品2  0  3( 〃 ) 2008/01/01 商品3  2  3( 〃 ) 2008/01/02 商品1  0  1(2008/01/02の全ての商品の合計) 2008/01/02 商品2  1  1( 〃 ) 2008/01/02 商品3  0  1( 〃 ) ・・・・ 2008/01/15 商品1  2  6(2008/01/15の全ての商品の合計) 2008/01/15 商品2  3  6( 〃 ) 2008/01/15 商品3  1  6( 〃 ) となってしまい、年月日ごとの全ての商品の合計が、年月日ごとに生産数量の累計に入力されてしまいます。 上記の「作成したいクエリ」のようにするにはどうしたら良いのでしょうか? よろしくお願いします。

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

  • ベストアンサー
  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.2

1.商品コードを&&で囲んでいない 誤 "[商品コード]=[生産出荷クエリ].[商品コード] And .... 正 "[商品コード]=" & [生産出荷クエリ].[商品コード] & "And .... 2.日付の判定方法の間違い "Between " & CDate(Format(生産出荷クエリ!年月日,"yyyy/mm") & "/01") & " and " & 生産出荷クエリ!年月日 または "Between #" & Format(生産出荷クエリ!年月日,"yyyy/mm") & "/01# and #" & Format(生産出荷クエリ!年月日,"yyyy/mm/dd") & "#"

harukaruka
質問者

お礼

1.商品コードを&&で囲んでいない これが原因でした。 ありがとうございました。

その他の回答 (1)

noname#79209
noname#79209
回答No.1

試してはいませんが、 BetweenのAnd部分には、「生産出荷クエリ」でなく「現在のクエリ(自分自身)」の「年月日」フィールドのデータを使わないと意味がないのでは? つまり、「どこまで」の指定はDSum関数が置かれているレコードのデータを使わないと、「その日まで」という指定にはならないと思います。

関連するQ&A

  • access2003初心者です。30程の商品の在庫管理をしたいと考えています。

    access2003初心者です。 30程の商品の在庫管理をしたいと考えています。 以下のテーブルがあります。 <商品テーブル>商品コード、商品名 <商品生産テーブル>生産日、商品名、生産数量 <商品出荷テーブル>出荷日、商品名、出荷数量 <繰越テーブル>繰越日、商品名、繰越数量 *作成したいクエリ*  まず、日付を入力するパラメータ入力ダイアログボックスを表示  その日付のデータを抽出して計算をさせたい  表示させたいフィールドは以下のとおりです。 <商品名>:すべての商品を表示(繰越・生産・出荷数量がすべて0でも表示) <繰越数量>:前月末の数量を表示(月末が日曜日の場合はその前日)        パラメータで入力した日付が2008/04/01でも2008/04/05でも繰越数量は前月末の数量を表示 <生産数量>:パラメータで入力した日付の生産数量 <生産数量累計>:パラメータで入力した日付の月の1日から入力した日付までの生産数量の合計 <出荷数量>:パラメータで入力した日付の出荷数量 <出荷数量累計>:パラメータで入力した日付の月の1日から入力した日付までの出荷数量の合計 <残高>:<繰越数量>+<生産数量累計>-<出荷数量累計> これを元にレポートを作成したいと考えています。 よろしくお願いします。

  • ACCESS フォームで入力した日付をクエリで読み

    ACCESS フォームで入力した日付をクエリで読み替えたい ACCESS フォームで入力した日付をクエリで使用しているテーブルの書式に変換したい フォーム テキスト名:日付にyyyymmdd で入力します クエリ テキスト名:日付はパラメータとして使用しています クエリ内で使用しているテーブルの日付書式は 日付:yyyy/mm/ddです パラメータは 「日付始」と「日付終」の2箇所のテキストに入力されたデータを使用しています。以下がパラメータです。 Between [Forms]![フォーム]![日付始] and [Forms]![フォーム]![日付終] フォームのテキストボックスにyyyymmddと入力してもクエリでエラーが出ることない パラメータを日付に設定したいのですがどうしたらよいでしょうか? ちなみに、以下の式を入れたらエラーです。 Between CDate(Format([Forms]![フォーム]![日付始],"yyyy/mm/dd")) and CDate(Format([Forms]![フォーム]![日付始],"yyyy/mm/dd")) と入力しましたところ、、、、「式が複雑すぎるか、、、」のエラーメッセージが出てしまいました。 どなたか助けてください。お願い致します。

  • アクセス・クエリでのテキスト累計

    お世話になります。アクセス初心者です。 QNo.3023548 「アクセス 同じフィールド(テキスト型)のレコードを連結させたい」 の方と同じ質問内容で申し訳ありません。 私のレベルでは、うまく理解することが出来ませんでした。 あらためまして マイクロソフト アクセス 2000を使用しております。 【テーブル1】 ID 商品コード 金額  色 1______100__________\10______赤 2______100__________\10______青 3______200__________\10______黄 4______200__________\10______緑 5______200__________\10______黒 【クエリ1】 ID 商品コード 金額  色  累計金額  色の累計 1______100__________\10______赤__________\10____________赤 2______100__________\10______青__________\20____________赤-青 3______200__________\10______黄__________\10____________黄 4______200__________\10______緑__________\20____________黄-緑 5______200__________\10______黒__________\30____________黄-緑-黒 累計金額は式ビルダで 累計金額: (Select SUM(金額) From テーブル1 As 累計 Where テーブル1.ID >= 累計.ID And テーブル1.商品コード = 累計.商品コード) なんとか作る事が出来ました。 色の累計を、この式を使って試みましたが うまくいきません。 できれば、式ビルダ形式で回答を頂くとありがたいです。 よろしくお願い致します。

  • Access クエリ 抽出・演算

    Access クエリについてご質問させていただきます。 テーブルのデータを特定の条件に一致するレコードだけ抽出し、演算を実施したいです。 (1):CSVデータをテーブルに取り込みます。 テーブルは左から『取引No』『部門コード』『部門名』『発注入力日』『担当者名』『発注日』『伝票No』『伝票行No』『商品コード』『商品名』『入数』『発注数(入力数)』『発注数量※1』『発注金額※2』『出荷日』『出荷数量※3』『出荷金額※4』となっております。 ※1:発注数量は入数×発注数が計算済みです。 ※2:発注金額は発注数量×単価で小数点以下切り捨てで計算済みです。 ※3:出荷数量は入数×出荷数が計算済みです。 ※4:出荷金額は出荷数量×単価で小数点以下切り捨てで計算済みです。 (2):クエリを使用して、商品名が『単3乾電池』の出荷数量を10で割り、10で割り切れるレコードを求めたいです。 (3):(2)の演算結果(10で割った後の整数)を合算して合計値をクエリの演算結果として表示したいです。 ※(2)の抽出条件でのクエリをすでに作成済みで、合計したクエリを作成したいです。 どのようにすればよろしいでしょうか?

  • Access2007 クエリ 累計求め方

    以下の並びの選択クエリがあります。 [営業担当] [担当企業] [受注フラグ] [月] [累計] 月は昇順で増えていきます。 受注フラグは全て「1」と表示されています。 受注フラグを合計して、月次の累計推移を出したいと考えています。 【累計】のフィールドにDsum(式)を活用する所までは分かりましたが、 (式)内にどの様な式を指定すればよいか分かりません。 どなたかご教授頂ければ幸いです。

  • アクセス クエリ・集計・計算方法について

    アクセスの集計機能を使用して、品名毎の数量の合計と金額の合計を算出しようとしていますが、 思うようにできません。どなたか教えてください。 クエリのフィールドを左から・・・ (1)年月: Format([日付],"yyyy/mm")(集計:グループ化) (2)品名(集計:グループ化) (3)品名のカウント(集計機能:カウント) (4)単価(集計:グループ化) (5)金額: [単価]*[品名のカウント](集計:グループ化) このような形でクエリを実行していますが、すべての注文が1つだけなら問題ないのですが、実際には品名には数量が掛けられている場合もあり、現在設定しているクエリ設定では正しい数量の合計と金額の合計を出すことができません。どうか集計方法をご教授いただけないでしょうか。よろしくお願いします。 ■現在のテーブルの設計とリレーションを明記します。 【A】顧客テーブル (1)顧客ID (2)発注コード (3)氏名 【B】商品テーブル (1)商品ID (2)品名 (3)単価 【C】注文テーブル (1)注文ID (2)日付 (3)顧客ID 【D】注文明細テーブル (1)注文明細ID (2)注文ID (3)商品ID (4)数量 リレーション 【A】(1)-【C】(3) 【B】(1)-【D】(3) 【C】(1)-【D】(2)

  • 【ACCESS】クエリによる正規表現の基本的書き方

    いつもお世話になっております。 ACCESSのクエリで、下記8パターンにマッチする文字列を yyyyMMddの形で抽出する方法が判りません。 例でも構わないので、ご教示いただけないでしょうか。  (1)yyyyMMdd       (数字は半角)  (2)yyyy年M月dd日   (数字は半角)  (3)yyyy年MM月dd日 (数字は全角)  (4)yyyy年M月dd日   (数字は全角)  (5)yyyy年MM月dd日  (数字は半角)  (6)yyyy年M月dd (数字は半角)  (7)yyyy/MM/dd (数字は全角)  (8)yyyy/MM/dd      (数字は半角)   ※12月32日等の日付不正は対象外 数字の全・半角は区別しなくても抽出可能と考えています。 ただ、そもそも、正規表現の基本的な書き方が判らず。。 グループ化させるための括弧「()」や、論理和の「|」を使うと 抽出できませんでした。 accessでは利用不可なのでしょうか。。 一応、私の作成したクエリを掲載致します。 テーブルaからdate列を抽出します。上記8パターンにマッチする場合は、yyyyMMdd形式で、いずれにもマッチしなければ空白を返させたいと思います。 SELECT IIf (a.date Like '[1-9][0-9][0-9][0-9](0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])', a.date, IIf (a.date Like '[1-9][0-9][0-9][0-9]年[1-9]月(0[1-9]|[12][0-9]|3[01])日', Format(CDate(Format(Replace(Replace(Replace(a.date, '年', ''), '月', ''), '日', ''), "@@@@/@@/@@")), "yyyymmdd"), IIf (a.date Like '[1-9][0-9][0-9][0-9]年(0[1-9]|1[012])月(0[1-9]|[12][0-9]|3[01])日', Format(CDate(Format(Replace(Replace(Replace(a.date, '年', ''), '月', ''), '日', ''), "@@@@/@@/@@")), "yyyymmdd"), IIf (a.date Like '[1-9][0-9][0-9][0-9]年[1-9]月(0[1-9]|[12][0-9]|3[01])日', Format(CDate(Format(Replace(Replace(Replace(a.date, '年', ''), '月', ''), '日', ''), "@@@@/@@/@@")), "yyyymmdd"), IIf (a.date Like '[1-9][0-9][0-9][0-9]年(0[1-9]|1[012])月(0[1-9]|[12][0-9]|3[01])日', Format(CDate(Format(Replace(Replace(Replace(a.date, '年', ''), '月', ''), '日', ''), "@@@@/@@/@@")), "yyyymmdd"), IIf (a.date Like '[1-9][0-9][0-9][0-9]年[1-9]月(0[1-9]|[12][0-9]|3[01])', Format(CDate(Format(Replace(Replace(a.date, '年', ''), '月', ''), "@@@@/@@/@@")), "yyyymmdd"), IIf (a.date Like '[1-9][0-9][0-9][0-9]/(0[1-9]|1[012])/(0[1-9]|[12][0-9]|3[01])', Format(CDate(Format(Replace(Replace(a.date, '/', ''), '/', ''), "@@@@/@@/@@")), "yyyymmdd"), IIf (a.date Like '[1-9][0-9][0-9][0-9]/(0[1-9]|1[012])/(0[1-9]|[12][0-9]|3[01])', Format(CDate(Format(Replace(Replace(a.date, '/', ''), '/', ''), "@@@@/@@/@@")), "yyyymmdd"), '' ) ) ) ) ) ) ) ) FROM a 以上、何卒よろしくお願いいたします。

  • Access クエリでの 累計の仕方

    テーブル名「元帳」のフィールド名「借方金額」の累計を、「科目コード」と「月度」が同じもので累計する処理を行っています。以下の書き方で、全ての累計は出力出来ました。 (1) DSum("借方金額","元帳","科目コード & 月度 <= " & [科目コード] & [月度]) そして、科目コードが変化する毎にそれぞれの累計を行いたいと思い、以下の式を作成しました。 (2) DSum("借方金額","元帳","科目コード Like '*" & [科目コード] & "*'") そして、これら2つの式の要素を合わせ持った式を作成しようとAndで繋いでみたのですが、 (3) DSum("借方金額","元帳","科目コード Like '*" & [科目コード] & "*'" And "科目コード & 月度 <= " & [科目コード] & [月度]) これでは数字が出ず、どうしても出来ません。 (1)と(2)の条件を合わせ持った式の作り方をご存知の方がいらっしゃいましたら、ご教示をお願い致します。

  • Accessクエリで100年単位で抽出したい

    いつも、お世話になります。 Win7, Access2013 パラメータクエリで行き詰まっています。ご存知の方がいらっしゃいましたら、ご教示お願いします。 年月日のコントロールがあり、yyyy/mm/dd の書式から 1900年代を抽出したいのです。 月だけを抽出したい場合、webの事例で フィールド:Format([年月日],"mm") にして、パラメータクエリで 05 と入力すると 5月のリストが抽出できるようになりました。 パラメータクエリで、この年月日に「1900」又は 「19」と入力すると 1900年代のリストが抽出できるようしたいのです。 ご存知の方がいらっしゃいましたら、ぜひお願いいたします。

  • Accessでのクエリー作成

     テーブル 納品先コード・納品先名・商品名・数量・仕入れ先コード・仕入れ先名  となっているのを、 クエリー上で 納品先コード・納品先名・(仕入れ先別納品)数量合計・仕入れ先コード・仕入れ先名  としたいのですが、どうしたらいいでしょうか?

専門家に質問してみよう