Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.07.2008, 06:22   #1
Spot
Пользователь
 
Аватар для Spot
 
Регистрация: 04.06.2008
Сообщений: 32
По умолчанию Экспорт из MySQL в Access

Доброе время суток!
Пытаюсь экспортировать данные из мускула в акцесс.
В акцессе есть таблица опред. структуры.
По запросу получаю данные из мускула и хочу записать в эту таблицу акцесс.
Есть ADOQuery Qins
Запрос составляю путем SQL.Add()
Перед ExecSQL предварительно делаю SQL.SaveToFile('Qins.sql');
ExecSQL не выполняется, пишет:
Цитата:
Не совпадает число значений запроса и число результирующих полей
Открываю Акцесс, создаю запрос.
Копирую весь текст из Qins.sql вставляю в запрос - выполняется
В чем проблема?
Spot вне форума Ответить с цитированием
Старый 07.07.2008, 20:48   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

не буду ничего утверждать, но Вы проверьте, похоже, в ADOQuery заданы поля (правой кнопкой на компоненте - ...Fields... - или просто двойной щелчок). Если поля есть - то попробуйте их удалить..
Serge_Bliznykov вне форума Ответить с цитированием
Старый 08.07.2008, 05:29   #3
Spot
Пользователь
 
Аватар для Spot
 
Регистрация: 04.06.2008
Сообщений: 32
По умолчанию

ADOQuery Qins вообще пустой, без полей, без параметров
Текст запроса составляю так:
Код:
with Qins do
      begin
        Close;
        SQL.Clear;
        SQL.Add('insert into zu');
        SQL.Add('values (');
        SQL.Add(inttostr(Qmaxzumaxkod.AsInteger+1)+', ');
        ..........
        SQL.Add(Quotedstr(formatdatetime('yyyy-mm-dd',date))+')');
        SQL.SaveToFile(path+'Qins.sql');
        if execsql>0 then
execsql не выполняется, выходит указанная выше ошибка.
Текст файла Qins.sql вставляю в конструкторе запросов в Акцессе - выполняется, т.е. кол-во полей таблицы и кол-во передаваемых значений совпадает
Spot вне форума Ответить с цитированием
Старый 08.07.2008, 15:38   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Spot, с этого и надо было начинать ;-)
Вы пытаетесь вставить данные в таблицу.
а, если я правильно понимаю, ADOQuery служит для ВЫБОРКИ данных...
попробуйте использовать ADOCommand:
ADOCommand1.CommandType := cmdText;
...
ADOCommand1.CommandText := 'Текст запроса';
...
ADOCommand1.Execute; // Выполняем запрос
Serge_Bliznykov вне форума Ответить с цитированием
Старый 08.07.2008, 19:19   #5
edgy
Форумчанин
 
Регистрация: 15.06.2008
Сообщений: 271
По умолчанию

На самом деле не только для выборки данных. Все будет зависеть какой метод в итоге будет вызываться:
Код:
//Только выборка данных
ADOQuery1.Open;
или
Код:
// Вставка, обновление, удаление данных
ADOQuery1.ExecSQL;
Spot, а сдается мне, что ошибка у вас все-таки в коде скрывается.
edgy вне форума Ответить с цитированием
Старый 08.07.2008, 21:52   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от edgy
На самом деле не только для выборки данных.
// Вставка, обновление, удаление данных
ADOQuery1.ExecSQL;
edgy, полностью с Вами согласен... действительно, операции тоже допустимы...


Spot, для начала я бы поставил пробел после zu - может это и не причём, но точно не повредит...
во-вторых, попробуйте просто вызвать ExecSQL (не пытаться сравнить значение с нулём - хотя я на 99% уверен, что это не причём, но, как говорится: - "если шансы на нуле, ищут злато и в золе" :-) )
И попробуйте привести insert к каноническому виду (с указанием в скобках перечня полей, куда идёт вставка).

Желаю удачи.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 10.07.2008, 05:56   #7
Spot
Пользователь
 
Аватар для Spot
 
Регистрация: 04.06.2008
Сообщений: 32
По умолчанию

Оказывается у меня были две одноименные папки с одноименными файлами акцесс(одна для другой утилиты, другая для моей. В другой папке файл access тоже имел таблицу zu, но с другой структурой)
Так, при запуске утилиты я должен был вызвать свой файл, а вызывал другую, поэтому и выходила ошибка.
А при выполнении запроса в самом акцессе вызвал свой файл, так запрос и выполнялся.

Итог: нужно именовать папки, файлы и таблицы уникальными именами

Извините за то, что озадачил.
Спасибо всем за ответы!

Последний раз редактировалось Spot; 10.07.2008 в 06:05.
Spot вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
экспорт отчета из Access 2007 в Excel. Возможно? perlik0 Microsoft Office Access 2 21.07.2008 13:18
Экспорт из Access в Excel, Экспорт из отчётов в таблицу Excel Kissedbythegod Microsoft Office Access 1 31.05.2008 22:15
Экспорт в Access е! Marisa Microsoft Office Access 3 31.01.2008 15:32
как выгрузить базу данных из MySQL в Access??? TRANE Помощь студентам 5 03.12.2007 13:22