как-то странно работает перекачка данных в ClientDataSet
От: GrimReaper  
Дата: 25.08.04 12:46
Оценка:
hi all

Все происходит под MandrakeLinux9.2 и Kylix3.

С помощью OracleDataSet (DOA) получаю данные с сервера, и пытаюсь перегнать их в ClientDataSet.
Делаю что-то типа такого:

ClientdataSet1.Close;
ClientdataSet1.FieldDefs := OracleDataSet1.FieldDefs;
OracleDataSet1.First;
while not OracleDataSet1.Eof do begin
ClientDataSet1.Append;
for i := 0 to OracleDataSet.Fields.Count-1 do
ClientDataSet1.Fields[i].Value := OracleDataSet1.Fields[i].Value;
ClientDataSet1.Post;
OracleDataSet1.Next;
end;

по логу вижу, что в ClientDataset1 записывалась 21 строка, но после каждого Post
recordcount всеравно оставался 0. И после окончания переливания он пустой.
Под Windows+Delphi такого никогда небыло, в вот здесь очень часто.
Подобная операция выполняется (выгрузка и потом перекачка) очень много раз, но примерно
после раза 3-4-5 возникает описанная выше ситуация, и спасает только перезагрузка приложения.
Ситуация снова повторяется.

Подскажите что и где я не так делаю, или другой вариант решения данной проблемы.

Заранее спасибо
С уважением, В.Л.
Re: как-то странно работает перекачка данных в ClientDataSet
От: kavlad Россия http://www.wavesoft.ru
Дата: 17.11.04 12:44
Оценка:
Здравствуйте, GrimReaper, Вы писали:

GR>hi all


GR>Все происходит под MandrakeLinux9.2 и Kylix3.


GR>С помощью OracleDataSet (DOA) получаю данные с сервера, и пытаюсь перегнать их в ClientDataSet.

GR>Делаю что-то типа такого:

GR>ClientdataSet1.Close;

GR>ClientdataSet1.FieldDefs := OracleDataSet1.FieldDefs;
GR>OracleDataSet1.First;
GR>while not OracleDataSet1.Eof do begin
GR> ClientDataSet1.Append;
GR> for i := 0 to OracleDataSet.Fields.Count-1 do
GR> ClientDataSet1.Fields[i].Value := OracleDataSet1.Fields[i].Value;
GR> ClientDataSet1.Post;
GR> OracleDataSet1.Next;
GR>end;

Вообще-то это делается через провайдер.

var
I, J: Integer;
Provider: TDataSetProvider;
begin
Provider := TDataSetProvider.Create(Self);
try
Provider.DataSet := OracleDataSet1;
ClientDataSet1.Data := Provider.Data;
finally
Provider.Free;
end;
end;
... По ушам лупит начальство
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.