unit UClearthread;interfaceuses
Windows, Messages,Classes, DB,Forms, ADODB,SysUtils;type
ClearThread = class(TThread)
private
{ Private declarations }
protected
procedure Execute; override;
end;implementation
uses
Umain,UInfo;
procedure ClearThread.Execute;
var
SqlStr,sDate,str:String;
qryClear:TADOQuery;
begin
qryClear.Create(nil); //运行至此就报错,为什么?try
....
SqlStr:="";....
if qryClear.Active then
qryClear.Close;
qryClear.ConnectionString:=frmMain.ConnStr;
qryClear.SQL.Clear;
qryClear.SQL.Add(SqlStr);
try
qryClear.Open;
except
qryClear.Close;
Application.MessageBox('打开数据库错误!','错误信息',MB_OK + MB_ICONSTOP);
Application.Terminate;
end;
end;
finally
qryClear.Free;
end; end;end.
try
some stament
finally
qryClear.Free;
end;
unit UClearthread;interfaceuses
Windows, Messages,Classes, DB, Forms, ADODB,SysUtils;type
ClearThread = class(TThread)
private
{ Private declarations }
FConnStr: String;
FSuccess: Boolean;
protected
procedure Execute; override;
public
constructor Create(AConnStr: String); // 是否运行成功
property IsSuccess: Boolean read FSuccess;
end;implementationuses
UInfo, ActiveX;
constructor ClearThread.Create(AConnStr: String);
begin
FConnStr := AConnStr;
FSuccess := False; inherited Create(False);
end;
procedure ClearThread.Execute;
var
SqlStr,sDate,str:String;
qryClear:TADOQuery;
begin
// ADO 的初始化
CoInitialize(nil);
try
qryClear := TADOQuery.Create(nil);
try
// ... ...
SqlStr:="";
// ... ... qryClear.Close;
qryClear.ConnectionString := FConnStr;
qryClear.SQL.Clear;
qryClear.SQL.Add(SqlStr);
qryClear.Open;
FSuccess := True;
finally
qryClear.Close;
qryClear.Free;
end;
except
end; // ADO 的释放
CoUninitialize;
end;end.
Windows, Messages,Classes, DB,Forms, ADODB,SysUtils;type
ClearThread = class(TThread)
private
{ Private declarations }
protected
procedure OneProgress;
procedure Execute; override;
end;implementation
uses
Umain,UInfo;
procedure ClearThread.Execute;
begin
Synchronize(OneProgress);
end;procedure OneProgress;
var
SqlStr,sDate,str:String;
qryClear:TADOQuery;
begin
qryClear.Create(nil); try
....
SqlStr:="";....
if qryClear.Active then
qryClear.Close;
qryClear.ConnectionString:=frmMain.ConnStr;
qryClear.SQL.Clear;
qryClear.SQL.Add(SqlStr);
try
qryClear.Open;
except
qryClear.Close;
Application.MessageBox('打开数据库错误!','错误信息',MB_OK + MB_ICONSTOP);
Application.Terminate;
end;
end;finally
qryClear.Free;
end; end;end.