質問編集履歴
5
不要行を削除しました
title
CHANGED
File without changes
|
body
CHANGED
@@ -189,9 +189,7 @@
|
|
189
189
|
RS_SQL.Open s_SQL, CN_SQL, adOpenKeyset, adLockPessimistic
|
190
190
|
|
191
191
|
s_SQL = "INSERT INTO T_案件テーブル (ID, FLD1, FLD2, FLD3) "
|
192
|
-
s_SQL = s_SQL & "VALUES ( "
|
192
|
+
s_SQL = s_SQL & "VALUES ( , , , );"
|
193
|
-
s_SQL = s_SQL & ");"
|
194
|
-
Debug.Print s_SQL
|
195
193
|
|
196
194
|
'SQL文実行
|
197
195
|
RS_SQL.Open s_SQL, CN_SQL, adOpenKeyset, adLockPessimistic
|
4
追記しました
title
CHANGED
File without changes
|
body
CHANGED
@@ -170,6 +170,38 @@
|
|
170
170
|
'接続を閉じる
|
171
171
|
Call DB_DISCONNECT
|
172
172
|
|
173
|
+
|
174
|
+
|
175
|
+
' -----------------------------------------------------------------------------
|
176
|
+
' 以下は[DELETE]-->[INSERT]しているロジックです
|
177
|
+
' -----------------------------------------------------------------------------
|
178
|
+
|
179
|
+
'----- DB接続 -----
|
180
|
+
Call DB_Connect
|
181
|
+
|
182
|
+
'----- トランザクション開始 -----
|
183
|
+
Call BeginTransaction
|
184
|
+
|
185
|
+
'該当データをDELETE --> INSERT
|
186
|
+
s_SQL = "DELETE FROM T_案件テーブル WHERE ID = '" & KEY & "';"
|
187
|
+
|
188
|
+
'SQL文実行
|
189
|
+
RS_SQL.Open s_SQL, CN_SQL, adOpenKeyset, adLockPessimistic
|
190
|
+
|
191
|
+
s_SQL = "INSERT INTO T_案件テーブル (ID, FLD1, FLD2, FLD3) "
|
192
|
+
s_SQL = s_SQL & "VALUES ( "
|
193
|
+
s_SQL = s_SQL & ");"
|
194
|
+
Debug.Print s_SQL
|
195
|
+
|
196
|
+
'SQL文実行
|
197
|
+
RS_SQL.Open s_SQL, CN_SQL, adOpenKeyset, adLockPessimistic
|
198
|
+
|
199
|
+
'----- DBコミット -----
|
200
|
+
Call CommitTransaction
|
201
|
+
|
202
|
+
'----- 接続を閉じる -----
|
203
|
+
Call DB_DISCONNECT
|
204
|
+
|
173
205
|
```
|
174
206
|
### 試したこと
|
175
207
|
|
3
追記しました
title
CHANGED
File without changes
|
body
CHANGED
@@ -12,6 +12,122 @@
|
|
12
12
|
|
13
13
|
### 該当のソースコード
|
14
14
|
```Access VBA
|
15
|
+
|
16
|
+
Public CN_SQL As New ADODB.Connection
|
17
|
+
Public RS_SQL As New ADODB.Recordset
|
18
|
+
' -----------------------------------------------------------------------------
|
19
|
+
' Connectionオブジェクトを生成
|
20
|
+
' -----------------------------------------------------------------------------
|
21
|
+
Public Sub DB_Connect()
|
22
|
+
|
23
|
+
Dim ConnectionString As String
|
24
|
+
|
25
|
+
Dim sDBSever As String
|
26
|
+
Dim sDBName As String
|
27
|
+
Dim sLoginID As String
|
28
|
+
Dim sPassWD As String
|
29
|
+
|
30
|
+
sDBSever = DLookup("[データ]", "M_システム", "[ID] = 'SvName'") ' SQL Serverが稼働しているサーバー名
|
31
|
+
sDBName = DLookup("[データ]", "M_システム", "[ID] = 'DbName'") ' SQL ServerのDB名
|
32
|
+
sLoginID = DLookup("[データ]", "M_システム", "[ID] = 'Login'") ' sa
|
33
|
+
sPassWD = DLookup("[データ]", "M_システム", "[ID] = 'Pass'")' saのパスワード
|
34
|
+
|
35
|
+
' 接続文字列
|
36
|
+
ConnectionString = "Provider=SQLOLEDB;Data Source=" & sDBSever & _
|
37
|
+
";Initial Catalog=" & sDBName & _
|
38
|
+
";Connect Timeout=15" & _
|
39
|
+
";user id=" & sLoginID & _
|
40
|
+
";password=" & sPassWD
|
41
|
+
|
42
|
+
' 接続
|
43
|
+
CN_SQL.Open ConnectionString
|
44
|
+
|
45
|
+
End Sub
|
46
|
+
|
47
|
+
' -----------------------------------------------------------------------------
|
48
|
+
' データベースへの接続を解除する
|
49
|
+
' -----------------------------------------------------------------------------
|
50
|
+
Public Sub DB_DISCONNECT()
|
51
|
+
|
52
|
+
CN_SQL.Close
|
53
|
+
Set CN_SQL = Nothing
|
54
|
+
|
55
|
+
End Sub
|
56
|
+
|
57
|
+
' -----------------------------------------------------------------------------
|
58
|
+
' 引数のSQL文を実行し、ADODB.Recordsetを返す
|
59
|
+
' -----------------------------------------------------------------------------
|
60
|
+
Public Function DB_EXECUTE(s_SQL As String, CursorType, LockType, b_FLG As Boolean) As ADODB.Recordset
|
61
|
+
|
62
|
+
b_FLG = True
|
63
|
+
|
64
|
+
' タイムアウト設定 (15分)
|
65
|
+
CN_SQL.CommandTimeout = 60 * 15
|
66
|
+
|
67
|
+
' 処理された行数を示すメッセージが結果セットの一部として返されないようにする
|
68
|
+
CN_SQL.execute ("SET NOCOUNT ON")
|
69
|
+
|
70
|
+
' 警告メッセージが結果セットの一部として返されないようにする
|
71
|
+
CN_SQL.execute ("SET ANSI_WARNINGS OFF")
|
72
|
+
|
73
|
+
' オーバーフローおよび0除算時にはNULLを返す
|
74
|
+
CN_SQL.execute ("SET ARITHABORT OFF")
|
75
|
+
|
76
|
+
|
77
|
+
RS_SQL.CursorType = CursorType
|
78
|
+
RS_SQL.LockType = LockType
|
79
|
+
|
80
|
+
RS_SQL.Open s_SQL, CN_SQL
|
81
|
+
'RS_SQL.Open s_SQL, CN_SQL, CursorType, LockType
|
82
|
+
|
83
|
+
Do
|
84
|
+
' レコードの操作ができるオブジェクト若しくは次のRecordSetがとれず、コネクションが空になった場合終了
|
85
|
+
If RS_SQL.State = adStateOpen Or RS_SQL.ActiveConnection Is Nothing Then
|
86
|
+
Exit Do
|
87
|
+
End If
|
88
|
+
Set RS_SQL = RS_SQL.NextRecordset()
|
89
|
+
Loop
|
90
|
+
|
91
|
+
Set DB_EXECUTE = RS_SQL
|
92
|
+
|
93
|
+
|
94
|
+
' 設定OFF
|
95
|
+
CN_SQL.execute ("SET NOCOUNT OFF")
|
96
|
+
CN_SQL.execute ("SET ANSI_WARNINGS ON")
|
97
|
+
CN_SQL.execute ("SET ARITHABORT ON")
|
98
|
+
|
99
|
+
End Function
|
100
|
+
|
101
|
+
' -----------------------------------------------------------------------------
|
102
|
+
' トランザクションを開始する
|
103
|
+
' -----------------------------------------------------------------------------
|
104
|
+
Public Sub BeginTransaction()
|
105
|
+
|
106
|
+
CN_SQL.BeginTrans
|
107
|
+
|
108
|
+
End Sub
|
109
|
+
|
110
|
+
' -----------------------------------------------------------------------------
|
111
|
+
' トランザクションをコミットする
|
112
|
+
' -----------------------------------------------------------------------------
|
113
|
+
Public Sub CommitTransaction()
|
114
|
+
|
115
|
+
CN_SQL.CommitTrans
|
116
|
+
|
117
|
+
End Sub
|
118
|
+
|
119
|
+
' -----------------------------------------------------------------------------
|
120
|
+
' トランザクションをロールバックする
|
121
|
+
' -----------------------------------------------------------------------------
|
122
|
+
Public Sub RollbackTransaction()
|
123
|
+
|
124
|
+
CN_SQL.RollbackTrans
|
125
|
+
|
126
|
+
End Sub
|
127
|
+
|
128
|
+
' -----------------------------------------------------------------------------
|
129
|
+
' F_取引先登録のコード
|
130
|
+
' -----------------------------------------------------------------------------
|
15
131
|
'DB接続
|
16
132
|
Call DB_CONNECT
|
17
133
|
|
2
```で囲みました
title
CHANGED
File without changes
|
body
CHANGED
@@ -16,8 +16,7 @@
|
|
16
16
|
Call DB_CONNECT
|
17
17
|
|
18
18
|
'SQL文生成
|
19
|
-
コード
|
20
|
-
|
19
|
+
s_SQL = ""
|
21
20
|
s_SQL = "SELECT COUNT(*) AS REC_CNT "
|
22
21
|
s_SQL = s_SQL & "FROM M_取引先マスタ "
|
23
22
|
s_SQL = s_SQL & "WHERE 取引先CD LIKE '201804%';"
|
1
コード部分を```で囲みました
title
CHANGED
File without changes
|
body
CHANGED
@@ -8,18 +8,16 @@
|
|
8
8
|
|
9
9
|
SELECT COUNTのSQL文をコメントアウトすると、INSERT文の行で同エラーになります。
|
10
10
|
|
11
|
-
SQL文実行の都度、クローズしなくてはいけないのでしょうか?
|
12
|
-
別ロジックで[DELETE]-->[INSERT]している部分では問題無く動作しているため、コピペするかたちで作
|
11
|
+
別ロジックで[DELETE]-->[INSERT]している部分では問題無く動作しているため、コピペするかたちで作ったのですが、SQL文実行の都度クローズしなくてはいけないのでしょうか?
|
13
12
|
|
14
13
|
### 該当のソースコード
|
15
|
-
|
16
|
-
Access VBA
|
14
|
+
```Access VBA
|
17
|
-
|
18
15
|
'DB接続
|
19
16
|
Call DB_CONNECT
|
20
17
|
|
21
18
|
'SQL文生成
|
19
|
+
コード
|
22
|
-
s_SQL = ""
|
20
|
+
```s_SQL = ""
|
23
21
|
s_SQL = "SELECT COUNT(*) AS REC_CNT "
|
24
22
|
s_SQL = s_SQL & "FROM M_取引先マスタ "
|
25
23
|
s_SQL = s_SQL & "WHERE 取引先CD LIKE '201804%';"
|
@@ -57,6 +55,7 @@
|
|
57
55
|
'接続を閉じる
|
58
56
|
Call DB_DISCONNECT
|
59
57
|
|
58
|
+
```
|
60
59
|
### 試したこと
|
61
60
|
|
62
61
|
|