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

質問編集履歴

3

本文の修正

2021/04/15 07:58

投稿

rarara_123
rarara_123

スコア11

title CHANGED
File without changes
body CHANGED
@@ -1,11 +1,11 @@
1
1
  発生している問題
2
2
  INSERT INTOステートメントの構文エラーを解消したいです。
3
- エラーは、Catch ex As Exceptiontran.Rollback()ThrowのThrowで出ています。
4
3
 
5
4
  エラーメッセージ
6
5
  System.Data.OleDb.OleDbException: 'INSERT INTO ステートメントの構文エラーです。'
6
+ ```
7
7
  この例外は、最初にこの呼び出し履歴
8
- ``` System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(System.Data.OleDb.OleDbHResult)
8
+ System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(System.Data.OleDb.OleDbHResult)
9
9
  System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(System.Data.OleDb.tagDBPARAMS, out object)
10
10
  System.Data.OleDb.OleDbCommand.ExecuteCommandText(out object)
11
11
  System.Data.OleDb.OleDbCommand.ExecuteCommand(System.Data.CommandBehavior, out object)
@@ -16,6 +16,7 @@
16
16
  System.Windows.Forms.Button.OnClick(System.EventArgs)
17
17
  System.Windows.Forms.Button.OnMouseUp(System.Windows.Forms.MouseEventArgs)
18
18
  ...
19
+ [呼び出し履歴が切り捨てられました] でスローされました
19
20
  ```
20
21
 
21
22
  https://www.fenet.jp/dotnet/column/%E8%A8%80%E8%AA%9E%E3%83%BB%E7%92%B0%E5%A2%83/6260/
@@ -24,57 +25,40 @@
24
25
 
25
26
  該当のソースコード
26
27
  ```
27
- Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
28
+ Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
28
29
 
29
- 'SQL作成
30
- Dim sql = New System.Text.StringBuilder()
31
- sql.AppendLine("INSERT INTO table2(")
32
- sql.AppendLine("日付")
33
- sql.AppendLine(",出勤時間(時)")
34
- sql.AppendLine(",出勤時間(分)")
35
- sql.AppendLine(",退勤時間(時)")
36
- sql.AppendLine(",退勤時間(分)")
37
- sql.AppendLine(",給料")
38
- sql.AppendLine(")VALUES(")
39
- sql.AppendLine("DateTimePicker1.Text")
40
- sql.AppendLine(",syukkinJikan")
41
- sql.AppendLine(",syukkinHun")
42
- sql.AppendLine(",taikinJikan")
43
- sql.AppendLine(",taikinHun")
44
- sql.AppendLine(",kyuuyoKakutei")
45
- sql.AppendLine(")")
46
-
47
30
  'Access接続準備
48
31
  Dim command As New OleDbCommand
49
- Dim cnAccess As OleDbConnection = New OleDbConnection
32
+ Dim cnAccess As OleDbConnection = New OleDbConnection()
50
33
 
51
- '作成した接続文字列を設定
52
- cnAccess.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Database2.mdb"
53
34
 
54
- 'Access接続開始
35
+ 'SQL文作成
36
+ Dim cm As New OleDbCommand("INSERT INTO table2 (
55
- cnAccess.Open()
37
+ 日付,出勤時間(),出勤時間(分),退勤時間(時),退勤時間(分),給料)
38
+ VALUES(@hiduke,@syukkinJikan,@syukkinHun,@taikinJikan,@taikinHun,@kyuuyoKakutei)", cnAccess)
56
39
 
57
- Dim tran As OleDbTransaction
58
- tran = cnAccess.BeginTransaction
59
40
 
60
- Try
41
+ 'パラメーター化
42
+ cm.Parameters.Add(New OleDbParameter("@hiduke", hiduke))
43
+ cm.Parameters.Add(New OleDbParameter("@syukkinJikan", syukkinJikan))
44
+ cm.Parameters.Add(New OleDbParameter("@syukkinHun", syukkinHun))
45
+ cm.Parameters.Add(New OleDbParameter("@taikinJikan", taikinJikan))
46
+ cm.Parameters.Add(New OleDbParameter("@taikinHun", taikinHun))
47
+ cm.Parameters.Add(New OleDbParameter("@kyuuyoKakutei", kyuuyoKakutei))
61
48
 
62
- command.Connection = cnAccess
63
- command.Transaction = tran
64
49
 
65
- command.CommandText = sql.ToString
66
- command.ExecuteNonQuery()
50
+ '作成した接続文字列を設定
51
+ cnAccess.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Database2.mdb"
67
52
 
53
+ 'Access接続開始
68
- tran.Commit()
54
+ cnAccess.Open()
69
55
 
70
- Catch ex As Exception
71
- tran.Rollback()
56
+ 'SQL文の実行
72
- Throw
73
- Finally
74
- command.Dispose()
75
- cnAccess.Close()
57
+ cm.ExecuteNonQuery()
76
58
 
