Модераторы: mihanik
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Синтаксическая ошибка в инструкции Insert Into 
V
    Опции темы
Aline
Дата 14.5.2013, 12:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 470
Регистрация: 22.7.2005
Где: Таруса

Репутация: нет
Всего: нет



Мне надо перекинуть таблицу из Excel в Access. Нашла пример как это сделать,пытаюсь реализовать у себя и всё никак: вылезает постоянно эта ошибка. Уже вроде все данные привела к требуемому виду и всё равно ругается. Что не так?
Код

Private Sub cbImport_Click()
  Dim cnnDB As ADODB.Connection
  Dim strPath, s1, s2 As String
  Dim time, LastRow As Long
  Dim sw_on, sw_bat As Integer
  
  strPath = Cells(1, 12).Value
  
  Set cnnDB = New ADODB.Connection
  With cnnDB
   .Provider = "Microsoft.Jet.OLEDB.4.0"
   .Open strPath
  End With
  
  LastRow = GetLastRange(Sheets(2)).Row
  
  For l = 2 To LastRow - 2
 
    Dim Query As String
    
    s1 = Sheets(2).Cells(l, 13)
    s1 = Format(s1, "\#mm\/dd\/yyyy\#")
    
    time = Hour(Sheets(2).Cells(l, 11).Value) * SecPerHour + Minute(Sheets(2).Cells(l, 11).Value) * SecPerMinute + Second(Sheets(2).Cells(l, 11).Value)
           
    If Sheets(2).Cells(l, 6) = "on" Then
        sw_on = 1
    Else: sw_on = 0
    End If
    
    If Sheets(2).Cells(l, 7) = "on" Then
        sw_bat = 1
    Else: sw_bat = 0
    End If
    
    Query = "Insert INTO Work ( DateWork,Chanal,TimeWork,Peregrev,KZ,Sw_ON,Sw_Battery,Ubort,UAKB) VALUES ( " & s1 & " , """ & Sheets(2).Cells(l, 3) & """, " & time & ", " & Sheets(2).Cells(l, 8) & ", " & Sheets(2).Cells(l, 9) & ", " & sw_on & ", " & sw_bat & ", " & Sheets(2).Cells(l, 4) & " , " & Sheets(2).Cells(l, 5) & " ) "
    
    Set cmd = New ADODB.Command
    
    With cmd
      .CommandText = Query
      .ActiveConnection = cnnDB
      .Execute
    End With
  Next
  
  Set cmd = Nothing
  ' закрываем доступ к базе
  cnnDB.Close
  Set cnnDB = Nothing
 
End Sub



В переменно Query получается вот что:
"Insert INTO Work ( DateWork,Chanal,TimeWork,Peregrev,KZ,Sw_ON,Sw_Battery,Ubort, UAKB) VALUES ( #04/17/2013# , "БМ_5", 100, 0, 0, 1, 1, 1, 1)" 

Еще такой момнт: в БД поле Chanal - это список из связаной таблицы, там указан номер канала, его имя и номер прибора, может дело в этом? Неправильно устанавливаю значение поля? А как тогда устнавливать? В самом поле Chanal отображается наименование канала 

Во вложении исходник

Присоединённый файл ( Кол-во скачиваний: 4 )
Присоединённый файл  щду.rar 163,44 Kb
PM MAIL   Вверх
Akina
Дата 14.5.2013, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 26
Всего: 454



Цитата(Aline @  14.5.2013,  13:40 Найти цитируемый пост)
В переменно Query получается вот что:
Код

"Insert INTO Work ( DateWork,Chanal,TimeWork,Peregrev,KZ,Sw_ON,Sw_Battery,Ubort, UAKB) VALUES ( #04/17/2013# , "БМ_5", 100, 0, 0, 1, 1, 1, 1)"
 

Ещё вопросы будут?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Aline
Дата 14.5.2013, 13:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 470
Регистрация: 22.7.2005
Где: Таруса

Репутация: нет
Всего: нет



Akina, в смысле?
PM MAIL   Вверх
Akina
Дата 14.5.2013, 13:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 26
Всего: 454



См. подсветку.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
FINANSIST
Дата 14.5.2013, 13:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Статус: Жив
**


Профиль
Группа: Участник
Сообщений: 526
Регистрация: 11.4.2008
Где: Москва

Репутация: 13
Всего: 23



Делаем debug.print Query 
копируем полученный sql текст из immediate window
исполняешь его в access и смотришь - какой результат:
если access ругается на sql - дело в синтаксисе sql, если добавляет нормально - в синтаксисе vba


--------------------
“...Брали корову рыжую одну, отдавать будем корову рыжую одну, чтобы не нарушать отчетности”
Эдуард Успенский, “Каникулы в Простоквашино”
PM MAIL ICQ   Вверх
Aline
Дата 14.5.2013, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 470
Регистрация: 22.7.2005
Где: Таруса

Репутация: нет
Всего: нет



Akina, "БМ_5"?
И что в нём? Как тогда туда загнать значение?

Добавлено через 1 минуту и 53 секунды
FINANSIST, какие страшные слоа Вы написали smile еще бы в них разобраться,я с VBA на "Вы"

Это сообщение отредактировал(а) Aline - 14.5.2013, 13:44
PM MAIL   Вверх
Akina
Дата 14.5.2013, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 26
Всего: 454



Цитата(Aline @  14.5.2013,  14:44 Найти цитируемый пост)
И что в нём?

Вы используете ADO. Так будьте любезны полностью соответствовать его требованиям.

А вообще данные из Эксела в Аксесс переносятся тупым импортом.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Aline
Дата 14.5.2013, 13:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 470
Регистрация: 22.7.2005
Где: Таруса

Репутация: нет
Всего: нет



Akina, мне тупой импорт не нужен. Таблица в Excel не совсем совпадает с таблицей БД,поэтому надо заполнять по полям.
И не будете ли Вы так любезны объяснить, что надо сделать согласно требованиям?
PM MAIL   Вверх
Akina
Дата 14.5.2013, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 26
Всего: 454



Цитата(Aline @  14.5.2013,  14:57 Найти цитируемый пост)
что надо сделать согласно требованиям? 

Во-первых, замените кавычки на одинарные. Уйдёт неоднозначность.
Во-вторых, отладьте, как правильно сказал FINANSIST, запрос в Аксессе, и лишь потом переносите его в свою программу.

Но главное - разберитесь в найденном примере самым доскональным образом. Чтобы каждая буква, скобка и пробел стали понятны.



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Aline
Дата 14.5.2013, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 470
Регистрация: 22.7.2005
Где: Таруса

Репутация: нет
Всего: нет



Akina, мне суть понятна, что и как делается. Я не знаю тонкости так сказать языка,потому что с ним сталкиаюсь всего второй раз, к тому же перый раз был 4 года назад и задача была другая.

Цитата(Akina @  14.5.2013,  14:38 Найти цитируемый пост)
Во-первых, замените кавычки на одинарные. Уйдёт неоднозначность

У меня все запросы построены с кавычками,а не с апострофами, на апострофы программа ругается.

Добавлено через 4 минуты и 41 секунду
FINANSIST, можно подробнее где и как это делаем?

Цитата(FINANSIST @  14.5.2013,  13:42 Найти цитируемый пост)
Делаем debug.print Query 


PM MAIL   Вверх
Aline
Дата 14.5.2013, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 470
Регистрация: 22.7.2005
Где: Таруса

Репутация: нет
Всего: нет



В общем в Access я запустила запрос:
Insert INTO Work ( DateWork,Chanal,TimeWork,Peregrev,KZ,Sw_ON,Sw_Battery,Ubort,UAKB) VALUES ( #04/17/2013# ,"БМ_5", 100, 0, 0, 1, 1, 1, 1)

появилось сообщение о неправильности преобразования типа, тогда я вместо "БМ_5" поставила  "1" - индекс записи из связанной таблицы.

Insert INTO Work ( DateWork,Chanal,TimeWork,Peregrev,KZ,Sw_ON,Sw_Battery,Ubort,UAKB) VALUES ( #04/17/2013# , 1, 100, 0, 0, 1, 1, 1, 1)

 Запрос прошел и добавилась строка. Но этот же запрос не сработал в Excel: он мне выдал ту же самую ошибку и после этого запрос перестал выполняться в Access :(

Добавлено через 12 минут и 56 секунд
Разобралась! Всем спасибо за помощь!


Как я и подозревала, во-первых дело было во втором параметре, туда надо передавать индекс записи из списка. Во вторых Work я взяла в квадрытные скобки, ну и самое элементарное не хватало пробовелов перед круглыми скобками. Теперь запрос работает и в Excel, записи добавляются в БД smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование, связанное с MS Office"
mihanik staruha

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами



  • Несанкционированная реклама на форуме запрещена
  • Пожалуйста, давайте своим темам осмысленный, информативный заголовок. Вопль "Помогите!" таковым не является.
  • Чем полнее и яснее Вы изложите проблему, тем быстрее мы её решим.
  • Оставляйте свои записи в "Книге отзывов о работе администрации"
  • А вот тут лежит FAQ нашего подраздела


Если Вам понравилась атмосфера форума, заходите к нам чаще!
С уважением mihanik и staruha.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программирование, связанное с MS Office | Следующая тема »


 




[ Время генерации скрипта: 0.0551 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.