Главная страница
    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.007 c
3-47931
mazepa
2002-07-25 11:22
2002.08.15
SQL Help


4-48361
dubel
2002-06-05 17:30
2002.08.15
API


1-48093
matvey
2002-08-04 20:38
2002.08.15
BitBtn


1-48028
Fissher
2002-07-31 21:05
2002.08.15
Есть ли у MainMenu свойство Cursor? И как бы это сделать??


1-48157
quark
2002-07-29 21:58
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский