Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.04.03;
Скачать: CL | DM;

Вниз

Как продублировать строку в IB базе ?   Найти похожие ветки 

 
Andrey V.   (2003-03-16 19:55) [0]

Есть ли способ попроще чтобы создать копию строки в таблице ,
причем за исключением ключа ?


 
alex55 ©   (2003-03-16 20:00) [1]

А пробовал " INSERT ... select * from" ? Если есть тригер, формирующий ключ, то должно работать. (Я сам не пробовал.)


 
zacho ©   (2003-03-16 20:04) [2]


> причем за исключением ключа ?

А что это значит ? Напиши нормально.


 
Andrey V.   (2003-03-16 21:43) [3]

Есть таблица,в ней 75 полей :-/
Тыкаю пальцем в заданную строку и получаю новую строку, заполненую такими же данными.Но кроме ключа, который я естественно не могу продублировать , мне надо поменять ОДНО поле.
Переписывать поименно остальные 74 поля - ломает, да и поддерживать потом тяжело будет , если поля поплывут.
Попробую копать в сторону варианта , который предложил alex55.
Придется делать в два этапа , сначала , как он предложил и следом менять уже мое одно поле.
Одна неприятность правда там есть - хочется на момент инсерта знать значение ключа , чтоб потом по его значению проапдейтить нужное поле...



 
alex55 ©   (2003-03-16 23:47) [4]

Ну это уже другое дело!
Я бы сделал что-нибудь такое (например):
Через TDataSet.Fields[i].AsString сформировал команду Insert, при этом изменив нужные значения.
Вообще существует масса вариантов. Какой лучше сильно зависит от того, как формируешь Primary Key.


 
Alexandr ©   (2003-03-17 06:09) [5]

CloneRecord в FibPlus


 
Andrey V.   (2003-03-17 10:07) [6]

2 alex55
А asstring корректно представит "нестроковые" поля ?

В парадоксе я делал так (может кому пригодится)
procedure TMainForm.TableToTable(DestTable,SourcTable:tDataSet);
var
i,j:integer;
begin
if DestTable.State in [dsEdit,dsInsert] then
for I := 0 to DestTable.FieldCount - 1 do begin
if not (DestTable.Fields[I].DataType=ftAutoInc) then begin
for j:=0 to SourcTable.FieldCount - 1
do if DestTable.Fields[I].FieldName=SourcTable.Fields[j].FieldName
then DestTable.Fields[I].Assign(SourcTable.FieldByName(DestTable.Fields[I].FieldName));
end;
end;
end;


А что еще может быть в "массе вариантов", Primary Key я получаю
"вручную" , в смысле не через триггер. Исключительно для того чтобы знать после вставки его значение , чтоб спозиционироваться на него в Гриде после вставки



Страницы: 1 вся ветка

Текущий архив: 2003.04.03;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.015 c
1-6477
NetKnight
2003-03-24 09:45
2003.04.03
Предотвращение повторного запуска программы


8-6626
Zirus
2002-12-26 13:22
2003.04.03
Звук


1-6471
Фагот
2003-03-24 13:17
2003.04.03
Таблица символов


14-6778
Tano
2003-03-17 02:13
2003.04.03
Спецификация Plug and Play (программная и аппаратная)


1-6455
intell
2003-03-24 09:18
2003.04.03
Как обновить список файлов в FileListBox?