我用线程访问数据库结果出了这样的错误,提示我tdatak不存在unit datamod;interfaceuses
Classes,DB,ADODB,SysUtils,Forms;type
TDataK = class(TForm)
Conn: TADOConnection;
Query: TADOQuery;
end;//------------------------------------
procedure gogogo();
//------------------------------------
implementation
uses IniFiles;
var
linkserv: string;
dba: string;
pwd: string;
rmdatabase: string;
//--------------------------------------
{ TQueryThread }
//--------------------------------------
type
datadep = class(TThread)
ADOConn: TADOConnection;
IQuery: TADOQuery;
private
{ Private declarations }
protected
procedure Execute; override;
public
constructor Create(Q:TADOQuery;C:TADOConnection); virtual;
end;//------------------------------------------------------
constructor datadep.Create(Q:TADOQuery;C:TADOConnection);
begin
inherited create(True);
IQuery:= Q;
ADOConn:= C;
FreeOnTerminate := true;
Resume;
end;procedure datadep.Execute;
begin
{ Place thread code here }
//try
begin
IQuery.Close;
IQuery.SQL.Clear;
IQuery.SQL.Add('truncate table tab_main');
IQuery.ExecSQL;
end;
//finally
.........end;procedure gogogo();
begin
//datak := TDataK.Create(Application);
with TDataK.Create(application) do 错误就在这里?提示TDataK不存在?但是
begin
Conn.ConnectionString :=connstr;
Query.Connection := Conn;
datadep.Create(Query,Conn);
end;end;
end.
Classes,DB,ADODB,SysUtils,Forms;type
TDataK = class(TForm)
Conn: TADOConnection;
Query: TADOQuery;
end;//------------------------------------
procedure gogogo();
//------------------------------------
implementation
uses IniFiles;
var
linkserv: string;
dba: string;
pwd: string;
rmdatabase: string;
//--------------------------------------
{ TQueryThread }
//--------------------------------------
type
datadep = class(TThread)
ADOConn: TADOConnection;
IQuery: TADOQuery;
private
{ Private declarations }
protected
procedure Execute; override;
public
constructor Create(Q:TADOQuery;C:TADOConnection); virtual;
end;//------------------------------------------------------
constructor datadep.Create(Q:TADOQuery;C:TADOConnection);
begin
inherited create(True);
IQuery:= Q;
ADOConn:= C;
FreeOnTerminate := true;
Resume;
end;procedure datadep.Execute;
begin
{ Place thread code here }
//try
begin
IQuery.Close;
IQuery.SQL.Clear;
IQuery.SQL.Add('truncate table tab_main');
IQuery.ExecSQL;
end;
//finally
.........end;procedure gogogo();
begin
//datak := TDataK.Create(Application);
with TDataK.Create(application) do 错误就在这里?提示TDataK不存在?但是
begin
Conn.ConnectionString :=connstr;
Query.Connection := Conn;
datadep.Create(Query,Conn);
end;end;
end.
help me
CoInitialize(nil);在线程结束是别忘了调用
CoUninitialize;这两个函数在 ActiveX 单元中.
TDataK.Create(application)的前提是必须有一个同单元文件名的.dfrm文件,否则创建会出错。用TDataK.CreateNew则不会出错。
with TDataK.Create(nil) do 错误就在这里?提示TDataK不存在?但是
begin
Conn.Connected := False;
Conn.ConnectionString :=connstr;
Conn.Connected := True;
Query.Close;
Query.Connection := Conn;
datadep.Create(Query,Conn);
end;procedure datadep.Execute;
begin
CoInitialize(nil); //try
begin
IQuery.Close;
IQuery.SQL.Clear;
IQuery.SQL.Add('truncate table tab_main');
IQuery.ExecSQL;
end;
//finally
......... CoUninitialize;
end;
class EAccessViolation里的错误,内存地址XXXX不能为读还有我原来用的其实是DataModule,后来被别人改了。