質問編集履歴

5

不要行を削除しました

2018/04/19 07:51

投稿

gigatail
gigatail

スコア9

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

追記しました

2018/04/19 07:51

投稿

gigatail
gigatail

スコア9

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

追記しました

2018/04/19 07:38

投稿

gigatail
gigatail

スコア9

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

```で囲みました

2018/04/19 07:33

投稿

gigatail
gigatail

スコア9

test CHANGED
File without changes
test CHANGED
@@ -34,9 +34,7 @@
34
34
 
35
35
  'SQL文生成
36
36
 
37
- コード
38
-
39
- ```s_SQL = ""
37
+ s_SQL = ""
40
38
 
41
39
  s_SQL = "SELECT COUNT(*) AS REC_CNT "
42
40
 

1

コード部分を```で囲みました

2018/04/19 06:47

投稿

gigatail
gigatail

スコア9

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