Eof на TClientDataSet
2 отговора
27 прегледа
Eof на TClientDataSet
Искам да обходя един ClientDataSet, като редактирам всеки запис. Правя го по следния начин:
while (not dsFinishOrder.DataSet.Eof) do
begin
dsFinishOrder.DataSet.Edit;
dsFinishOrder.DataSet.FieldByName('QUANTITY').asInteger := 0;
dsFinishOrder.DataSet.Post;
dsFinishOrder.DataSet.Next;
end;
където dsFinishOrder е DataSource към съответния DataSet. Обаче условието никога не става true. Получава се така, че обхождам целия DataSet, но когато стигна до последния запис, си стоя там, явно dsFinishOrder.DataSet.Eof си връща false. Някой имал ли е подобен проблем? Това е на Delphi5...
И още, има ли някакви updates на DCOM- ili Midas, за Delphi5? Не съм хич в час, но за Ado-components има един Update2_for_ADO...
while (not dsFinishOrder.DataSet.Eof) do
begin
dsFinishOrder.DataSet.Edit;
dsFinishOrder.DataSet.FieldByName('QUANTITY').asInteger := 0;
dsFinishOrder.DataSet.Post;
dsFinishOrder.DataSet.Next;
end;
където dsFinishOrder е DataSource към съответния DataSet. Обаче условието никога не става true. Получава се така, че обхождам целия DataSet, но когато стигна до последния запис, си стоя там, явно dsFinishOrder.DataSet.Eof си връща false. Някой имал ли е подобен проблем? Това е на Delphi5...
И още, има ли някакви updates на DCOM- ili Midas, за Delphi5? Не съм хич в час, но за Ado-components има един Update2_for_ADO...
Допълнение....
Ако вместо while (not dsFinishOrder.DataSet.Eof) използвам
for i := 1 to dsFinishOrder.DataSet.RecordCount или пък
while(1) do
begin
//source...
if dsFinishOrder.DataSet.RecNo=dsFinishOrder.DataSet.RecordCount then break;
end;
няма проблеми..Просто съм любопитен, защо Eof-a не работи...
for i := 1 to dsFinishOrder.DataSet.RecordCount или пък
while(1) do
begin
//source...
if dsFinishOrder.DataSet.RecNo=dsFinishOrder.DataSet.RecordCount then break;
end;
няма проблеми..Просто съм любопитен, защо Eof-a не работи...
Re...
Това дето го написах в допулнението с repeat...until-a, не изпълнява тялото на цикъла за последния запис (логично :) ).