Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.08.15;
Скачать: CL | DM;

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.45 MB
Время: 0.007 c
4-48359
Volj
2002-06-05 14:38
2002.08.15
Как мне получить процент свободных ресурсов в Win98?


6-48243
bob1906
2002-05-31 00:11
2002.08.15
Помогите написать прогу типа BackOrifice для Windows


3-48013
pum5a
2002-07-27 16:52
2002.08.15
SELECT TOP 25


4-48376
stainer
2002-06-12 16:11
2002.08.15
веб на рабочем столе


14-48318
Igor_thief
2002-07-19 13:19
2002.08.15
Народ, как изменить вид hint a?





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