回答編集履歴

1

2024/05/10 09:34 のコメントを受けてコードとコメントを追記しました。

2024/05/10 01:28

投稿

sk.exe
sk.exe

スコア1095

test CHANGED
@@ -61,6 +61,7 @@
61
61
 
62
62
  'トランザクション処理の開始
63
63
  ws.BeginTrans
64
+ '以降のコードにおいて何らかの実行時エラーが発生した場合はロールバック処理とエラー時処理を実行するようにする
64
65
  On Error GoTo RollBack_複写コマンド_Click
65
66
 
66
67
  With rsDestination
@@ -83,9 +84,9 @@
83
84
  lngNewEstimateId = ![見積番号]
84
85
  End With
85
86
 
86
-
87
87
  '従属テーブルのレコードの複写
88
88
 
89
+ 'テーブル[見積加工]にレコードを追加する SQL 文
89
90
  strSQL = "INSERT INTO [見積加工] ([見積番号], [工程コード], [工数], [分類名], [順番])" & _
90
91
  " SELECT " & lngNewEstimateId & " AS [新規見積番号], [工程コード], [工数], [分類名], [順番]" & _
91
92
  " FROM [見積加工]" & _
@@ -94,14 +95,26 @@
94
95
 
95
96
  Debug.Print strSQL
96
97
  db.Execute strSQL, dbFailOnError
97
-
98
+
98
- 'コミット
99
+ 'テーブル[見積部材]にレードを追加する SQL 文
100
+ strSQL = "INSERT INTO [見積部材] ([見積番号], [品名ID], [品群名], [数量])" & _
101
+ " SELECT " & lngNewEstimateId & " AS [新規見積番号], [品名ID], [品群名], [数量]" & _
102
+ " FROM [見積部材]" & _
103
+ " WHERE [見積番号] = " & lngSourceEstimateId & _
104
+ " ORDER BY [見積部材ID];"
105
+
106
+ Debug.Print strSQL
107
+ db.Execute strSQL, dbFailOnError
108
+
109
+ 'コミット(ws.BeginTrans メソッドの呼び出し後以降に行われた全てのデータの変更を反映させ、トランザクション処理を終了する)
99
110
  ws.CommitTrans
111
+ '以降のコードにおいて何らかの実行時エラーが発生した場合はエラー時処理を実行するようにする
100
112
  On Error GoTo Err_複写コマンド_Click
101
113
 
102
114
  Me.Requery
103
115
  DoCmd.SearchForRecord acDataForm, Me.Name, , "[見積番号]=" & lngNewEstimateId
104
116
 
117
+ '終了処理
105
118
  Exit_複写コマンド_Click:
106
119
  On Error Resume Next
107
120
 
@@ -113,9 +126,10 @@
113
126
  Exit Sub
114
127
 
115
128
  RollBack_複写コマンド_Click:
116
- 'ロールバック
129
+ 'ロールバック(変更された全てのデータを ws.BeginTrans メソッドの呼び出し前の状態に戻し、トランザクション処理を終了する)
117
130
  ws.Rollback
118
131
 
132
+ 'エラー時処理
119
133
  Err_複写コマンド_Click:
120
134
 
121
135
  strErrTitle = "実行時エラー (" & Me.Name & ".複写コマンド_Click)"