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

Вниз

Как скопировать поле их одного DataSet в другой?   Найти похожие ветки 

 
Erik   (2003-08-26 12:25) [0]

Dest.Fields.Add(Source.Fields[i]); это конструкция только Assign делает! А мне надо реально поле создать.


 
Reindeer Moss Eater   (2003-08-26 12:27) [1]

Создавать надо конструктором класса


 
Skier   (2003-08-26 12:29) [2]

with Dest.Fields.Add do Assign(...) ?


 
Erik   (2003-08-26 12:29) [3]

Так я параметры хочу их исходного DataSet взять. А то некрасиво получается.


 
Skier   (2003-08-26 12:31) [4]

>Erik (26.08.03 12:29)
???


 
Erik   (2003-08-26 12:35) [5]

Что значить "with Dest.Fields.Add do Assign(...)" эта конструкция
она же работает точно также как и моя!
Поле несоздастся а скопируется указатель на него!
И будет весело :)


 
Reindeer Moss Eater   (2003-08-26 12:38) [6]

Dest.Fields.Add - это что по твоему, не создание?


 
Skier   (2003-08-26 12:39) [7]


> Поле несоздастся а скопируется указатель на него!

Да ну ?!


 
Skier   (2003-08-26 12:42) [8]

хм..
А действительно у TFields нет такого метода Add, который бы возвращал
TField. Sorry.


 
Reindeer Moss Eater   (2003-08-26 12:47) [9]

Зато у FieldDefs есть


 
Skier   (2003-08-26 12:49) [10]

>Reindeer Moss Eater © (26.08.03 12:47)
Есть. Но это не то что нужно автору.


 
Erik   (2003-08-26 15:25) [11]

CreateField - ктонибудь пользовался?


 
Reindeer Moss Eater   (2003-08-26 15:27) [12]

Есть. Но это не то что нужно автору.
По моему ему именно это и надо.


 
Arm79   (2003-08-26 15:36) [13]

если это ADO - есть метод Clone


 
Erik   (2003-08-26 16:14) [14]

Я сделел неполное копирование, но для моих целей этого хватило.
Возможно этот код комуто понадобится.
procedure CopyDef(const Source: TDataSet; const Dest: TClientDataSet);
Var i: Integer;
MyBuffer: PChar;
begin
Dest.Close;
Source.Active := True;
for i := 0 to Source.Fields.Count-1 do
with Source.Fields[i] do
Dest.FieldDefs.Add(FullName,DataType,Size,False);

Source.First;
Dest.CreateDataSet;
while not Source.Eof do
begin
Dest.Append;
for i := 0 to Source.Fields.Count-1 do
begin
GetMem(MyBuffer, Source.Fields[i].DataSize); оптимизировать
try
if Source.Fields[i].GetData(MyBuffer) then
Dest.Fields[i].SetData(MyBuffer);
finally
FreeMem(MyBuffer, Source.Fields[i].DataSize);
end;
end;
Source.Next;
end;
end;


 
Reindeer Moss Eater   (2003-08-26 16:18) [15]

А просто TClientDataSet заполнить через TDataSetProvider и Source - "мы не ищем легких путей" ?


 
Erik   (2003-08-26 16:23) [16]

Не, легкие пути, не для нас!
К томуже я хотел написать уневерсальную процедуру(хотябы принцып)


 
Reindeer Moss Eater   (2003-08-26 16:26) [17]

DataSetProvider1:=TDataSetProvider.Create;
DataSetProvider1.DataSet:=Source;
Dest.ProviderName:=DataSetProvider1.ProviderName;
Dest.Open;



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

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

Наверх





Память: 0.48 MB
Время: 0.01 c
3-48424
Кирилл
2003-08-25 16:25
2003.09.15
Ув. мастера, Как определить размер записи?


1-48555
Relaxxx
2003-09-01 16:29
2003.09.15
Поиск по строкам у комбоБокс


3-48455
kuchumovkv
2003-08-23 23:50
2003.09.15
Работа c TADOQuery


7-48796
Alex_x
2003-07-02 10:09
2003.09.15
Определение принтеров и звуковой карты установлених в системе


6-48660
milan
2003-07-15 22:06
2003.09.15
Как сохранить страницу в Web Browsere





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