Консультация № 189008
23.03.2016, 19:57
0.00 руб.
0 4 0
Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос:
Пишу на VB в среде разработки VSExpress2013. При обращении таблице БД с целью добавить строку выдает следующую ошибку: "Необработанное исключение типа "System.Data.OleDb.OleDbException" в System.Data.dll
Дополнительные сведения: Ошибка синтаксиса в инструкции INSERT INTO." Может я не понимаю чего, но я уже несколько раз перепроверяла.

Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click
Dim s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13 As String
Dim r As DialogResult
Form3.ShowDialog()
s1 = Grid1.CurrentRow.Cells("Код").Value
s2 = Form3.TextBox2.Text
s3 = Form3.TextBox3.Text
s4 = Form3.TextBox4.Text
s5 = Form3.TextBox5.Text
s6 = Form3.TextBox6.Text
s7 = Form3.TextBox7.Text
s8 = Form3.TextBox8.Text
s9 = Form3.TextBox9.Text
s10 = Form3.TextBox10.Text
s11 = Form3.TextBox11.Text
s12 = Form3.TextBox12.Text
s13 = Form3.TextBox13.Text
r = Form3.DialogResult
Form3.Close()

If r <> DialogResult.OK Then
Exit Sub
End If

Dim c As New OleDbCommand
c.Connection = conn
c.CommandText = "insert into Заполнение(Код_клиента,Фамилия,Имя,Отчество,Дата_рождения,Пол,Место_рождения,Семейное_положение,Дата_регистрации_брака, ФИО_родителей, Место_регистрации, Наличие_ин_гражданства,Причина,) values('" & s1 & "','" & s2 & "','" & s3 & "','" & s4 & "','" & s5 & "','" & s6 & "','" & s7 & "','" & s8 & "','" & s9 & "','" & s10 & "','" & s11 & "','" & s12 & "','" & s13 & "')"
c.ExecuteNonQuery()

RefreshGrid2()
End Sub

Обсуждение

давно
Профессионал
848
1596
24.03.2016, 08:23
общий
Адресаты:
Наличие_ин_гражданства,Причина,)

В конце поля "Причина" стоит запятая, она там не нужна поскольку перечисление полей закончилось.
давно
Посетитель
400099
1
24.03.2016, 19:25
общий
Я её убирала, всё равно та же ошибка
давно
Профессионал
848
1596
25.03.2016, 08:26
общий
Адресаты:
Нужно посмотреть на строку insert после того, как Вы в нее добавили значения полей из TextBox.
Как вариант - сделайте на форме еще один TextBox, например TextBox15.
после строки
c.CommandText = "insert into Заполнение....
добавьте строку
TextBox15.Text = с.CommandText
а строку
c.ExecuteNonQuery()
закоментировать.
После нажатия на Button5 в TextBox15 появится строка - вот ее скопируйте сюда в минифорум, чтобы посмотреть где ошибка синтаксиса в команде.
давно
Посетитель
400180
1
05.05.2016, 00:19
общий
05.05.2016, 00:20
Если проблема еще стоит. Думаю дело в том, что вставляемые данные содержат одинарные, либо двойные кавычки. Из-за этого портится вся строка запроса. Поищите, должен быть метод что-то вроде BindParameter. Воспользуйтесь им для вставки значений в запрос. Сам, к сожалению, точно подсказать не могу в виду отсутствия VS.
Форма ответа