Гость
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Синтаксическая ошибка в INSERT / 14 сообщений из 14, страница 1 из 1
15.05.2017, 13:30
    #39453103
syntaxerror
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синтаксическая ошибка в INSERT
Не могу найти синтаксическую ошибку в INSERT (((

В чем дело, что не так?

note был добавлен сегодня

Код: vbnet
1.
2.
3.
4.
5.
6.
          s2 = "INSERT INTO input_device (in_date, id_device, device_name, price, note) " _
                 & "VALUES (#" & Format(Me.in_date, "mm\/dd\/yyyy") & "#, " & Me.id_device _
                 & ", '" & Me.device_name & "', " & str(Me.price) & ", '" & Me.note & "')"


INSERT INTO input_device (in_date, id_device, device_name, price, note) VALUES (#05/15/2017#, 1, 'AQAQ',  12, 'AQAQ')
...
Рейтинг: 0 / 0
15.05.2017, 13:39
    #39453117
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синтаксическая ошибка в INSERT
Самое простое, что могло быть - наличие одинарной кавычки в поле note...
Но вообще могли бы процитировать сообщение об ошибке.
...
Рейтинг: 0 / 0
15.05.2017, 13:47
    #39453127
syntaxerror
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синтаксическая ошибка в INSERT
Akina,

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
    Me.Dirty = False
    Dim p As Integer
        p = Me.amount
    If Me.id_device.Column(2) = False And p > 1 Then
          Dim k As Integer
          For k = 1 To p - 1
          If k = 1 Then
             Dim s1 As String
                 s1 = "UPDATE input_device SET input_device.amount= 1" _
                    & " WHERE input_device.id_input_device= " & Me.id_input_device & ";"
             CurrentDb.Execute s1, dbFailOnError
          End If
          Dim s2 As String
' Работает
    '      s2 = "INSERT INTO input_device (in_date, id_device, device_name, price) " _
     '            & "VALUES (#" & Format(Me.in_date, "mm\/dd\/yyyy") & "#, " & Me.id_device _
      '           & ", '" & Me.device_name & "', " & str(Me.price) & ")"
       '          Debug.Print s2
    
' Не работает             
          s2 = "INSERT INTO input_device (in_date, id_device, device_name, price, note) " _
                 & "VALUES (#" & Format(Me.in_date, "mm\/dd\/yyyy") & "#, " & Me.id_device _
                 & ", '" & Me.device_name & "', " & str(Me.price) & ", '" & Me.note & "')"
                 Debug.Print s2                 
          CurrentDb.Execute s2, dbFailOnError
          Next
    End If
    Forms![main_device]![input_device].Form.Requery
    DoCmd.Close acForm, "input_device_new"




Me.device_name и Me.note - они оба текстовые поля, убрать одинарную кавычку не убрало проблему. Не понимаю логики, почему без note работает
...
Рейтинг: 0 / 0
15.05.2017, 13:49
    #39453130
syntaxerror,
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синтаксическая ошибка в INSERT
Сообщение

Run-time error ‘3134’
Syntax error in INSERT INTO statement.
...
Рейтинг: 0 / 0
15.05.2017, 14:00
    #39453142
Синтаксическая ошибка в INSERT
syntaxerror,,

а если в списке полей note заключить в квадратные скобки [note]?
...
Рейтинг: 0 / 0
15.05.2017, 14:09
    #39453149
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синтаксическая ошибка в INSERT
Debug.Print НАСТОЯЩЕГО s2, приводящего к показанной ошибке - в студию.
...
Рейтинг: 0 / 0
15.05.2017, 14:10
    #39453153
syntaxerror
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синтаксическая ошибка в INSERT
Здесь должна быть проблема на самом деле, сейчас исправлю

Код: vbnet
1.
If Me.id_device.Column(2) = False And p > 1 Then
...
Рейтинг: 0 / 0
15.05.2017, 14:16
    #39453160
syntaxerror
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синтаксическая ошибка в INSERT
Здесь всё в порядке

Код: vbnet
1.
If Me.id_device.Column(2) = False And p > 1 Then




Если k=1, то работает, а если больше, то выкидывает ошибку.

AkinaDebug.Print НАСТОЯЩЕГО s2, приводящего к показанной ошибке - в студию.

Это настоящий s2 (скопированный)
INSERT INTO input_device (in_date, id_device, device_name, price, note) VALUES (#05/15/2017#, 1, 'www', 300, 'asd')
...
Рейтинг: 0 / 0
15.05.2017, 14:26
    #39453167
syntaxerror
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синтаксическая ошибка в INSERT
Код: vbnet
1.
2.
3.
        s2 = "INSERT INTO input_device (in_date, id_device, device_name, price, [note]) " _
                 & "VALUES (#" & Format(Me.in_date, "mm\/dd\/yyyy") & "#, " & Me.id_device _
                 & ", '" & Me.device_name & "', " & str(Me.price) & ", '" & Me.note & "')"




Квадратная скобка мною оказывается не там была поставлена. Сейчас заработал. А почему понадобилась квадратная скобка?

Огромное спасибо за помощь.
...
Рейтинг: 0 / 0
15.05.2017, 14:34
    #39453172
xax_nv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синтаксическая ошибка в INSERT
Потому,что note - зарезервированное слово.
...
Рейтинг: 0 / 0
15.05.2017, 14:38
    #39453174
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синтаксическая ошибка в INSERT
Код: vbnet
1.
2.
3.
4.
Private Sub cmb_Click()
CurrentDb.Execute "INSERT INTO tbl ( ctl1, ctl2, ctl3 )" _
& " values ('" & Me.Поле0 & "'," & Me.Поле2 & ",#" & Format(Me.Поле4, "mm\/dd\/yy") & "#)"  'поле0-текст,поле2-число,поле4-дата
End Sub

так все работает
поля в таблице и в форме одного типа
...
Рейтинг: 0 / 0
15.05.2017, 14:49
    #39453182
Синтаксическая ошибка в INSERT
syntaxerror
Код: vbnet
1.
2.
3.
        s2 = "INSERT INTO input_device (in_date, id_device, device_name, price, [note]) " _
                 & "VALUES (#" & Format(Me.in_date, "mm\/dd\/yyyy") & "#, " & Me.id_device _
                 & ", '" & Me.device_name & "', " & str(Me.price) & ", '" & Me.note & "')"


Квадратная скобка мною оказывается не там была поставлена. Сейчас заработал. А почему понадобилась квадратная скобка? Видимо "note" входит в список зарезервированных слов, как, например, "date" или "group". Если бы вы это ваяли в конструкторе запроса, то он сам подставил бы скобки. Отсюда вывод - не ленитесь указывать скобки во всех именах полей.

По поводу INSERT INTO ... VALUES ... - и я неоднократно и одноклубники много раз советовали не применять эту конструкцию. Очень нежная, куча требований: формат даты и дробных чисел, наличию обрамляющих кавычек внутри строки, Null.
Проще и надежнее - открыть Recordset и добавить запись туда.
...
Рейтинг: 0 / 0
15.05.2017, 14:57
    #39453192
syntaxerror
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синтаксическая ошибка в INSERT
Анатолий ( Киев ),

Ок, спасибо за советы, постараюсь их учесть.
...
Рейтинг: 0 / 0
15.05.2017, 15:09
    #39453206
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синтаксическая ошибка в INSERT
xax_nvnote - зарезервированное словоЗабавно... во встроенной справке Офиса об этом ни слова, а вот на office.com в списке оно есть.
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Синтаксическая ошибка в INSERT / 14 сообщений из 14, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]