77
- End Try
59
+ '終了
60
+ command.Dispose()
61
+ cnAccess.Close()
78
62
 
79
63
 
80
64
  End Sub

2

本文修正

2021/04/15 07:58

投稿

rarara_123
rarara_123

スコア11

title CHANGED
File without changes
body CHANGED
@@ -1,7 +1,23 @@
1
- 発生している問題・エラーメッセージ
1
+ 発生している問題
2
2
  INSERT INTOステートメントの構文エラーを解消したいです。
3
3
  エラーは、Catch ex As Exceptiontran.Rollback()ThrowのThrowで出ています。
4
4
 
5
+ エラーメッセージ
6
+ System.Data.OleDb.OleDbException: 'INSERT INTO ステートメントの構文エラーです。'
7
+ この例外は、最初にこの呼び出し履歴
8
+ ``` System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(System.Data.OleDb.OleDbHResult)
9
+ System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(System.Data.OleDb.tagDBPARAMS, out object)
10
+ System.Data.OleDb.OleDbCommand.ExecuteCommandText(out object)
11
+ System.Data.OleDb.OleDbCommand.ExecuteCommand(System.Data.CommandBehavior, out object)
12
+ System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(System.Data.CommandBehavior, string)
13
+ System.Data.OleDb.OleDbCommand.ExecuteNonQuery()
14
+ WindowsApp6.Form1.Button3_Click(Object, System.EventArgs) 場所: Form1.vb
15
+ System.Windows.Forms.Control.OnClick(System.EventArgs)
16
+ System.Windows.Forms.Button.OnClick(System.EventArgs)
17
+ System.Windows.Forms.Button.OnMouseUp(System.Windows.Forms.MouseEventArgs)
18
+ ...
19
+ ```
20
+
5
21
  https://www.fenet.jp/dotnet/column/%E8%A8%80%E8%AA%9E%E3%83%BB%E7%92%B0%E5%A2%83/6260/
6
22
  上記サイトを参考にINSERTINTOの記述を変えてみましたがエラー解消されません。
7
23
 
@@ -64,222 +80,6 @@
64
80
  End Sub
