Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как продублировать строку в 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" ? Если есть тригер, формирующий ключ, то должно работать. (Я сам не пробовал.)


Наверх

Титульная страница Поиск, карта сайта Написать письмо