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

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

19.12.2010, 13:58. Показов 6535. Ответов 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
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.12.2010, 13:58
Ответы с готовыми решениями:

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

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

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

12
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
19.12.2010, 16:24
SlimFIT, а кто вам сказал, что запрос будет выглядеть так? вы вообще смотрели синтаксис sql-запросов? или просто угадываете?
Надо писать так:
Delphi
1
+'select * from Driver where id_driver=:p1';
1
2 / 2 / 1
Регистрация: 30.03.2009
Сообщений: 61
19.12.2010, 19:07  [ТС]
Изменил я код на этот:
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
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
19.12.2010, 20:44
SlimFIT, а порядок полей идентичный? и удалять ничего не надо было, просто указать в insert-е и в select-е списки полей, вот и все
0
 Аватар для arni
914 / 879 / 62
Регистрация: 06.01.2010
Сообщений: 2,367
Записей в блоге: 6
19.12.2010, 22:13
Цитата Сообщение от SlimFIT Посмотреть сообщение
insert into Del_Driver
select * from Driver
1) явно укажите перечень вставляемых полей по типу: insert into TABLE(FIELD1, FIELD2, ... FIELD_N)
2) уберите звездочку и явно перечислите поля в select
0
2 / 2 / 1
Регистрация: 30.03.2009
Сообщений: 61
20.12.2010, 15:49  [ТС]
ОО спасибо. Теперь INSERT работает как надо. Запись переносит в нужную таблицу, но выдает сообщение. Можно ли как-нибудь сделать так что бы не возникало исключение?
Миниатюры
Перенос записи из одной таблицы в другую  
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
20.12.2010, 16:05
SlimFIT, ну это уже проще, у вас при добавлении идет дублирование значений ключевого поля, что есть недопустимо... они должны быть уникальны в пределах таблицы
0
2 / 2 / 1
Регистрация: 30.03.2009
Сообщений: 61
20.12.2010, 18:07  [ТС]
Самое интересное, что в таблице Del_Driver нет записей. А когда я пытаюсь внести туда запись из таблицы Driver, то тут-то и вылезает исключение, хотя повторяющихся записей нет...
Миниатюры
Перенос записи из одной таблицы в другую  
0
 Аватар для arni
914 / 879 / 62
Регистрация: 06.01.2010
Сообщений: 2,367
Записей в блоге: 6
20.12.2010, 18:29
SlimFIT, приведите полностью текст запроса на вставку, который у вас получился
0
2 / 2 / 1
Регистрация: 30.03.2009
Сообщений: 61
20.12.2010, 19:02  [ТС]
Вот код:

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
914 / 879 / 62
Регистрация: 06.01.2010
Сообщений: 2,367
Записей в блоге: 6
20.12.2010, 19:27
добавьте DISTINCT в SELECT
SQL
1
SELECT DISTINCT id_driver,fio,dob,address,phone,auto,datap FROM Driver ...
если поможет, значит вы заблуждаетесь, относительно уникальности входных данных
0
2 / 2 / 1
Регистрация: 30.03.2009
Сообщений: 61
21.12.2010, 19:21  [ТС]
Ошибка не пропала(( Кто-нибудь знает как написать исключение которое бы это сообщение не выводило на экран или подменяло его другим?
0
151 / 151 / 3
Регистрация: 05.05.2010
Сообщений: 570
22.12.2010, 09:06
Delphi
1
2
3
4
5
try
....
except
...
end;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.12.2010, 09:06
Помогаю со студенческими работами здесь

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

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

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

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

Firebird 2.1.Перенос данных из одной таблицы в другую.
Всем привет! Firebird 2.1. Есть две таблицы с одинаковой структурой. Нужно в рантайме перенести из одной таблицы в другую записи,...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru