Главная страница
    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.008 c
3-47917
the-best-officeman
2002-07-28 21:54
2002.08.15
Как поставить в таблицу вместо True(Flase). флажок - CheckBox ?


1-48049
dera
2002-08-04 09:06
2002.08.15
Как можно узнать раскладку клавы?


1-48153
lpp
2002-07-31 11:43
2002.08.15
Как сделать форму для ввода пароля?


1-48201
RangerBetta
2002-08-02 19:12
2002.08.15
Посоветуйта какой отчет использовать


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