Accessで残高計算②~DSUM関数を使わない方法1

Pocket

前回DSUM関数は集計に時間がかかると解説しました。

これはAccessで販売管理データベースを作った場合、日付の他に得意先毎
に集計をかけると如実に出ます。得意先元帳を開くたびに、毎回膨大な数の
データのDSUMの処理をするのですから・・

で、そうしないために、残高フィールドをテーブル入れて、そこにその行の残高
を入れていけば、一行目から毎回集計しなくても、テーブルにその行の残高が
入力されているので、集計する必要もなく残高が表示するようにします。

いずれにせよ、テーブルに作った残高を表示させるだけなので、
新たにデータを追加したときは当然残高のデータを更新していかなければいけません。

その残高のデータの更新をADOを使って更新していきます。

サンプルファイルのフォームの残高計算をデザインビューで開きます。
2801041

ここの更新のコマンドボタンのイベントタブのクリック時に
次のコードが組まれています。
Private Sub コマンド15_Click()
Dim a As Integer
Dim b As Integer
Dim cnn As ADODB.Connection
Dim rs As ADODB.Recordset

Set cnn = CurrentProject.Connection
Set rs = New ADODB.Recordset

rs.Open “出納帳”, cnn, adOpenKeyset, adLockOptimistic

rs.MoveFirst
Do Until rs.EOF
a = DLookup(“前行残高”, “連番集計”, “ID=” & rs!ID & “”)

On Error Resume Next
rs!残高 = a + rs!借方金額 – rs!貸方金額
rs.Update
On Error GoTo 0

rs.MoveNext

Loop
rs.Close
Set rs = Nothing
cnn.Close
Set cnn = Nothing
Me.Refresh
End Sub

これを実行すると、テーブルの残高に集計した残高が入っていきます。
次回はコードで出てくる「連番集計」クエリを解説します。

==================================
今年は本気でサブスリーを達成すべく、トレーニングも今まで以上に
ハードにこなしています。今日は30キロ走をしましたが、途中で水ぶくれ
が痛みだしたので、26キロでストップ・・・
それでも1キロ4分20秒~4分30秒くらいで走っても、十分息は持つことが確認
できて良かったです。あとはスタミナ。これが問題です。

本日も最後までお読み頂きありがとうございます。