Главная страница
    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.47 MB
Время: 0.011 c
3-48475
lesalesa
2003-08-22 17:31
2003.09.15
Перерисовка scrollbar в dbGrid?


1-48591
race1
2003-09-03 16:31
2003.09.15
неработает ресурс


1-48619
fool
2003-09-04 13:39
2003.09.15
Контроллер автоматизации, события автоматизации


3-48478
AlexTregubov
2003-08-22 15:33
2003.09.15
Запарился я с таблицами


14-48732
Knight
2003-08-24 21:42
2003.09.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
Английский Французский Немецкий Итальянский Португальский Русский Испанский