Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.04.03;
Скачать: [xml.tar.bz2];

Вниз

Как продублировать строку в 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.008 c
3-6321
StarCon
2003-03-17 13:44
2003.04.03
ADO и DBF


3-6389
ava
2003-03-15 13:14
2003.04.03
Формат данных


1-6425
hgfdsa
2003-03-23 13:08
2003.04.03
HEX


1-6462
Sergey_
2003-03-24 11:15
2003.04.03
в чём отличие TEdit.text и string ?


14-6794
Алексей Валерьевич
2003-03-18 00:50
2003.04.03
Подскижите почему неработает??(статья)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский