Страница: 1 |
При попытке вставить запись выдается ошибка: Ошибка синтаксиса в инструкции INSERT INTO. SOS. db_file = App.Path If Right$(db_file, 1) <> "\" Then db_file = db_file & "\" db_file = db_file & "Dispetcherskaj.mdb" Set conn = New ADODB.Connection conn.ConnectionString = _ "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=" & db_file & ";" & _ "Persist Security Info=False" conn.Open For i = 1 To SQL_Text_day SQL_string = "INSERT INTO Gurnal (year, month, day) VALUES (" & SQL_Text_year & "," & SQL_Text_month & "," & i & ")" conn.Execute SQL_string Next i
Спасибо за советы. Я нашел причину, она оказалесь довольно тривиальной: у Access немного отличается язык SQL надо было написать так: SQL_string = "INSERT INTO Gurnal ([year], [month], [day]) _ VALUES ('" & SQL_Text_year & "','" & SQL_Text_month & "'," & i & ")" Тоесть имена полей таблицы поместить в [] скобки. MS хитрюга. Всем кто будет писать запросы SQL на изменение, для Access могу посоветовать тестировать их во встроенном редакторе! Страница: 1 |
Вопрос: INSERT INTO
Добавлено: 04.01.03 11:15
Автор вопроса: Poletaev_R
Ответы
Всего ответов: 4
Номер ответа: 1
Автор ответа:
Svetlana
ICQ: 262385618
Вопросов: 43
Ответов: 205
Профиль | | #1
Добавлено: 04.01.03 22:29
А разве можно использовать в INSERT INTO такой синтаксис??? Этот способ у тебя когда-нибудь работал? или это ты впервые применяешь???
Номер ответа: 2
Автор ответа:
vig11
ICQ: 213777061
Вопросов: 21
Ответов: 159
Профиль | | #2
Добавлено: 04.01.03 23:30
А где Ты заполняешь переменные SQL_Text_day, SQL_Text_year и SQL_Text_month? Это во-первых. Во-вторых проверь тип данных этих переменных. Если они Integer, то запись верна, а если String то нужно добавлять "'" .Т.е. Values ('" & SQL_Text_year & "','" & SQL_Text_month & "'," & i & ")"
Номер ответа: 3
Автор ответа:
vig11
ICQ: 213777061
Вопросов: 21
Ответов: 159
Профиль | | #3
Добавлено: 05.01.03 10:06
Синтаксис у Тебя вроде бы правильный. Но я не видел где Ты определяешь и заполняешь переменные SQL_Text_day, SQL_Text_month и SQL_Text_year.
поставь BreakPoint на строчку conn.Execute SQL_string и проверь какой String Ты получил. Потому, что Ты подставляешь переменные SQL_*** как Integer-ы, а в таблице поля определены тоже как Integer-ы или String-и или Date ? Ты должен заносить данные в таблицу в соответсвии с типом данных поля. Кроме того проверь нет ли у Тебя определение какого-либо поля как поля принимающего данные Unique (запрещает вносить повторно одинаковые записи) учитывая, что запись у Тебя идет в цикле может быть в этом причина?
Номер ответа: 4
Автор ответа:
Poletaev_R
Вопросов: 5
Ответов: 2
Профиль | | #4
Добавлено: 05.01.03 19:51