Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > запрос на копирование


Автор: malayka 12.6.2010, 22:41
делаю запрос на копирование данных из одной табл в другую, работаю ado+delphi
на след код 
Код

datamodule1.parol.sql.Clear;
datamodule1.parol.SQL.add('insert into отчисленные');
datamodule1.parol.SQL.add('select * from студент');
datamodule1.parol.SQL.add('where студент.кодстудента = datamodule1.adoquery1кодстудента');
datamodule1.parol.Open;


выдает ошибку параметр "datamodule1.adoquery1кодстудента" не имеет значения по умолчанию, где допустил ошибку??

п.с. адокьюэри - это запрос где списки студентов, сравниваю первичные ключи

пытался делать копирование с помощью методов тайбл
Код

  datamodule1.adotable2.Append;
    datamodule1.adotable2.edit;
    for i:= 0 to datamodule1.std.FieldCount-1 do
      datamodule1.adotable2.Fields[i]:= datamodule1.std.Fields[i];
   datamodule1.adotable2.Post;


тут он пишет что код студента не может быть модифицирован, ХЕЛП

Автор: Данкинг 12.6.2010, 22:45
Цитата(malayka @  12.6.2010,  23:41 Найти цитируемый пост)
datamodule1.adoquery1кодстудента"

А точка здесь не нужна, что ли? smile 
Код

datamodule1.adoquery1.кодстудента

Автор: malayka 12.6.2010, 22:49
не, с точкой без, та же шняга((( в кьюэри оно так называется просто..

Автор: Antimol 12.6.2010, 22:56
Цитата(Данкинг @ 12.6.2010,  22:45)
Цитата(malayka @  12.6.2010,  23:41 Найти цитируемый пост)
datamodule1.adoquery1кодстудента"

А точка здесь не нужна, что ли? smile 
Код

datamodule1.adoquery1.кодстудента

Нет, там точка ненужна по видимому он обращается напрямую к полю.

Добавлено через 3 минуты и 40 секунд
Цитата

datamodule1.parol.SQL.add('where студент.кодстудента = datamodule1.adoquery1кодстудента');


Эта запись передает вот такой запрос: 
Код

... where студент.кодстудента = datamodule1.adoquery1кодстудента


а нужно передать сам код:
Код

datamodule1.parol.SQL.add('where студент.кодстудента = '+datamodule1.adoquery1кодстудента.AsInteger);


Автор: malayka 12.6.2010, 23:19
на asinteger ругается, c asstring-ом тока пашет) еще выдает такую ошибочку
"parol: commandText does not return a result set" к чему бы это? хотя это ерунда, данные копируются все-таки)) я ее убрал через try - except. спс за помощь

Добавлено через 3 минуты и 7 секунд
оО я тут наткнулся на темку в форуме одном, говорится там что нужно вместо open ExecSQL использовать)) все отлавливать ошибку больше нет нужды

Автор: Antimol 12.6.2010, 23:29
А, ну да все верно, там AsString. 
Цитата

оО я тут наткнулся на темку в форуме одном, говорится там что нужно вместо open ExecSQL использовать)) все отлавливать ошибку больше нет нужды

Для запросов типа 
Код

Insert, Delete,update

нужно использовать ExecSQL,
а в запросах:
Код

select 

Open, или устанавливать компоненту свойство Active

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)