質問するログイン新規登録

質問編集履歴

5

不要行を削除しました

2018/04/19 07:51

投稿

gigatail
gigatail

スコア9

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

追記しました

2018/04/19 07:51

投稿

gigatail
gigatail

スコア9

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

追記しました

2018/04/19 07:38

投稿

gigatail
gigatail

スコア9

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

```で囲みました

2018/04/19 07:33

投稿

gigatail
gigatail

スコア9

title CHANGED
File without changes
body CHANGED
@@ -16,8 +16,7 @@
16
16
  Call DB_CONNECT
17
17
 
18
18
  'SQL文生成
19
- コード
20
- ```s_SQL = ""
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

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

2018/04/19 06:47

投稿

gigatail
gigatail

スコア9

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