Текущий архив: 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.45 MB
Время: 0.009 c