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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.08.2012, 17:22   #1
d0Sia
 
Регистрация: 02.08.2012
Сообщений: 3
Вопрос Проблемы с выгрузкой в access

Создаю таблицу в access

Код:
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add
    ('CREATE TABLE proiz_pr (name char(100), emk real, vol real)');
  ADOQuery1.ExecSQL;
делаю запрос к базе, и нисертом запихиваю в созданную таблицу.

sql запрос

Код:
SELECT  B_PRODUCT.NAME,  B_LIST_PRODUCT2.CAPACITY, B_LIST_PRODUCT.COUNT_LITER
FROM
B_COMPANY
,B_WAYBILL
,B_LIST_PRODUCT
, B_LIST_PRODUCT2
,B_PRODUCT
WHERE 
B_COMPANY.NODE_ID = B_WAYBILL.COMPANY1_NID
AND B_COMPANY.ID = B_WAYBILL.COMPANY1_ID
AND B_WAYBILL.ID = B_LIST_PRODUCT.WAYBILL_ID
AND B_WAYBILL.NODE_ID = B_LIST_PRODUCT.WAYBILL_NID
AND B_LIST_PRODUCT.NODE_ID = B_LIST_PRODUCT2.LST_PROD_NID
AND B_LIST_PRODUCT.ID = B_LIST_PRODUCT2.LST_PROD_ID
AND  B_LIST_PRODUCT.PRODUCT_ID = B_PRODUCT.ID
AND B_WAYBILL.TYPE_WAYBILL IN ('P','X','A','Y','E','F','H','V') 
AND to_date(b_waybill.date_waybill,'dd-mm-rr') between '01.06.2012' and '30.06.2012'
AND B_WAYBILL.DECL_PROD_ID Is Not Null 
AND (B_LIST_PRODUCT2.LKVP=311)
Код:
    Memo1.Lines.Clear;
    Memo1.Lines.LoadFromFile('SQL\proiz_pr.sql');
    ADODataSet1.CommandText := Memo1.Lines.Text;
    ADODataSet1.CommandType := cmdText;
    ADODataSet1.Open;
    Memo2.Lines.Add(IntToStr(ADODataSet1.RecordCount));
    Memo2.Lines.Add('Запрос к базе завершен ' + TimeToStr(Time));
    Memo2.Lines.Add('Началось сохранение данных запроса' + TimeToStr(Time));
    ADODataSet1.First;
    ProgressBar1.Min := 1;
    ProgressBar1.Max := ADODataSet1.RecordCount;
    ADOQuery1.SQL.Clear;
    while not ADODataSet1.Eof do
    begin
      ADOQuery1.SQL.Add('INSERT INTO proiz_pr VALUES (' + #39 +
          ADODataSet1.FieldByName('name').AsString + #39 + ',' + FloatToStr
          (ADODataSet1.FieldByName('capacity').AsSingle) + ',' + FloatToStr
          (ADODataSet1.FieldByName('count_liter').AsSingle) + ')');
      ADOQuery1.ExecSQL;
      ADOQuery1.SQL.Clear;
      ADODataSet1.Next;
      ProgressBar1.Position := ProgressBar1.Position + 1;
    end;
    ADODataSet1.Close;
    Memo2.Lines.Add('Сохранение данных запроса завершено');
При запихивании выдает ошибку "Не совпадает число значений запроса и число результирующих полей"
Помогите плиз разобраться
d0Sia вне форума Ответить с цитированием
Старый 02.08.2012, 17:26   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

FloatToStr небось запятую в качестве десятичной точки генерит. Лучше параметризировать запрос для избежания подобных накладок
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 02.08.2012, 19:41   #3
d0Sia
 
Регистрация: 02.08.2012
Сообщений: 3
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
FloatToStr небось запятую в качестве десятичной точки генерит. Лучше параметризировать запрос для избежания подобных накладок
Подскажите как это сделать =)
d0Sia вне форума Ответить с цитированием
Старый 02.08.2012, 20:12   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Примерно так
Код:
ADOQuery1.SQL.Text:='INSERT INTO proiz_pr VALUES (:Name,:capacity,:count_liter)';
ADOQuery1.Parameters.ParamByName('Name').Value:=ADODataSet1.FieldByName('name').AsString;
ADOQuery1.Parameters.ParamByName('capacity').Value:=ADODataSet1.FieldByName('capacity').AsFloat;
ADOQuery1.Parameters.ParamByName('count_liter').Value:=ADODataSet1.FieldByName('count_liter').AsFloat;
ADOQuery1.ExecSQL;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 03.08.2012, 10:39   #5
d0Sia
 
Регистрация: 02.08.2012
Сообщений: 3
По умолчанию

Аватар, спасибо заработало.
d0Sia вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема в выгрузкой результата ADOQuery в txt studentw124 Помощь студентам 0 02.06.2011 14:41
проблема с выгрузкой dll apodgorny Общие вопросы Delphi 3 11.04.2009 12:12
Проблемы с отчетом в Access iid2007 Microsoft Office Access 5 30.06.2008 14:56
Проблема с выгрузкой в Excel!!! DartVader БД в Delphi 3 19.06.2007 09:50