Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


4598 / 9994 ←次へ | 前へ→

【8640】残高の更新(モジュールがわかりません)
質問  momo  - 06/9/28(木) 9:18 -

引用なし
パスワード
   モジュールがわからないので教えてください。

締日(年、月、日)を入れると開始日〜終了日が表示されるフォームがあります。
残高更新のコマンドボタンをクリックすると表示された範囲に当てはまる顧客の請求残高が更新されるようにしたいと思います。
本を参考に下記のモジュールを作成しましたが、何件かあるうちの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
608 hits

【8640】残高の更新(モジュールがわかりません) momo 06/9/28(木) 9:18 質問
【8642】Re:残高の更新(モジュールがわかりません) 立ち寄り 06/9/28(木) 10:41 回答
【8645】Re:残高の更新(モジュールがわかりません... momo 06/9/28(木) 12:42 お礼

4598 / 9994 ←次へ | 前へ→
ページ:  ┃  記事番号:
1078222
(SS)C-BOARD v3.8 is Free