我想用TSession控件,在程序運行過程中動態生成aliasname
但我的程序aliasname是動態生成了,但我不能動態使用這個aliasname
我的程序如下:
procedure TForm1.Button1Click(Sender: TObject);
var
   param:tstringlist;
begin
   param:=tstringlist.Create;   if session1.Active=TRUE then
     Session1.Active:=FALSE;   SESSION1.Active:=TRUE;
   if SESSION1.IsAlias('PACKING')=FALSE then
   begin
     param.Clear;
     param.Add('SERVER NAME='+'PACKING.WORLD');
     param.Add('User name='+'packing');
     param.Add('Password='+'packing');
     session1.AddAlias('PACKING','ORACLE',param);
     SESSION1.SaveConfigFile;
   end;   //SESSION1.Active:=FALSE;
   DATABASE1.Connected:=FALSE;
   QUERY1.Active:=FALSE;   SESSION1.Active:=TRUE;   if database1.Connected=false then
   BEGIN
      DATABASE1.SessionName:=SESSION1.SessionName;
      DATABASE1.DatabaseName:='PACKDB';
      database1.AliasName:='PACKING';
      DATABASE1.Params.Clear;
      DATABASE1.Params.Add('USER NAME=packing');
      database1.Params.Add('password=packing');
      database1.Params.Add('server name=PACKING.WORLD');
      DATABASE1.LoginPrompt:=FALSE;
   END;   SESSION1.SaveConfigFile;   DATABASE1.Connected:=TRUE;   IF QUERY1.Active=FALSE THEN
   BEGIN
      QUERY1.SessionName:=SESSION1.SessionName;
      QUERY1.DatabaseName:=DATABASE1.DatabaseName;
   END;   //SESSION1.Active:=TRUE;
   //DATABASE1.Connected:=TRUE;
   QUERY1.Active:=TRUE;   QUERY1.Close;
   QUERY1.SQL.Clear;
   QUERY1.SQL.Add('SELECT * FROM PACKING.UNIT_CART');
   QUERY1.Open;
end;每次執行都提示找不到PACKDB,望大俠們幫忙解決以下

解决方案 »

  1.   

    我原来动态创建过别名,成功应用了.
    后来改用ado了,不记得了.
    呵呵.别骂我哦.我觉得你可以把你的代码重新整理一下,把所有没用的代码都去掉.
    用database的时候不用指定session,如果你的别名确实已经创建了的话.你可以这样来检查,在一个button事件里只创建别名.然后检查别名是否创建了.
    然后检查database, 然后检查query.
    不要到处都用SESSION1.SaveConfigFile;
      

  2.   

    那位有沒有這樣動態生成別名的院代碼
    還有能不能講一下session,database,query之間的關係
    我若要每個線程要用一個session來訪問數據庫,是不是要一個tdatabase與tsession之間對應
      

  3.   

    lgqTiger(把酒论程序__尽在笑谈间);我的程序執行的時候,單步到DATABASE1.Connected:=TRUE時出錯沒有 database1.AliasName:='PACKING';這一句時
      出現unknown database,alias:PACKDB有 database1.AliasName:='PACKING';這一句時
      Cann't load an IDAPI service library 
      File: SQLORA8.DLL
      alias:PACKDB
      

  4.   

    lgqTiger(把酒论程序__尽在笑谈间);我的電腦里是有sqlora8.dll的