Microsoft Access で実行中の合計クエリを作成する方法

高度な機能: 高度なコーディング、相互運用性、マルチユーザー スキルが必要です。

この記事は、Microsoft Access データベース (.mdb) ファイルまたは Microsoft Access データベース (.accdb) ファイルに適用されます。

概要

この記事では、実行中の合計クエリを作成するために使用できる 2 つのメソッドを示します。 実行中の合計クエリは、各レコードの合計がそのレコードと以前のレコードの合計であるクエリです。 この種類のクエリは、レコードのグループ (または一定期間) にわたる累積合計をグラフまたはレポートに表示する場合に役立ちます。

メモ この記事で使用される手法のデモは、サンプル ファイル Qrysmp00.exe で確認できます。

詳細情報

方法 1

最初のメソッドでは、クエリで DSum 関数と条件を使用して、時間の経過に伴う実行合計を作成します。 DSum 関数は、現在のレコードと以前のレコードを合計します。 クエリが次のレコードに移動すると、DSum 関数が再度実行され、累積合計が更新されます。

次のサンプル クエリでは、サンプル データベース Northwind の Orders テーブルを使用して、1997 年の毎月の輸送コストの実行合計を作成します。 パフォーマンス上の理由から、サンプル データは 1 年に制限されています。 DSum 関数はクエリ内のすべてのレコードに対して 1 回実行されるため、クエリの処理が完了するまでに数秒 (コンピューターの速度によっては) かかる場合があります。 このクエリを作成して実行するには、次の手順に従います。

  1. サンプル データベース Northwind を開きます。

  2. 新しい選択クエリを作成し、 Orders テーブルを 追加します。

  3. [ 表示 ] メニューの [ 合計] をクリックします。

    メモAccess 2007 で、[デザイン] タブの [表示/非表示] グループで [合計] をクリックします。

  4. クエリ デザイン グリッドの最初の列で、[フィールド] ボックスに次の式を入力し、[合計]、[並べ替え]、および [表示] ボックスで次の選択を行います。

    Field: AYear: DatePart("yyyy",[OrderDate])
    Total: Group By
    Sort: Ascending
    Show: Yes
    

    [フィールド] ボックスの式は、OrderDate フィールドの年部分を表示および並べ替えます。

  5. クエリ デザイン グリッドの 2 番目の列で、[フィールド] ボックスに次の式を入力し、[合計]、[並べ替え]、および [表示] ボックスで次の選択を行います。

    Field: AMonth: DatePart("m",[OrderDate])
    Total: Group By
    Sort: Ascending
    Show: Yes
    

    [フィールド] ボックスの式は、Order Date フィールドの月部分を並べ替え、1 ~ 12 の整数値として表示します。

  6. クエリ デザイン グリッドの 3 番目の列で、[フィールド] ボックスに次の式を入力し、[合計] ボックスと [表示] ボックスで次の選択を行います。

    メモ 次の例では、行の末尾にあるアンダースコア (_) が行継続文字として使用されています。 この例を再作成するときに、行の末尾からアンダースコアを削除します。

    Field: RunTot: DSum("Freight","Orders","DatePart('m', _
    [OrderDate])<=" & [AMonth] & " And DatePart('yyyy', _
    [OrderDate])<=" & [AYear] & "")
    Total: Expression
    Show: Yes
    

    [フィールド] ボックスの式では、DSum() 関数を使用して、AMonth フィールドと AYear フィールドの両方の値が、クエリが処理している現在のレコード以下である場合に、Freight フィールドを合計します。

  7. クエリ デザイン グリッドの 4 番目の列で、[フィールド] ボックスに次の式を入力し、[合計]、[並べ替え]、および [表示] ボックスで次の選択を行います。

    Field: FDate: Format([OrderDate],"mmm")
    Total: Group By
    Sort: Ascending
    Show: Yes
    

    [フィールド] ボックスの式は、1 月、2 月、3 月などのテキスト形式で毎月表示されます。

  8. クエリ デザイン グリッドの 5 番目の列で、[フィールド] ボックスに次の式を入力し、[合計]、[抽出条件]、および [表示] ボックスで次の選択を行います。

    Field: DatePart("yyyy",[OrderDate])
    Total: Where
    Criteria: 1997
    Show: No
    

    [フィールド] ボックスの式は、クエリのレコードセットをフィルター処理して、1997 年からのデータのみを含めます。

  9. クエリを実行します。 [RunTot] フィールドには、実行中の合計を含む次のレコードが表示されることに注意してください。

    AYear AMonth RunTot FDate
    --------------------------------------
    1997 1 2238.98 Jan
    1997 2 3840.43 Feb
    1997 3 5729.24 Mar
    1997 4 8668.34 Apr
    1997 5 12129.74 May
    1997 6 13982.39 Jun
    1997 7 17729.29 Jul
    1997 8 22204.73 Aug
    1997 9 26565.26 Sep
    1997 10 32031.38 Oct
    1997 11 36192.09 Nov
    1997 12 42748.64 Dec
    

方法 2

2 番目のメソッドでは、DSum() 関数を含む合計クエリを使用して、グループに対する実行合計を作成します。

次のサンプル クエリでは、Orders テーブルを使用して従業員ごとの輸送コストを合計し、運送料の実行中の合計を計算します。 クエリを作成して実行するには、次の手順に従います。

  1. サンプル データベース Northwind.mdbを開きます。

  2. 新しい選択クエリを作成し、Orders テーブルを追加します。

  3. [Viewmenu] で、[合計] をクリックします。

    メモAccess 2007 で、[デザイン] タブの [表示/非表示] グループで [合計] をクリックします。

  4. クエリ デザイン グリッドの最初の列で、[フィールド] ボックスに次のフィールドを追加し、[合計] ボックスと [表示] ボックスで次の選択を行います。

    Field: EmpAlias: EmployeeID
    Total: Group By
    Show: Yes
    

    このフィールドは、EmployeeID によってデータをグループ化します。

  5. クエリ デザイン グリッドの 2 番目の列で、[フィールド] ボックスに次のフィールドを追加し、[合計] ボックスと [表示] ボックスで次の選択を行います。

    Field: Freight
    Total: Sum
    Show: Yes
    

    このフィールドは、フレート データを合計します。

  6. クエリ デザイン グリッドの 3 番目の列で、[フィールド] ボックスに次の式を入力し、[合計] ボックスと [表示] ボックスで次の選択を行います。

    メモ 次の例では、行の末尾にあるアンダースコア (_) が行継続文字として使用されています。 この例を再作成するときに、行の末尾からアンダースコアを削除します。

    Field: RunTot: Format(DSum("Freight","Orders","[EmployeeID]<=" _& [EmpAlias] & ""),"$0,000.00")
    Total: Expression
    Show: Yes
    

    [フィールド] ボックスの式では、DSum() 関数を使用して、EmployeeID が現在の EmpAlias 以下の場合に Freight フィールドを合計し、フィールドの書式をドル単位で設定します。

  7. クエリを実行します。 [RunTot] フィールドには、実行中の合計を含む次のレコードが表示されることに注意してください。

    Employee SumOfFreight RunTot
    -------------------------------------------------
    Davolio, Nancy $8,836.64 $8,836.64
    Fuller, Andrew $8,696.41 $17,533.05
    Leverling,Janet $10,884.74 $28,417.79
    Peacock, Margaret $11,346.14 $39,763.93
    Buchanan, Steven $3,918.71 $43,682.64
    Suyama, Michael $3,780.47 $47,463.11
    King, Robert $6,665.44 $54,128.55
    Callahan, Laura $7,487.88 $61,616.43
    Dodsworth, Anne $3,326.26 $64,942.69