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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.06.2013, 23:56   #1
Obnx
 
Регистрация: 08.01.2013
Сообщений: 5
Печаль перенос данных из dbgrid в dbgrid

Добрый вечер.
Есть программа, в которой необходимо скопировать импортированные из Excel данные из DBGrid'a в уже существующую таблицу, не удаляя при этом существующие в ней данные. Импорт данных работает хорошо, а вот как перенести данные не пойму. Пролистал уже существующие темы - не помогло.
Пробовал сделать так:
Код:
begin
ADOQuery2.Active:=false;
ADOQuery2.SQL.Clear;
ADOQuery2.SQL.Add('INSERT INTO KlientTable');
ADOQuery2.SQL.Add('SELECT *');
ADOQuery2.SQL.Add('FROM ''ADOQuery1''');
ADOQuery2.ExecSQL;
ADOQuery2.SQL.Text:='SELECT * FROM ''ADOQuery1''';
ADOQuery2.Active:=true;   
end;
Obnx вне форума Ответить с цитированием
Старый 26.06.2013, 07:40   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Позаписно читайте данные из ADOQuery1 и для каждой из них делайте INSERT

OFFTOP

FROM 'ADOQuery' еще видеть не приходилось
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 26.06.2013, 13:26   #3
Obnx
 
Регистрация: 08.01.2013
Сообщений: 5
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
OFFTOP

FROM 'ADOQuery' еще видеть не приходилось
если подскажите другой способ буду только признателен. я уже всю голову сломал, и все равно не выходит.
Obnx вне форума Ответить с цитированием
Старый 26.06.2013, 13:40   #4
Yurk@
Участник клуба
 
Аватар для Yurk@
 
Регистрация: 19.12.2007
Сообщений: 1,100
По умолчанию

Цитата:
Импорт данных работает хорошо
как-то не видно в коде чтобы эти данные брались для записи. где они?

Цитата:
если подскажите другой способ буду только признателен
не "другой", а "правильный" т.к. твой в принципе не жизнеспособный.
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ...
Yurk@ вне форума Ответить с цитированием
Старый 26.06.2013, 13:57   #5
Obnx
 
Регистрация: 08.01.2013
Сообщений: 5
По умолчанию

Код:
procedure TImportForm.ConnectToExcel;
var strConn: widestring;
begin
strConn:='Provider=Microsoft.Jet.OLEDB.4.0;' +
'Data Source=' +Edit1.Text+ ';' +
'Extended Properties=Excel 8.0;';
AdoConnection1.Connected:=False;
AdoConnection1.ConnectionString:=strConn;
try
AdoConnection1.Open; 
except
ShowMessage('Нет связи с Excel книгой);
raise;
end;
end;

procedure TImportForm.FetchData;
begin
ConnectToExcel;
AdoQuery1.Close;
AdoQuery1.SQL.Text:=Edit2.Text;
try
AdoQuery1.Open;
except
ShowMessage( 'Не могу выполнить Sql запрос ' + Edit1.Text +'!');
raise;
end;
end;
вот импорт.
Obnx вне форума Ответить с цитированием
Старый 26.06.2013, 14:02   #6
Yurk@
Участник клуба
 
Аватар для Yurk@
 
Регистрация: 19.12.2007
Сообщений: 1,100
По умолчанию

Цитата:
Код:
...
ConnectToExcel;
AdoQuery1.Close;
AdoQuery1.SQL.Text:=Edit2.Text;
try
AdoQuery1.Open;
...
а вот щас вобще в ступор вогнал
Код:
ConnectToExcel; // коннект к книге
AdoQuery1.Close; // закрыл кверю
AdoQuery1.SQL.Text:=Edit2.Text; // закинул в кверю запрос из Эдита (кстати, где текст запроса?)
AdoQuery1.Open; // открыл кверю
а где импорт? О_о
куда ты данные с экселя кидаешь?
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ...
Yurk@ вне форума Ответить с цитированием
Старый 26.06.2013, 21:17   #7
Obnx
 
Регистрация: 08.01.2013
Сообщений: 5
По умолчанию

данные из экселя кидаются в дбгрид по нажатию кнопки. запрос самый элементарный, select * from [Лист1$], данные в экселе текст и цифры, мне необходимо скопировать их в таблицу с такими же полями не заменяя старые данные. т.е. это будет микро-справочник
Obnx вне форума Ответить с цитированием
Старый 26.06.2013, 21:35   #8
Yurk@
Участник клуба
 
Аватар для Yurk@
 
Регистрация: 19.12.2007
Сообщений: 1,100
По умолчанию

ладно ... допустим в ADOQuery1 у тебя данные в экселя. тогда добавление будет выглядеть примерно так:
Код:
ADOQuery2.Close;
ADOQuery.SQL.Text := 'INSERT INTO table1 (pole1, pole2, pole3) VALUES (:pole1, :pole2, :pole3)';
ADOQuery1.Open;
while not ADOQuery1.Eof do
begin
  ADOQuery2.Parameters.ParamByName('pole1').Value := ADOQuery1.FieldByName('pole1').Value;
  ADOQuery2.Parameters.ParamByName('pole2').Value := ADOQuery1.FieldByName('pole2').Value;
  ADOQuery2.Parameters.ParamByName('pole3').Value := ADOQuery1.FieldByName('pole3').Value;
  ADOQuery2.ExecSQL;
  ADOQuery1.Next;
end;
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ...
Yurk@ вне форума Ответить с цитированием
Старый 26.06.2013, 22:38   #9
Obnx
 
Регистрация: 08.01.2013
Сообщений: 5
Хорошо

Цитата:
Сообщение от Yurk@ Посмотреть сообщение
ладно ... допустим в ADOQuery1 у тебя данные в экселя. тогда добавление будет выглядеть примерно так:
Код:
ADOQuery2.Close;
ADOQuery.SQL.Text := 'INSERT INTO table1 (pole1, pole2, pole3) VALUES (:pole1, :pole2, :pole3)';
ADOQuery1.Open;
while not ADOQuery1.Eof do
begin
  ADOQuery2.Parameters.ParamByName('pole1').Value := ADOQuery1.FieldByName('pole1').Value;
  ADOQuery2.Parameters.ParamByName('pole2').Value := ADOQuery1.FieldByName('pole2').Value;
  ADOQuery2.Parameters.ParamByName('pole3').Value := ADOQuery1.FieldByName('pole3').Value;
  ADOQuery2.ExecSQL;
  ADOQuery1.Next;
end;
Вы не представляете как я благодарен) все работает. Большое спасибо)
Obnx вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
перенос в DBGrid VladGorin БД в Delphi 0 27.05.2013 09:29
Перенос данных в другую форму по клику на строку в DBGrid hopax2009 Общие вопросы Delphi 1 24.05.2011 21:52
Перенос данных из DbGrid в Excel Nigadyai Общие вопросы Delphi 1 21.03.2010 02:31
перенос данных из DBGrid в DBGrid KingSize БД в Delphi 17 24.04.2009 09:30
Перенос данных из StringGrid-а в DBGrid artemavd БД в Delphi 16 21.03.2009 08:26