質問編集履歴
5
不要行を削除しました
test
CHANGED
File without changes
|
test
CHANGED
@@ -380,11 +380,7 @@
|
|
380
380
|
|
381
381
|
s_SQL = "INSERT INTO T_案件テーブル (ID, FLD1, FLD2, FLD3) "
|
382
382
|
|
383
|
-
s_SQL = s_SQL & "VALUES ( "
|
383
|
+
s_SQL = s_SQL & "VALUES ( , , , );"
|
384
|
-
|
385
|
-
s_SQL = s_SQL & ");"
|
386
|
-
|
387
|
-
Debug.Print s_SQL
|
388
384
|
|
389
385
|
|
390
386
|
|
4
追記しました
test
CHANGED
File without changes
|
test
CHANGED
@@ -342,6 +342,70 @@
|
|
342
342
|
|
343
343
|
|
344
344
|
|
345
|
+
|
346
|
+
|
347
|
+
|
348
|
+
|
349
|
+
' -----------------------------------------------------------------------------
|
350
|
+
|
351
|
+
' 以下は[DELETE]-->[INSERT]しているロジックです
|
352
|
+
|
353
|
+
' -----------------------------------------------------------------------------
|
354
|
+
|
355
|
+
|
356
|
+
|
357
|
+
'----- DB接続 -----
|
358
|
+
|
359
|
+
Call DB_Connect
|
360
|
+
|
361
|
+
|
362
|
+
|
363
|
+
'----- トランザクション開始 -----
|
364
|
+
|
365
|
+
Call BeginTransaction
|
366
|
+
|
367
|
+
|
368
|
+
|
369
|
+
'該当データをDELETE --> INSERT
|
370
|
+
|
371
|
+
s_SQL = "DELETE FROM T_案件テーブル WHERE ID = '" & KEY & "';"
|
372
|
+
|
373
|
+
|
374
|
+
|
375
|
+
'SQL文実行
|
376
|
+
|
377
|
+
RS_SQL.Open s_SQL, CN_SQL, adOpenKeyset, adLockPessimistic
|
378
|
+
|
379
|
+
|
380
|
+
|
381
|
+
s_SQL = "INSERT INTO T_案件テーブル (ID, FLD1, FLD2, FLD3) "
|
382
|
+
|
383
|
+
s_SQL = s_SQL & "VALUES ( "
|
384
|
+
|
385
|
+
s_SQL = s_SQL & ");"
|
386
|
+
|
387
|
+
Debug.Print s_SQL
|
388
|
+
|
389
|
+
|
390
|
+
|
391
|
+
'SQL文実行
|
392
|
+
|
393
|
+
RS_SQL.Open s_SQL, CN_SQL, adOpenKeyset, adLockPessimistic
|
394
|
+
|
395
|
+
|
396
|
+
|
397
|
+
'----- DBコミット -----
|
398
|
+
|
399
|
+
Call CommitTransaction
|
400
|
+
|
401
|
+
|
402
|
+
|
403
|
+
'----- 接続を閉じる -----
|
404
|
+
|
405
|
+
Call DB_DISCONNECT
|
406
|
+
|
407
|
+
|
408
|
+
|
345
409
|
```
|
346
410
|
|
347
411
|
### 試したこと
|
3
追記しました
test
CHANGED
File without changes
|
test
CHANGED
@@ -26,6 +26,238 @@
|
|
26
26
|
|
27
27
|
```Access VBA
|
28
28
|
|
29
|
+
|
30
|
+
|
31
|
+
Public CN_SQL As New ADODB.Connection
|
32
|
+
|
33
|
+
Public RS_SQL As New ADODB.Recordset
|
34
|
+
|
35
|
+
' -----------------------------------------------------------------------------
|
36
|
+
|
37
|
+
' Connectionオブジェクトを生成
|
38
|
+
|
39
|
+
' -----------------------------------------------------------------------------
|
40
|
+
|
41
|
+
Public Sub DB_Connect()
|
42
|
+
|
43
|
+
|
44
|
+
|
45
|
+
Dim ConnectionString As String
|
46
|
+
|
47
|
+
|
48
|
+
|
49
|
+
Dim sDBSever As String
|
50
|
+
|
51
|
+
Dim sDBName As String
|
52
|
+
|
53
|
+
Dim sLoginID As String
|
54
|
+
|
55
|
+
Dim sPassWD As String
|
56
|
+
|
57
|
+
|
58
|
+
|
59
|
+
sDBSever = DLookup("[データ]", "M_システム", "[ID] = 'SvName'") ' SQL Serverが稼働しているサーバー名
|
60
|
+
|
61
|
+
sDBName = DLookup("[データ]", "M_システム", "[ID] = 'DbName'") ' SQL ServerのDB名
|
62
|
+
|
63
|
+
sLoginID = DLookup("[データ]", "M_システム", "[ID] = 'Login'") ' sa
|
64
|
+
|
65
|
+
sPassWD = DLookup("[データ]", "M_システム", "[ID] = 'Pass'")' saのパスワード
|
66
|
+
|
67
|
+
|
68
|
+
|
69
|
+
' 接続文字列
|
70
|
+
|
71
|
+
ConnectionString = "Provider=SQLOLEDB;Data Source=" & sDBSever & _
|
72
|
+
|
73
|
+
";Initial Catalog=" & sDBName & _
|
74
|
+
|
75
|
+
";Connect Timeout=15" & _
|
76
|
+
|
77
|
+
";user id=" & sLoginID & _
|
78
|
+
|
79
|
+
";password=" & sPassWD
|
80
|
+
|
81
|
+
|
82
|
+
|
83
|
+
' 接続
|
84
|
+
|
85
|
+
CN_SQL.Open ConnectionString
|
86
|
+
|
87
|
+
|
88
|
+
|
89
|
+
End Sub
|
90
|
+
|
91
|
+
|
92
|
+
|
93
|
+
' -----------------------------------------------------------------------------
|
94
|
+
|
95
|
+
' データベースへの接続を解除する
|
96
|
+
|
97
|
+
' -----------------------------------------------------------------------------
|
98
|
+
|
99
|
+
Public Sub DB_DISCONNECT()
|
100
|
+
|
101
|
+
|
102
|
+
|
103
|
+
CN_SQL.Close
|
104
|
+
|
105
|
+
Set CN_SQL = Nothing
|
106
|
+
|
107
|
+
|
108
|
+
|
109
|
+
End Sub
|
110
|
+
|
111
|
+
|
112
|
+
|
113
|
+
' -----------------------------------------------------------------------------
|
114
|
+
|
115
|
+
' 引数のSQL文を実行し、ADODB.Recordsetを返す
|
116
|
+
|
117
|
+
' -----------------------------------------------------------------------------
|
118
|
+
|
119
|
+
Public Function DB_EXECUTE(s_SQL As String, CursorType, LockType, b_FLG As Boolean) As ADODB.Recordset
|
120
|
+
|
121
|
+
|
122
|
+
|
123
|
+
b_FLG = True
|
124
|
+
|
125
|
+
|
126
|
+
|
127
|
+
' タイムアウト設定 (15分)
|
128
|
+
|
129
|
+
CN_SQL.CommandTimeout = 60 * 15
|
130
|
+
|
131
|
+
|
132
|
+
|
133
|
+
' 処理された行数を示すメッセージが結果セットの一部として返されないようにする
|
134
|
+
|
135
|
+
CN_SQL.execute ("SET NOCOUNT ON")
|
136
|
+
|
137
|
+
|
138
|
+
|
139
|
+
' 警告メッセージが結果セットの一部として返されないようにする
|
140
|
+
|
141
|
+
CN_SQL.execute ("SET ANSI_WARNINGS OFF")
|
142
|
+
|
143
|
+
|
144
|
+
|
145
|
+
' オーバーフローおよび0除算時にはNULLを返す
|
146
|
+
|
147
|
+
CN_SQL.execute ("SET ARITHABORT OFF")
|
148
|
+
|
149
|
+
|
150
|
+
|
151
|
+
|
152
|
+
|
153
|
+
RS_SQL.CursorType = CursorType
|
154
|
+
|
155
|
+
RS_SQL.LockType = LockType
|
156
|
+
|
157
|
+
|
158
|
+
|
159
|
+
RS_SQL.Open s_SQL, CN_SQL
|
160
|
+
|
161
|
+
'RS_SQL.Open s_SQL, CN_SQL, CursorType, LockType
|
162
|
+
|
163
|
+
|
164
|
+
|
165
|
+
Do
|
166
|
+
|
167
|
+
' レコードの操作ができるオブジェクト若しくは次のRecordSetがとれず、コネクションが空になった場合終了
|
168
|
+
|
169
|
+
If RS_SQL.State = adStateOpen Or RS_SQL.ActiveConnection Is Nothing Then
|
170
|
+
|
171
|
+
Exit Do
|
172
|
+
|
173
|
+
End If
|
174
|
+
|
175
|
+
Set RS_SQL = RS_SQL.NextRecordset()
|
176
|
+
|
177
|
+
Loop
|
178
|
+
|
179
|
+
|
180
|
+
|
181
|
+
Set DB_EXECUTE = RS_SQL
|
182
|
+
|
183
|
+
|
184
|
+
|
185
|
+
|
186
|
+
|
187
|
+
' 設定OFF
|
188
|
+
|
189
|
+
CN_SQL.execute ("SET NOCOUNT OFF")
|
190
|
+
|
191
|
+
CN_SQL.execute ("SET ANSI_WARNINGS ON")
|
192
|
+
|
193
|
+
CN_SQL.execute ("SET ARITHABORT ON")
|
194
|
+
|
195
|
+
|
196
|
+
|
197
|
+
End Function
|
198
|
+
|
199
|
+
|
200
|
+
|
201
|
+
' -----------------------------------------------------------------------------
|
202
|
+
|
203
|
+
' トランザクションを開始する
|
204
|
+
|
205
|
+
' -----------------------------------------------------------------------------
|
206
|
+
|
207
|
+
Public Sub BeginTransaction()
|
208
|
+
|
209
|
+
|
210
|
+
|
211
|
+
CN_SQL.BeginTrans
|
212
|
+
|
213
|
+
|
214
|
+
|
215
|
+
End Sub
|
216
|
+
|
217
|
+
|
218
|
+
|
219
|
+
' -----------------------------------------------------------------------------
|
220
|
+
|
221
|
+
' トランザクションをコミットする
|
222
|
+
|
223
|
+
' -----------------------------------------------------------------------------
|
224
|
+
|
225
|
+
Public Sub CommitTransaction()
|
226
|
+
|
227
|
+
|
228
|
+
|
229
|
+
CN_SQL.CommitTrans
|
230
|
+
|
231
|
+
|
232
|
+
|
233
|
+
End Sub
|
234
|
+
|
235
|
+
|
236
|
+
|
237
|
+
' -----------------------------------------------------------------------------
|
238
|
+
|
239
|
+
' トランザクションをロールバックする
|
240
|
+
|
241
|
+
' -----------------------------------------------------------------------------
|
242
|
+
|
243
|
+
Public Sub RollbackTransaction()
|
244
|
+
|
245
|
+
|
246
|
+
|
247
|
+
CN_SQL.RollbackTrans
|
248
|
+
|
249
|
+
|
250
|
+
|
251
|
+
End Sub
|
252
|
+
|
253
|
+
|
254
|
+
|
255
|
+
' -----------------------------------------------------------------------------
|
256
|
+
|
257
|
+
' F_取引先登録のコード
|
258
|
+
|
259
|
+
' -----------------------------------------------------------------------------
|
260
|
+
|
29
261
|
'DB接続
|
30
262
|
|
31
263
|
Call DB_CONNECT
|
2
```で囲みました
test
CHANGED
File without changes
|
test
CHANGED
@@ -34,9 +34,7 @@
|
|
34
34
|
|
35
35
|
'SQL文生成
|
36
36
|
|
37
|
-
コード
|
38
|
-
|
39
|
-
|
37
|
+
s_SQL = ""
|
40
38
|
|
41
39
|
s_SQL = "SELECT COUNT(*) AS REC_CNT "
|
42
40
|
|
1
コード部分を```で囲みました
test
CHANGED
File without changes
|
test
CHANGED
@@ -18,19 +18,13 @@
|
|
18
18
|
|
19
19
|
|
20
20
|
|
21
|
-
SQL文実行の都度、クローズしなくてはいけないのでしょうか?
|
22
|
-
|
23
|
-
別ロジックで[DELETE]-->[INSERT]している部分では問題無く動作しているため、コピペするかたちで作
|
21
|
+
別ロジックで[DELETE]-->[INSERT]している部分では問題無く動作しているため、コピペするかたちで作ったのですが、SQL文実行の都度クローズしなくてはいけないのでしょうか?
|
24
22
|
|
25
23
|
|
26
24
|
|
27
25
|
### 該当のソースコード
|
28
26
|
|
29
|
-
|
30
|
-
|
31
|
-
Access VBA
|
27
|
+
```Access VBA
|
32
|
-
|
33
|
-
|
34
28
|
|
35
29
|
'DB接続
|
36
30
|
|
@@ -40,7 +34,9 @@
|
|
40
34
|
|
41
35
|
'SQL文生成
|
42
36
|
|
37
|
+
コード
|
38
|
+
|
43
|
-
s_SQL = ""
|
39
|
+
```s_SQL = ""
|
44
40
|
|
45
41
|
s_SQL = "SELECT COUNT(*) AS REC_CNT "
|
46
42
|
|
@@ -116,6 +112,8 @@
|
|
116
112
|
|
117
113
|
|
118
114
|
|
115
|
+
```
|
116
|
+
|
119
117
|
### 試したこと
|
120
118
|
|
121
119
|
|