Главная страница
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.086 c
1-6525
OlegM
2003-03-21 06:06
2003.04.03
Комп и дистанционное управление


14-6726
Костя Панкратов
2003-03-16 14:05
2003.04.03
Как найти средневзвешенную стоимость???


4-6835
KLOPHN
2003-02-03 03:55
2003.04.03
Как сделать чтоб приложение стартовало вместе с виндой


3-6416
Suharew
2003-03-16 21:21
2003.04.03
Как удалить все записи таблицы с помощью SQL запроса


6-6643
Nicky
2003-02-06 20:14
2003.04.03
аутентификация на локальной проксе