我用线程访问数据库结果出了这样的错误,提示我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.

解决方案 »

  1.   

    在写程序的时候没有提示错误,编译也没有错误,但是每次执行到这里就报错。我快疯了
    help me
      

  2.   

    在线程中需要 ADO 初始化
    CoInitialize(nil);在线程结束是别忘了调用
    CoUninitialize;这两个函数在 ActiveX 单元中.
      

  3.   

    kyee(浪子阿鹏) 程序提示的是找不到TDataK类,还没有创建呢,一定是还有其他地方的错误。帮忙看看
      

  4.   

    当然要出错啦:
    TDataK.Create(application)的前提是必须有一个同单元文件名的.dfrm文件,否则创建会出错。用TDataK.CreateNew则不会出错。
      

  5.   

    TDataK是什么类阿,把它的单元包含进来
      

  6.   

    另外,补充一下,像这种没有界面的Form,何不用DataModule代替?
      

  7.   

    //datak := TDataK.Create(Application);
       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;
      

  8.   

    谢谢baguli(巴古里) ,改成createnew是不报错误了,但是下面又有错误
    class EAccessViolation里的错误,内存地址XXXX不能为读还有我原来用的其实是DataModule,后来被别人改了。
      

  9.   

    没人知道,还是太简单不想回答,还有我看delphi中自带的例子应该可以用create的,不知道为什么,错误提示好像原因是conn控件不存在,这样的话到底创建了没有。