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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 15.10.2007, 11:08   #1
фЁдОр
Форумчанин
 
Аватар для фЁдОр
 
Регистрация: 06.09.2007
Сообщений: 908
По умолчанию Копирование данных из одной таблицы в другую!

Здравствуйте, уважаемые программисты!
Подскажите, пожалуйста, как мне скопировать данные из одной таблицы в другую SQL-кими командами. Насколько мне известно команды COPY нету, но может быть можно как-то присвоить значения одного поля для первой талицы в переменную, а потом эту переменную с присвоенными значеними поля занести в поле второй таблицы.
фЁдОр вне форума
Старый 15.10.2007, 14:06   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Советую иметь под рукой какой-нибудь справочник по SQL.
Ответ:
INSERT INTO Имя таблицы куда копируем [IN если внешняя БД] [(поле_1[, поле_2 [, ...]])]
SELECT [Имя таблицы или запроса, откуда копируются записи.]поле_1[, поле_2[, ...]
FROM [Имя таблицы, откуда вставляются данные]

SELECT...FROM вам известно. К этой выборке добавляется INSERT INTO...
mihali4 вне форума
Старый 15.10.2007, 17:02   #3
фЁдОр
Форумчанин
 
Аватар для фЁдОр
 
Регистрация: 06.09.2007
Сообщений: 908
По умолчанию

mihali4, я попробовал, но к сожалению у меня не вышло.
Вот, к примеру, у меня есть таблица table1 c полями firm1 и adress1 и есть таблица table2 c полями firm2 и adress2, нужно по нажатию кнопки занести данные из table1 в table2. Воспользовавшись Вашим советом я написал следующее:
procedure TForm1.Button1Click(Sender: TObject);
begin
ADOQuery1.Active:=false;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('INSERT INTO table2 (FIRM2, ADRESS2 )');
ADOQuery1.SQL.Add('SELECT FIRM1, ADRESS1');
ADOQuery1.SQL.Add('FROM TABLE1');
ADOQuery1.Active:=true;
end;
Не пойму где ошибка, программа запускается, но когда я нажимаю кнопку, компилятор указывает стрелку на end;

Последний раз редактировалось фЁдОр; 15.10.2007 в 17:05.
фЁдОр вне форума
Старый 15.10.2007, 17:20   #4
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

А у вас что, сами таблицы в базе имеют имена TABLE1 и TABLE2???
Ну нельзя же ключевые слова в именах использовать!
mihali4 вне форума
Старый 16.10.2007, 08:07   #5
фЁдОр
Форумчанин
 
Аватар для фЁдОр
 
Регистрация: 06.09.2007
Сообщений: 908
По умолчанию

Эти имена таблиц, я для примера привел, что бы как можно было понятнее изъяснить свою суть. Но поидее SQL скрип-то правильный, мне кажется, что я просто неправильно его использую в делфи.
фЁдОр вне форума
Старый 16.10.2007, 08:22   #6
Aristarh Dark
Форумчанин
 
Регистрация: 07.08.2007
Сообщений: 154
По умолчанию

имена и порядок полей выборки должны совпадать с именами и порядком вставляемых полей, ну и типы естественно.
Aristarh Dark вне форума
Старый 16.10.2007, 08:55   #7
фЁдОр
Форумчанин
 
Аватар для фЁдОр
 
Регистрация: 06.09.2007
Сообщений: 908
По умолчанию

ну типы понятно, что должны совпадать, но какая радница в именах полей?
фЁдОр вне форума
Старый 16.10.2007, 11:13   #8
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
procedure TForm1.Button1Click(Sender: TObject);
begin
ADOQuery1.Active:=false;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('INSERT INTO table2 (FIRM2, ADRESS2 )');
ADOQuery1.SQL.Add('SELECT FIRM1, ADRESS1');
ADOQuery1.SQL.Add('FROM TABLE1');
ADOQuery1.Active:=true;
end;
Немножко переделываем:
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
ADOQuery1.Active:=false;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('INSERT INTO table2 (FIRM2, ADRESS2) ');
ADOQuery1.SQL.Add('SELECT FIRM1, ADRESS1 ');
ADOQuery1.SQL.Add('FROM TABLE1');
ADOQuery1.ExecSQL;
ADOQuery1.SQL.Text:='SELECT * FROM table2';
ADOQuery1.Active:=true;//если у вас грид к нему подцеплен,
//увидите изменения :) 
end;
mihali4 вне форума
Старый 16.10.2007, 11:40   #9
фЁдОр
Форумчанин
 
Аватар для фЁдОр
 
Регистрация: 06.09.2007
Сообщений: 908
По умолчанию

Я добавил:

ADOQuery1.ExecSQL;
ADOQuery1.SQL.Text:='SELECT * FROM table2';
ADOQuery1.Active:=true;

DBGrid у меня поключен, запускаю прогу - она запускается, но когда я нажимаю на кнопку - начинает компилятор начинает ругаться, вернее синим цветом выделяется строка: ADOQuery1.SQL.Text:='SELECT * FROM table2';
фЁдОр вне форума
Старый 16.10.2007, 13:23   #10
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Дык вы имя своей таблицы подставьте вместо "table2"...
mihali4 вне форума
Закрытая тема


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
копирование данных из таблицы в таблицу Sack Microsoft Office Access 1 16.09.2008 05:59
Перенос данных из одной книги со многих листов в другую gavrylyuk Microsoft Office Excel 34 20.07.2008 21:39
пересылка данных из одной сети в другую AIst Работа с сетью в Delphi 5 08.07.2008 23:50
Копирование таблиц из одной базы в другую KuH БД в Delphi 7 27.09.2007 15:18
Отправлять данные из одной таблицы в другую Таня84 БД в Delphi 14 28.04.2007 23:23