ADO异步执行出错(50分)

  • 主题发起人 主题发起人 小城月光
  • 开始时间 开始时间

小城月光

Unregistered / Unconfirmed
GUEST, unregistred user!
各位高手:
以下是李维在他的ADO这本书中的例子,关于ADO异步执行,同时显示一个查询进度条的问题,但执行出错,不知道什么原因?

procedure TForm1.FormActivate(Sender: TObject);
var
sRecNo : String;
begin
ProgressBar1.Max := ADOCommand1.Execute.Fields.Item[0].Value;
sRecNo := IntToStr(ProgressBar1.Max);
Self.Caption := '?Τ' + sRecNo + ' 掸戈?';
end;

procedure TForm1.ADODataSet1FetchProgress(DataSet: TCustomADODataSet;
Progress, MaxProgress: Integer; var EventStatus: TEventStatus);
begin
ProgressBar1.Position := Progress;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
try
ADODataSet1.Active := False;
ADODataSet1.ExecuteOptions := [eoAsyncFetchNonBlocking];
finally
lStart := GetTickCount;
ADODataSet1.Active := True;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
try
ADODataSet1.Active := False;
ADODataSet1.ExecuteOptions := [eoAsyncFetch];
finally
lStart := GetTickCount;
ADODataSet1.Active := True;
end;
end;

procedure TForm1.ADODataSet1FetchComplete(DataSet: TCustomADODataSet;
const Error: Error; var EventStatus: TEventStatus);
begin
lEnd := GetTickCount;
ShowMessage('羆???' + FloatToStr((lEnd - lStart) / 1000.0) + '?');
end;

执行出错提示“Canvas does not allow drawing”,为什么?
 
我不知道原因,但是你这样加上一句可以解决。
procedure TForm1.Button2Click(Sender: TObject);
begin
try
ADODataSet1.Active := False;
ADODataSet1.ExecuteOptions := [eoAsyncFetchNonBlocking];
finally
lStart := GetTickCount;
ADODataSet1.Active := True;
sleep(10);//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
try
ADODataSet1.Active := False;
ADODataSet1.ExecuteOptions := [eoAsyncFetch];
finally
lStart := GetTickCount;
ADODataSet1.Active := True;
sleep(10);//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
end;
end;
 
我试了一下,加上sleep(10);
如果是eoAsyncFetch状态那确实是正常的
但是eoAsyncFetchNonBlocking状态
结果还是一样的,执行出错提示“Canvas does not allow drawing”,
 
这个我就没有测试了。测试你这个挺麻烦的。
 
不麻烦,要是你方便的话我把程序发给你,你直接就可以调试了
另外又发现了一个问题,有的时候就算加上sleep(10)也还是出错
好像刚打开的时候是好的,两种查询都可以做,但是第二次编译运行就开始出错,不知道为什么?
 
明天吧,我们可以试试。
 
如有时间请告知邮箱地址,我把文件发给你
 

Similar threads

I
回复
0
查看
736
import
I
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部