С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.89/28: Рейтинг темы: голосов - 28, средняя оценка - 4.89
SlimFIT
2 / 2 / 1
Регистрация: 30.03.2009
Сообщений: 61
1

Перенос записи из одной таблицы в другую

19.12.2010, 13:58. Просмотров 5134. Ответов 12
Метки нет (Все метки)

Хочу перенести запись из таблицы Driver в таблицу Del_Driver (у которой есть 2 дополнительных поля), но выдает ошибку "parameter objects is improperly defined. inconsistent or incomplete information was provided".

Delphi
1
2
3
4
5
6
7
8
9
10
11
procedure TForm7.Button2Click(Sender: TObject);
begin
ADOQuery1.Active:=False;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text:='insert into Del_Driver'
+'values (:p1,fio,dob,address,phone,auto,datep,:p1,:p2)'
+'from Driver where id_driver=:p1';
ADOQuery1.Parameters[0].Value:=Edit1.Text;
ADOQuery1.Parameters[1].Value:=Edit2.Text;
ADOQuery1.Parameters[2].Value:=Edit3.Text;
ADOQuery1.ExecSQL;
А если так попробовать:
Delphi
1
2
3
4
5
6
7
8
9
10
11
procedure TForm7.Button2Click(Sender: TObject);
begin
ADOQuery1.Active:=False;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text:='insert into Del_Driver'
+'values (id_driver,fio,dob,address,phone,auto,datep,:p1,:p2)'
+'from Driver where id_driver=:p1';
ADOQuery1.Parameters[0].Value:=Edit1.Text;
ADOQuery1.Parameters[1].Value:=Edit2.Text;
ADOQuery1.Parameters[2].Value:=Edit3.Text;
ADOQuery1.ExecSQL;
Выдает ошибку "incorrect syntax near '@P1' ". Помогите пожалуйста разобраться что тут надо изменить чтобы заработало. Заранее спасибо.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.12.2010, 13:58
Ответы с готовыми решениями:

Перенос таблицы из одной БД в другую
Добрый день. Столкнулся с проблемой пересноса таблицы из одно БД в другую...

Перенос данных из одной таблицы в другую
Как перенести строку из одной таблице в другую бд акцесс делфи, кнопкой в делфи...

Перенос данных из одной таблицы в другую
День добрый всем. У меня возник вопрос, возможно ли при переносе данных из...

Перенос данных из одной таблицы в другую
У меня проблема. Вношу данные в одну таблицу, потом по нажатию кнопки, эти...

Перенос информации из одной таблицы в другую
Есть DbGrid привязанный к таблице, нужно что бы при двойном нажатии на строку,...

12
Lord_Voodoo
Супер-модератор
8611 / 2248 / 133
Регистрация: 07.03.2007
Сообщений: 10,840
Завершенные тесты: 1
19.12.2010, 16:24 2
SlimFIT, а кто вам сказал, что запрос будет выглядеть так? вы вообще смотрели синтаксис sql-запросов? или просто угадываете?
Надо писать так:
Delphi
1
+'select * from Driver where id_driver=:p1';
1
SlimFIT
2 / 2 / 1
Регистрация: 30.03.2009
Сообщений: 61
19.12.2010, 19:07  [ТС] 3
Изменил я код на этот:
Delphi
1
2
3
4
5
6
ADOQuery1.Active:=False;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text:='insert into Del_Driver '
+'select * from Driver where Driver.id_driver='+Edit1.Text;
ADOQuery1.ExecSQL;
ADOQuery1.Active:=True;
Но при выполнении выдает ошибку Column name or number of supplied values does not match table definition. Таблиц Driver_Del отличается от Driver наличием 2 полей, которые могут быть NULL. Но остальные поля идентичны. Удалил из таблицы Driver_Del лишние поля, но ошибка почемуто осталась. Может кто-нибудь подсказать что делать?
0
Lord_Voodoo
Супер-модератор
8611 / 2248 / 133
Регистрация: 07.03.2007
Сообщений: 10,840
Завершенные тесты: 1
19.12.2010, 20:44 4
SlimFIT, а порядок полей идентичный? и удалять ничего не надо было, просто указать в insert-е и в select-е списки полей, вот и все
0
arni
907 / 872 / 62
Регистрация: 06.01.2010
Сообщений: 2,367
Записей в блоге: 6
19.12.2010, 22:13 5
Цитата Сообщение от SlimFIT Посмотреть сообщение
insert into Del_Driver
select * from Driver
1) явно укажите перечень вставляемых полей по типу: insert into TABLE(FIELD1, FIELD2, ... FIELD_N)
2) уберите звездочку и явно перечислите поля в select
0
SlimFIT
2 / 2 / 1
Регистрация: 30.03.2009
Сообщений: 61
20.12.2010, 15:49  [ТС] 6
ОО спасибо. Теперь INSERT работает как надо. Запись переносит в нужную таблицу, но выдает сообщение. Можно ли как-нибудь сделать так что бы не возникало исключение?
0
Миниатюры
Перенос записи из одной таблицы в другую  
Lord_Voodoo
Супер-модератор
8611 / 2248 / 133
Регистрация: 07.03.2007
Сообщений: 10,840
Завершенные тесты: 1
20.12.2010, 16:05 7
SlimFIT, ну это уже проще, у вас при добавлении идет дублирование значений ключевого поля, что есть недопустимо... они должны быть уникальны в пределах таблицы
0
SlimFIT
2 / 2 / 1
Регистрация: 30.03.2009
Сообщений: 61
20.12.2010, 18:07  [ТС] 8
Самое интересное, что в таблице Del_Driver нет записей. А когда я пытаюсь внести туда запись из таблицы Driver, то тут-то и вылезает исключение, хотя повторяющихся записей нет...
0
Миниатюры
Перенос записи из одной таблицы в другую  
arni
907 / 872 / 62
Регистрация: 06.01.2010
Сообщений: 2,367
Записей в блоге: 6
20.12.2010, 18:29 9
SlimFIT, приведите полностью текст запроса на вставку, который у вас получился
0
SlimFIT
2 / 2 / 1
Регистрация: 30.03.2009
Сообщений: 61
20.12.2010, 19:02  [ТС] 10
Вот код:

Delphi
1
2
3
4
5
6
7
8
begin
ADOQuery1.Active:=False;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text:='insert into Del_Driver(id_driver,fio,dob,address,phone,auto,datap) '
+'select id_driver,fio,dob,address,phone,auto,datap from Driver where Driver.id_driver='+Edit1.Text;
ADOQuery1.ExecSQL;
ADOQuery1.Active:=True;
end;
0
arni
907 / 872 / 62
Регистрация: 06.01.2010
Сообщений: 2,367
Записей в блоге: 6
20.12.2010, 19:27 11
добавьте DISTINCT в SELECT
SQL
1
SELECT DISTINCT id_driver,fio,dob,address,phone,auto,datap FROM Driver ...
если поможет, значит вы заблуждаетесь, относительно уникальности входных данных
0
SlimFIT
2 / 2 / 1
Регистрация: 30.03.2009
Сообщений: 61
21.12.2010, 19:21  [ТС] 12
Ошибка не пропала(( Кто-нибудь знает как написать исключение которое бы это сообщение не выводило на экран или подменяло его другим?
0
harmless
147 / 147 / 2
Регистрация: 05.05.2010
Сообщений: 569
22.12.2010, 09:06 13
Delphi
1
2
3
4
5
try
....
except
...
end;
0
22.12.2010, 09:06
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.12.2010, 09:06

Перенос данных из одной таблицы в другую
Привет всем, имеется для таблицы, одна - эксель. Подключается через...

Перенос строки из одной таблицы в другую
Здравствуйте форумчане! Делаю в универ программку, по теме "Автоматизация...

Перенос данных из одной таблицы в другую Delphi
Даны 2 идентичные таблицы Access, 1 с данными 2 пустая, связанные с delphi...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru