نوشته شده توسط
یوسف زالی
اشیایی مثل ADO خاصیتی دارند به نام ExecuteOption که می تونید اون ها رو تنظیم کنید.
در خصوص قسمت دوم هم باید به بخش اس کیو ال مراجعه کنید.
واقعا راهنمایی تون مفید بود و کارم را راه انداخت.
من برای نمایش دادن درصد پیشرفت از این کد استفاده کردم:
procedure TForm1.ADOQuery2FetchProgress(DataSet: TCustomADODataSet; Progress,
MaxProgress: Integer; var EventStatus: TEventStatus);
begin
ProgressBar1.Max:=MaxProgress;
ProgressBar1.Position:=Progress;
end;
اما اول کار progressbar با سرعت زیاد پر میشه اما هر چه به آخر کار نزدیک میشه سرعتش کم میشه!!
برای اینکه بفهمم چه اتفاقی داره می افته یک memo روی صفحه گذاشتم و کد قبلی را به این صورت تغییر دادم:
procedure TForm1.ADOQuery2FetchProgress(DataSet: TCustomADODataSet; Progress,
MaxProgress: Integer; var EventStatus: TEventStatus);
begin
ProgressBar1.Max:=MaxProgress;
ProgressBar1.Position:=Progress;
Memo1.Lines.Add(IntToStr(Progress)+','+IntToStr(Ma xProgress));
end;
در کمال تعجب دیدم نه تنها Progress داره زیاد میشه بلکه MaxProgress هم داره زیاد می شه! چرا اینجوریه؟ برای همین مرتبا داره مقدار Max پروگرس بار هم زیاد میشه و خیلی نمایش به درد بخوری نمیشه. کاریش میشه کرد؟
این هم اعدادی که بعد از اجرای Query در Memo نمایش داده شد:
965,980
980,995
995,1010
1010,1025
1025,1040
1040,1055
1055,1070
...
...
1051265,1051280
1051280,1051295
...
...
1083455,1083470
1083470,1083485
1083485,1083500
1083500,1083515
1083502,1083502