|
モジュールがわからないので教えてください。
締日(年、月、日)を入れると開始日〜終了日が表示されるフォームがあります。
残高更新のコマンドボタンをクリックすると表示された範囲に当てはまる顧客の請求残高が更新されるようにしたいと思います。
本を参考に下記のモジュールを作成しましたが、何件かあるうちの1件だけしか残高の更新ができません。意味が理解できていないまま見よう見まねで作成しているのでどこが違っているのかわかりません。
ご伝授、宜しくお願いします。
Option Compare Database
Option Explicit
Option Base 1
Dim dbs As Database
Dim qdf As QueryDef
Dim rst As Recordset
Dim 顧客数 As Integer
Private Sub Form_Load()
Set dbs = CurrentDb
Me![年] = Year(Now())
Me![月] = Month(Now())
End Sub
Private Sub 残高更新_Click()
On Error GoTo Err_残高更新_Click
If IsNull(Me![日]) Then
Beep
MsgBox "締め日の設定をしてください。", 16
Exit Sub
End If
' 該当する締め日があるか顧客を調査する
顧客数 = レコード数()
If 顧客数 = 0 Then
Beep
MsgBox "この締め日の顧客はありません。", 16
Exit Sub
End If
Call 売上伝票検査
Exit_残高更新_Click:
Exit Sub
Err_残高更新_Click:
MsgBox ("オブジェクトが不正です。" & Err.Description)
Resume Exit_残高更新_Click
End Sub
Private Function レコード数()
On Error GoTo Err_レコード数
Set qdf = dbs.QueryDefs("請求書 締日検査")
qdf.Parameters("締日") = Me![日]
Set rst = qdf.OpenRecordset
rst.MoveLast
レコード数 = rst.RecordCount
rst.Close
Exit Function
Err_レコード数:
If Err = 3021 Then
レコード数 = 0
Else
MsgBox ("オブジェクトが不正です。" & Err.Description)
End If
End Function
Private Sub 売上伝票検査()
On Error GoTo Err_売上伝票検査
Dim 該当顧客(100, 3)
Dim 開始月日, 終了月日 As String
Dim 締日, 開始月, 開始年, 終了月, 終了年 As String
Dim i As Integer
Dim strData, strSumi As String
' [売上日]を[締め日]の期間で絞り込む
締日 = Me![日]
開始年 = Me![年]
開始月 = Me![月]
終了年 = Me![年]
終了月 = Me![月]
If 締日 = "月末" Then ' 締め日が月末
締日 = "1"
Select Case 開始月
Case "12" ' 12月の場合
' 終了年を1年プラスする
終了年 = CStr(Val(終了年) + 1)
終了月 = "1"
Case Else ' 12月以外の場合
' 終了月を1月プラスする
終了月 = CStr(Val(終了月) + 1)
End Select
Else ' 締め日が月末以外
' 締日を1プラスする
締日 = CStr(Val(締日) + 1)
Select Case 開始月
Case "1" ' 1月の場合
' 開始年を1年マイナスする
開始年 = CStr(Val(開始年) - 1)
開始月 = "12"
Case Else ' 1月以外の場合
' 開始月を1月マイナスする
開始月 = CStr(Val(開始月) - 1)
End Select
End If
開始月日 = 開始年 & "/" & 開始月 & "/" & 締日
終了月日 = 終了年 & "/" & 終了月 & "/" & 締日
Me![開始日] = DateValue(開始月日)
Me![終了日] = DateValue(終了月日) - 1
' 該当する顧客数を調べる
Set qdf = dbs.QueryDefs("請求書 該当顧客2")
qdf.Parameters("締日") = Me![日] ' パラメータ1の設定
qdf.Parameters("開始") = 開始月日 ' パラメータ2の設定
qdf.Parameters("終了") = 終了月日 ' パラメータ3の設定
Set rst = qdf.OpenRecordset() ' ソースをオープン
rst.MoveLast ' 最後のレコードに移動する
顧客数 = rst.RecordCount '該当する顧客数
Me![該当顧客数] = 顧客数
rst.MoveFirst
For i = 1 To 顧客数
Call 当月残高保存(rst.[顧客No], rst.[残高])
rst.MoveNext
Next i
rst.Close
Err_売上伝票検査:
If Err = 3021 Then
Beep
MsgBox "この締め日の顧客はありますが、作業はしていません。", 16
Exit Sub
End If
End Sub
Private Sub 当月残高保存(顧客C, 残高)
'[請求書 顧客抽出」クエリーをオープンする
Set qdf = dbs.QueryDefs("請求書 顧客抽出")
qdf.Parameters("検査値1") = 顧客C
Set rst = qdf.OpenRecordset()
rst.Edit
rst![請求金額] = 残高
rst.Update
rst.Close
qdf.Close
End Sub
|
|