一个多线程的代码,老是说"UnKnow DataBase,Alias DB1"
代码如下:
  多线程  {创建一个窗体实例来显示查询结果}
procedure NewQuery(QryNum:integer;Qry:TStrings;const   Alias,UserName,Password:String);
Begin
  With TQueryForm.Create(Application) Do
  Begin
    Session.SessionName := Format('Sess%d',[QryNum]); //QryNum为全局变量
    With DataBase Do
    Begin
      DataBaseName := Format('DB%d',[QryNum]);
      AliasName := Alias;
      SessionName := Session.SessionName;
      Params.Values['USER NAME'] := UserName;
      Params.Values['PASSWORD'] := Password;
    End;    With Query Do
    Begin
      DatabaseName := DataBase.DataBaseName;
      SessionName := Session.SessionName;
      SQL.Assign(Qry);
    End;    Memo1.Lines.Assign(Qry);
    Show;
    TDBQueryThread.Create(Query,DataSource); //执行线程查询数据库
End;

解决方案 »

  1.   

    那是因为:
    AliasName := Alias;中的Alias不合法,你到BDE中看看,对应Alias的数据库应该没有建立————————————————————————————————————
    宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
    ————————————————————————————————————
      

  2.   

    建立了啊,我是用Session.GetAliasName取得的,然后从中选取一个Alias,应该是建好的啊。我跟踪了,不是这句出错,是到下一个过程中的Query.Open;时才出错的啊。
      

  3.   

    没人UP,自己来吧
    UP,UP,UP
      

  4.   

    数据库的多线程实现起来是不是要设定Query有不同的database跟Session啊,我在书上是看到这样说的,哪位能提供点这方面的资料啊(数据库与多线程),或者一段代码也行啊。
      

  5.   

    look for AutoSessionName property
      

  6.   


        With DataBase Do
        Begin
          connected := false;
          DataBaseName := Format('DB%d',[QryNum]);
          AliasName := Alias;
          SessionName := Session.SessionName;
          Params.Values['USER NAME'] := UserName;
          Params.Values['PASSWORD'] := Password;
          connected := true;
        End;