65
81
  ```
66
82
 
67
- 全体のソースコード
68
- ```
69
- Imports System.Data.OleDb
70
- Public Class Form1
71
-
72
- Dim str, syukkinJikan, syukkinHun, taikinJikan, taikinHun As Integer
73
-
74
- '日付
75
- Private Sub DateTimePicker1_ValueChanged(sender As Object, e As EventArgs) Handles DateTimePicker1.ValueChanged
76
-
77
- End Sub
78
-
79
- '出勤時間(時)
80
- Private Sub ComboBox1_SelectedIndexChanged_1(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged
81
-
82
- End Sub
83
-
84
- '出勤時間(分)
85
- Private Sub ComboBox2_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox2.SelectedIndexChanged
86
-
87
- End Sub
88
-
89
- '退勤時間(時)
90
- Private Sub ComboBox3_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox3.SelectedIndexChanged
91
-
92
- End Sub
93
-
94
- '退勤時間(分)
95
- Private Sub ComboBox4_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox4.SelectedIndexChanged
96
-
97
- End Sub
98
-
99
- Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
100
-
101
- 'SQL作成
102
- Dim sql = New System.Text.StringBuilder()
103
- sql.AppendLine("INSERT INTO table2(")
104
- sql.AppendLine("日付")
105
- sql.AppendLine(",出勤時間(時)")
106
- sql.AppendLine(",出勤時間(分)")
107
- sql.AppendLine(",退勤時間(時)")
108
- sql.AppendLine(",退勤時間(分)")
109
- sql.AppendLine(",給料")
110
- sql.AppendLine(")VALUES(")
111
- sql.AppendLine("DateTimePicker1.Text")
112
- sql.AppendLine(",syukkinJikan")
113
- sql.AppendLine(",syukkinHun")
114
- sql.AppendLine(",taikinJikan")
115
- sql.AppendLine(",taikinHun")
116
- sql.AppendLine(",kyuuyoKakutei")
117
- sql.AppendLine(")")
118
-
119
- 'Access接続準備
120
- Dim command As New OleDbCommand
121
- Dim cnAccess As OleDbConnection = New OleDbConnection
122
-
123
- '作成した接続文字列を設定
124
- cnAccess.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Database2.mdb"
125
-
126
- 'Access接続開始
127
- cnAccess.Open()
128
-
129
- Dim tran As OleDbTransaction
130
- tran = cnAccess.BeginTransaction
131
-
132
- Try
133
-
134
- command.Connection = cnAccess
135
- command.Transaction = tran
136
-
137
- command.CommandText = sql.ToString
138
- command.ExecuteNonQuery()
139
-
140
- tran.Commit()
141
-
142
- Catch ex As Exception
143
- tran.Rollback()
144
- Throw
145
- Finally
146
- command.Dispose()
147
- cnAccess.Close()
148
-
149
- End Try
150
-
151
-
152
- End Sub
153
-
154
-
155
- '確認ボタン(コンボボックスのデータを取得)
156
- Public Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
157
-
158
- syukkinJikan = ComboBox1.SelectedItem
159
-
160
- syukkinHun = ComboBox2.SelectedItem
161
-
162
- taikinJikan = ComboBox3.SelectedItem
163
-
164
- taikinHun = ComboBox4.SelectedItem
165
-
166
- '稼働時間(残業、深夜)計算
167
- Dim kadouJikan, kadouHun As Integer
168
-
169
- If taikinJikan > syukkinJikan Then
170
-
171
- kadouJikan = taikinJikan - syukkinJikan
172
-
173
- ElseIf taikinJikan < syukkinJikan Then
174
-
175
- kadouJikan = taikinJikan - syukkinJikan + 24
176
-
177
- End If
178
-
179
-
180
- If taikinHun > syukkinHun Then
181
-
182
- kadouHun = taikinHun - syukkinHun
183
-
184
- ElseIf taikinHun < syukkinHun Then
185
-
186
- kadouHun = taikinHun - syukkinHun + 60
187
-
188
- End If
189
-
190
- Dim kyuukeiJikan, kyuukeiHun As Integer
191
-
192
- If kadouJikan < 6 Then
193
-
194
- kyuukeiHun = kadouHun
195
- kyuukeiJikan = kadouJikan
196
-
197
- ElseIf kadouJikan >= 6 And kadouJikan < 8 And kadouHun > 45 Then
198
-
199
- kyuukeiHun = kadouHun - 45
200
- kyuukeiJikan = kadouJikan - 1
201
-
202
- ElseIf kadouJikan >= 6 And kadouJikan < 8 And kadouHun < 45 Then
203
-
204
- kyuukeiHun = kadouHun - 45 + 60
205
- kyuukeiJikan = kadouJikan - 1
206
-
207
- ElseIf kadouJikan >= 8 Then
208
-
209
- kyuukeiHun = kadouHun
210
- kyuukeiJikan = kadouJikan - 1
211
-
212
- End If
213
-
214
-
215
- Dim ZangyouJikan As Integer
216
-
217
- If kyuukeiJikan < 8 Then
218
-
219
- ElseIf kyuukeiJikan >= 8 Then
220
-
221
- ZangyouJikan = kyuukeiJikan - 8
222
-
223
- End If
224
-
225
- Dim kyuuyo, kyuuyoZan, kyuuyoKakutei As Integer
226
-
227
- If kyuukeiJikan < 8 Then
228
-
229
- kyuuyoKakutei = (kyuukeiJikan * 1500 + (kyuukeiHun / 60) * 1500)
230
-
231
- ElseIf kyuukeiJikan >= 8 Then
232
-
233
- kyuuyo = (8 * 1500 + (kyuukeiHun / 60) * 1500)
234
- kyuuyoZan = ((kyuukeiJikan - 8) * 1500 * 1.25 + ((kyuukeiHun / 60) * 1500 * 1.25))
235
-
236
- kyuuyoKakutei = kyuuyo + kyuuyoZan
237
-
238
-
239
- End If
240
-
241
- '一日分の給料を表示
242
- TextBox2.Text = kyuuyoKakutei
243
-
244
- End Sub
245
-
246
- '給料
247
- Private Sub Label10_Click(sender As Object, e As EventArgs) Handles Label10.Click
248
-
249
- End Sub
250
- '給料
251
- Public Sub TextBox2_TextChanged(sender As Object, e As EventArgs) Handles TextBox2.TextChanged
252
-
253
- End Sub
254
-
255
-
256
- 'ACCESSと結びつける
257
- Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
258
- '押下
259
- Form2.Text = Button1.Text
260
- 'Form2に表示される
261
- Form2.Show()
262
-
263
- End Sub
264
-
265
- Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
266
- '押下
267
- Form2.Text = Button2.Text
268
- 'Fomr2に表示させる
269
- Form2.Show()
270
-
271
- End Sub
272
-
273
- Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
274
-
275
- End Sub
276
-
277
-
278
- End Class
279
-
280
- ```
281
-
282
-
283
83
  使っているツールのバージョンなど補足情報
284
84
  ACCESSのバージョン2016
285
85
  Windows10の64ビット

1

本文追加しました

2021/04/14 08:11

投稿

rarara_123
rarara_123

スコア11

title CHANGED
File without changes
body CHANGED
@@ -1,5 +1,6 @@
1
1
  発生している問題・エラーメッセージ
2
2
  INSERT INTOステートメントの構文エラーを解消したいです。
3
+ エラーは、Catch ex As Exceptiontran.Rollback()ThrowのThrowで出ています。
3
4
 
4
5
  https://www.fenet.jp/dotnet/column/%E8%A8%80%E8%AA%9E%E3%83%BB%E7%92%B0%E5%A2%83/6260/
5
6
  上記サイトを参考にINSERTINTOの記述を変えてみましたがエラー解消されません。