Вниз
Скачать: CL | DM;

Добавлять записи из одного TRxMemoryData в другой   Найти похожие ветки 

← →
DelphiLexx ©   (2006-08-08 11:01) [0]

Есть два TRxMemoryData, имеющий одинаковый набор полей.
Как кратко добавить записи из второго в первый TRxMemoryData.
Я делаю так (но мне кажется есть способ короче):

   with mds2 do
   begin
     First;
     while not Eof do
     begin
       mds1.Append;
       mds1.FieldByName("Field1").AsString :=
         FieldByName("Field1").AsString;
       mds1.FieldByName("Field2").AsInteger :=
         FieldByName("Field2").AsInteger;
       mds1.FieldByName("Field3").AsString :=
         FieldByName("Field3").AsString;
       mds1.FieldByName("Field4").AsFloat :=
         FieldByName("Field4").AsFloat;
       mds1.FieldByName("Field5").AsFloat :=
         FieldByName("Field5").AsFloat;
       Next;
     end;
   end;
mds1.Post;


← →
ORMADA ©   (2006-08-08 11:05) [1]

mds1..LoadFromDataSet(Dataset, 0, lmCopy);


← →
alexeis ©   (2006-08-08 11:05) [2]

insert into таблица1 select * from таблица2


← →
ORMADA ©   (2006-08-08 11:06) [3]

lmCopy также копирует стурктуру таблицы


← →
DelphiLexx ©   (2006-08-08 11:06) [4]


> mds1..LoadFromDataSet(Dataset, 0, lmCopy);

Он разве добавляет записи, мне кажется, что перезаписывает.


← →
ORMADA ©   (2006-08-08 11:07) [5]

2 alexeis
не гони!
используемый компонент 2 TRxMemoryData!


← →
ORMADA ©   (2006-08-08 11:10) [6]

тады
попробуй
lmAppend


← →
StriderMan ©   (2006-08-08 11:10) [7]

сделай процедуру типа

procedure DS2DS(ASrc, ADest: TDataSet);
var
 i: integer
begin
 for i := 0 to ASrc.FieldCount - 1 do
   ADest.Fields[i].Value := ASrc.Fields[i].Value;
end;


← →
DelphiLexx ©   (2006-08-08 11:11) [8]


> тады
> попробуй
> lmAppend

Теперь правильно.
Скажи пожалуйста, а способ с
"insert into таблица1 select * from таблица2"
не эфективнее ли?


← →
ORMADA ©   (2006-08-08 11:12) [9]

в исходники Rx заглянуть не судьба ?
в частности как сделан LoadFromDataSet


← →
ORMADA ©   (2006-08-08 11:13) [10]

может ты изначально будешь правильно заполнять датасет ?
а не слеплять


← →
ORMADA ©   (2006-08-08 11:31) [11]

кстати ты сам себе противоречишь

>Есть два TRxMemoryData, имеющий одинаковый набор полей.

>Скажи пожалуйста, а способ с
"insert into таблица1 select * from таблица2"
не эфективнее ли?

ты видел возможность выполнять скуль над TRxMemoryData и получать результирующий датасет ?
я-нет!
есть конечно всякие sql mem table кот натравливаются на любые датасеты и позволяют использовать sql для выборки но думаю они врядли тебе нужны
:)



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

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.028 c
3-1155229904
serko
2006-08-10 21:11
2006.10.08
Выбор по дате!


2-1159118001
Gloomer
2006-09-24 21:13
2006.10.08
Доступ к файлу, занятому другим процессом


1-1156488798
stone
2006-08-25 10:53
2006.10.08
Service


15-1158251137
Чародей
2006-09-14 20:25
2006.10.08
OpenGL® SuperBible, Third Edition


9-1137021348
Buffer
2006-01-12 02:15
2006.10.08
GLScene Buffer Как узнать видна ли такая то точка или нет?




   Наверх