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

Вниз

Как в Дельфи перекопировать все поля одной записи в другую?   Найти похожие ветки 

 
Gamar   (2002-07-25 12:44) [0]

Как в Дельфи перекопировать все поля одной записи в другую?


 
asdf   (2002-07-25 12:46) [1]

Операторами SQL ...


 
Gamar   (2002-07-25 12:55) [2]

Не поскажешь, как именно. Плиз!..


 
Viewer   (2002-07-25 13:00) [3]

При чем тут Дельфи ?
"Скажи кто твой друг"
База какая ?
Или речь о record идет ?


 
SuperVK   (2002-07-25 14:05) [4]

2 Garmar:

Здесь в форуме мне советовали следующий вариант:

--------------------------------------------------------
var
s: string;
...
SetLength(s, Table.RecordSize);
StrLCopy(PChar(s), Table.ActiveBuffer, Table.RecordSize);
Table.Append;
StrLCopy(Table.ActiveBuffer, PChar(s), Table.RecordSize);
Table.Fields[0].Value := new_number;
Table.Post;

-----------(с) VedMed-----------------------------------

но он у меня отказался работать (копировал почему-то всего два первых поля). Может у тебя заработает.

Есть ещё вариант. Я же (после того, как не смог заставить работать вышеописанную функцию) написал примерно следующую функцию, которая у меня теперь этим (копированием) занимается. Сделано дубово, но зато работает и достаточно универсально:
//--------------------------------------------------------
//src_nmb - номер строки из которой надо копировать
//new_nmb - номер строки куда копировать
//table - таблица, строки которой надо скопировать
procedure TdmPers.CopyPersRecord(new_nmb: integer; src_nmb : integer; table : TFTable);
var
i, j : SmallInt;
var_val : array [0..31] of Variant;
begin
table.RecNo := src_nmb;

for i:=0 to table.FieldCount-1 do
if( table.Fields[i].FieldKind = fkData) then
var_val[i] := table.Fields[i].Value;

table.RecNo := new_nmb; //или table.insert()

table.Edit();
for i:=0 to table.FieldCount-1 do
if( table.Fields[i].FieldKind = fkData) then
table.Fields[i].Value := var_val[i];
table.Append();
end;
//---------------------------------------------------------------

PS: Я её немного изменил, так как в моя (исходная) функция копирует несколько строк из связной таблицы, так что может где-то косячёк какой, но в целом должно быть понятно.

А если надо просто вставить копию строки и не надо вообще никаких наворотов, то можно и вообще так:

Table.AppendRecord([
new_number
Table.Fields[1].Value,
Table.Fields[2].Value,
Table.Fields[3].Value,
Table.Fields[4].Value,
Table.Fields[5].Value,
...
Table.Fields[n].Value
]);
Table.Post();


 
Lord Warlock   (2002-07-25 14:10) [5]


> SuperVK © (25.07.02 14:05)


Кстати в последнем варианте Post делать не нужно



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2002.08.15;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.006 c
1-48111
GTA 3
2002-08-05 12:11
2002.08.15
Как записать опр. строку по счёту в файл?


14-48249
asafr
2002-07-19 15:43
2002.08.15
Сегодня последний день перед отпуском. Маюсь на работе...


3-47940
Дмитрий Жуков
2002-07-23 11:59
2002.08.15
Почему может виснуть многопоточный сервер приложений?


4-48355
Alexej
2002-05-12 08:10
2002.08.15
Запуск приложения без формы


1-48161
Андрусь
2002-08-01 19:06
2002.08.15
как отследить переменную по адресу в куче





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский