HOME > 即効テクニック > AccessVBA > データ操作 > 一定の期間のデータを集計する

即効テクニック

データ操作

一定の期間のデータを集計する

(Access 97)
●概要●
請求書など、一定の期間を設定してデータを集計する必要がある場面はよくあります。今回は、請求書を発行するという仮定のもとに、一定期間のデータの集計方法を説明します。

●準備●
  1. 以下の構成で[請求書]テーブルを作成します。 ---------------------------------------- フィールド名 データ型 請求番号 長整数型(主キー) 顧客ID 整数型 請求日 日付/時刻型 請求金額 通貨型 ----------------------------------------
  2. 非連結フォーム[請求期間設定]を作成する。
  3. 上記フォームにテキストボックス[開始日] [終了日]とコマンドボタン [コマンド1]を配置する。 テキストボックスの書式は「日付(S)」にしておく。
  4. [コマンド1]のOnClick/クリック時イベントに、以下のプロシージャ を記述する。
●サンプルコード● Private Sub コマンド1_Click() '初期設定 Dim Qdf As New DAO.QueryDef Dim strSQL As String '既にクエリが存在している場合は、そのクエリを削除 For Each Qdf In CurrentDb.QueryDefs If Qdf.Name = "q請求合計" Then CurrentDb.QueryDefs.Delete Qdf.Name CurrentDb.QueryDefs.Refresh End If Next '集計クエリの作成 strSQL = strSQL & "Select Count(*) As 請求数, Sum(請求金額) As 請求合計 " strSQL = strSQL & "From 請求書テーブル " strSQL = strSQL & "Where 請求日 Between #" & Me.開始日 & "#" strSQL = strSQL & " And #" & Me.終了日 & "#" Set Qdf = CurrentDb.CreateQueryDef("q請求合計", strSQL) CurrentDb.QueryDefs.Refresh '作成したクエリをオープン DoCmd.OpenQuery Qdf.Name, acViewNormal, acReadOnly '終了処理 Set Qdf = Nothing End Sub ●動作確認● [請求書]テーブルに適当なデータを入力し、[請求期間設定]をフォームビューに変更して、任意の開始日・終了日を入力する。そこで[コマンド1]をクリックすると、入力した開始日と終了日を含んだ期間で請求金額が集計されていることを確認して下さい。 ●詳細● 条件を設定した集計を行う場合、集計クエリにWhere条件を付加することで実現します。 サンプルではフォームに入力された開始日・終了日を取得して、その値を条件としたクエリを新規に作成しています。他に、パラメータを使用する方法もよく使われます。 ●備考● Access2000の場合、デフォルトではDAOに参照設定されていません。 Visual Basic Editor(VBE)を開き、メニューの[ツール]−[参照設定]から、Microsoft DAO 3.6 Object Libraryにチェックを入れて下さい。 その際にMicrosoft ActiveX Data Object 2.1 Libraryよりも上に、DAOのチェックを持ってきて下さい。