請求書など、一定の期間を設定してデータを集計する必要があるケースはよく
あります。今回は、請求書を発行するという仮定のもとに、一定期間のデータ
の集計方法をご紹介します。
● 準備 ●
(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の
チェックを持ってきて下さい。
|