unit Unit1;interface
uses
windows,DBClient,Classes,db;
type
TThreadQuery = class(TThread) { 声明线程类 }
private
FQuery: TClientDataSet; { 线程中的查询组件 }
FDataSource: TDataSource; { 与查询组件相关的数据感知组件 }
procedure ConnectDataSource;{ 连接数据查询组件和数据感知组件的方法 }
protected
procedure Execute; override;{ 执行线程的方法 }
public
constructor Create(Query: TClientDataSet;
DataSource: TDataSource); virtual; { 线程构造器 }
end;
implementation{ TThreadQuery类的实现 }{ 连接数据查询组件和数据感知组件}
procedure TThreadQuery.ConnectDataSource;
begin
FDataSource.DataSet := FQuery;{ 该方法在查询结束后才调用 }end;procedure TThreadQuery.Execute;{ 执行线程的方法 }
begin
try
FQuery.Open ; { 打开查询 } //这里出错误 Synchronize(ConnectDataSource);{ 线程同步 }
exceptend;
end;{ 线程查询类的构造器 }
constructor TThreadQuery.Create(Query: TClientDataSet; DataSource: TDataSource);
begin
FQuery := Query;
FDataSource := DataSource;
inherited Create(True);
FreeOnTerminate := False;
end;
end.为什么打开的时候出错呀!!!就救救我呀!!!
uses
windows,DBClient,Classes,db;
type
TThreadQuery = class(TThread) { 声明线程类 }
private
FQuery: TClientDataSet; { 线程中的查询组件 }
FDataSource: TDataSource; { 与查询组件相关的数据感知组件 }
procedure ConnectDataSource;{ 连接数据查询组件和数据感知组件的方法 }
protected
procedure Execute; override;{ 执行线程的方法 }
public
constructor Create(Query: TClientDataSet;
DataSource: TDataSource); virtual; { 线程构造器 }
end;
implementation{ TThreadQuery类的实现 }{ 连接数据查询组件和数据感知组件}
procedure TThreadQuery.ConnectDataSource;
begin
FDataSource.DataSet := FQuery;{ 该方法在查询结束后才调用 }end;procedure TThreadQuery.Execute;{ 执行线程的方法 }
begin
try
FQuery.Open ; { 打开查询 } //这里出错误 Synchronize(ConnectDataSource);{ 线程同步 }
exceptend;
end;{ 线程查询类的构造器 }
constructor TThreadQuery.Create(Query: TClientDataSet; DataSource: TDataSource);
begin
FQuery := Query;
FDataSource := DataSource;
inherited Create(True);
FreeOnTerminate := False;
end;
end.为什么打开的时候出错呀!!!就救救我呀!!!
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货