![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как продублировать строку в IB базе ? [D5, IB6.x]
Andrey V. © (2003-03-16 19:55:00)Есть ли способ попроще чтобы создать копию строки в таблице ,
причем за исключением ключа ?
Andrey V. (2003-03-17 10:07:00) [1]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 я получаю
"вручную" , в смысле не через триггер. Исключительно для того чтобы знать после вставки его значение , чтоб спозиционироваться на него в Гриде после вставки
Alexandr (2003-03-17 06:09:00) [2]CloneRecord в FibPlus
alex55 (2003-03-16 23:47:00) [3]Ну это уже другое дело!
Я бы сделал что-нибудь такое (например):
Через TDataSet.Fields[i].AsString сформировал команду Insert, при этом изменив нужные значения.
Вообще существует масса вариантов. Какой лучше сильно зависит от того, как формируешь Primary Key.
Andrey V. (2003-03-16 21:43:00) [4]Есть таблица,в ней 75 полей :-/
Тыкаю пальцем в заданную строку и получаю новую строку, заполненую такими же данными.Но кроме ключа, который я естественно не могу продублировать , мне надо поменять ОДНО поле.
Переписывать поименно остальные 74 поля - ломает, да и поддерживать потом тяжело будет , если поля поплывут.
Попробую копать в сторону варианта , который предложил alex55.
Придется делать в два этапа , сначала , как он предложил и следом менять уже мое одно поле.
Одна неприятность правда там есть - хочется на момент инсерта знать значение ключа , чтоб потом по его значению проапдейтить нужное поле...
zacho (2003-03-16 20:04:00) [5]
> причем за исключением ключа ?
А что это значит ? Напиши нормально.
alex55 (2003-03-16 20:00:00) [6]А пробовал "
INSERT ... select * from" ? Если есть тригер, формирующий ключ, то должно работать. (Я сам не пробовал.)