Access VBA質問箱 IV

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

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


4565 / 9994 ←次へ | 前へ→

【8674】Re:コマンドボタンのクリック時
発言  モジュール??  - 06/10/13(金) 14:22 -

引用なし
パスワード
   ▼まさ7251 さん:
返信、ありがとうございます。
何をどう書いていいかわからず、中途半端な質問になってしまいました。

次のような状態です。

テーブル
 顧客マスター    顧客No、顧客名、締日、請求金額
 買掛残高      顧客No、締日、残高
 売上入金マスター  日付、顧客No、売上金額、入金金額

クエリ
 残高更新該当顧客1

SELECT 売上入金マスター.顧客No, Min(顧客マスター.請求金額) AS 請求金額の合計, Sum(売上入金マスター.売上金額) AS 売上金額の合計, Sum(売上入金マスター.入金金額) AS 入金金額の合計, [請求金額の合計]+[売上金額の合計]-[入金金額の合計] AS 当月残高
FROM 売上入金マスター INNER JOIN 顧客マスター ON 売上入金マスター.顧客No = 顧客マスター.顧客No
WHERE (((売上入金マスター.日付)>=[開始日] And (売上入金マスター.日付)<=[終了日]))
GROUP BY 売上入金マスター.顧客No, 顧客マスター.締め日
HAVING (((顧客マスター.締め日)=[締日]));


フォーム
 年、月、日(締日)
 開始日、終了日
 締日該当期間のコマンドボタン
 該当顧客のコマンドボタン


フォームの締日を指定して(年、月、日)「締日該当期間」をクリックすると、指定範囲が開始日と終了日に表示されるようになっています。指定範囲が表示された後「該当顧客」のコマンドボタンでクエリ「残高更新該当顧客1」の結果をテーブル「買掛残高」に保存し、それの残高をテーブル「顧客マスター:請求残高」へ更新するということをしたいと思います。できればフォームのコマンドボタン1つで「顧客マスター:請求金額」を更新させたいのですが、難しいため2つに分ければできるのではないかと思い2つに分けたのですが、やはりそれも難しいようで・・・

コードは次の通りです。
Option Compare Database
Option Explicit
Option Base 1
Dim dbs As Database
Dim qdf, qdf2 As QueryDef
Dim rst1, rst2, rst3 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_締日該当期間
 
 
  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


Err_締日該当期間:
  If Err = 3021 Then
   Beep
   MsgBox "この締め日の顧客はありますが、作業はしていません。", 16
   Exit Sub
 
  End If

End Sub
Private Sub 該当顧客_click()
On Error GoTo Err_該当顧客_Click

 Dim recMax As Long
 Dim i As Integer
 
  Set qdf = dbs.QueryDefs("請求書 残高更新該当顧客1")
  qdf.Parameters("開始日") = Me![開始日]
  qdf.Parameters("終了日") = Me![終了日]
  qdf.Parameters("締日") = Me![日]
  Set rst1 = qdf.OpenRecordset()
  rst1.MoveLast
  recMax = rst1.RecordCount
  rst1.MoveFirst
 
 '「買掛残高」テーブルをオープンする
 Set rst2 = dbs.OpenRecordset("買掛残高")
 
 '買掛残高の数だけ「買掛残高」テーブルにレコードを保存する
 For i = 1 To recMax
   With rst2
   .AddNew
   ![顧客No] = rst1.[顧客No]
   ![締日] = rst1.[終了日]
   ![残高] = rst1.[当月残高]
   .Update
  End With
  
  Call 当月残高保存(rst1.[顧客No], rst1.[当月残高])
  
  rst1.MoveNext
  
 Next i
 rst1.Close
 rst2.Close
 qdf.Close
  

Exit_該当顧客_Click:
  Exit Sub

Err_該当顧客_Click:
  MsgBox Err.Description
  Resume Exit_該当顧客_Click
  
End Sub

Private Sub 当月残高保存(顧客No, 当月残高)

  '「請求書 顧客抽出」クエリーをオープンする
  Set qdf2 = dbs.QueryDefs("請求書 顧客抽出")
  qdf2.Parameters("検査値1") = 顧客No
  Set rst3 = qdf.OpenRecordset()
 
  rst3.Edit
  rst3.[請求金額] = 残高
  rst3.Update
  rst3.ciose
  qdf2.Close
 
End Sub

以上です。宜しくお願いします。

1,779 hits

【8672】コマンドボタンのクリック時 モジュール?? 06/10/13(金) 10:30 質問
【8673】Re:コマンドボタンのクリック時 まさ7251 06/10/13(金) 12:09 発言
【8674】Re:コマンドボタンのクリック時 モジュール?? 06/10/13(金) 14:22 発言
【8676】Re:コマンドボタンのクリック時 まさ7251 06/10/13(金) 16:22 発言
【8677】Re:コマンドボタンのクリック時 モジュール?? 06/10/13(金) 16:37 発言
【8678】Re:コマンドボタンのクリック時 まさ7251 06/10/13(金) 16:55 発言
【8679】Re:コマンドボタンのクリック時 モジュール?? 06/10/16(月) 10:50 発言
【8680】Re:コマンドボタンのクリック時 まさ7251 06/10/16(月) 11:09 発言
【8687】Re:コマンドボタンのクリック時 モジュール?? 06/10/16(月) 14:16 発言
【8688】Re:コマンドボタンのクリック時 まさ7251 06/10/16(月) 15:31 発言
【8689】Re:コマンドボタンのクリック時 モジュール?? 06/10/16(月) 16:26 発言
【8690】Re:コマンドボタンのクリック時 まさ7251 06/10/16(月) 16:44 発言
【8691】Re:コマンドボタンのクリック時 モジュール?? 06/10/16(月) 17:28 お礼

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