很简单呀。把ActiveForm看做是本地程序就行了。
只是您的最后一句听不懂:"我想问一下,ActiveForm如何共享客户程序中定义的DatabaseName.",是什么意思?

解决方案 »

  1.   

    to net1999:如果我在客户程序中定义了一个数据库(Database1)其DatabaseName 为 db1,并且将他的LoginPrompt设为False,然后我在ActiveForm上定义了一个TQuery(Query1)并设DatabaseName为db1,但是在运行时TQuery连接时仍然要输入用户名和密码。如果Database1.LoginPrompt为True则要输入两次密码,但是如果没有Database1则Query1报错说找不到db1,似乎BDE可以共享数据库名,却不共享链接。
      

  2.   

    你说的情况其实是两个应用程序,使用同一Alias,只是这个Alias是客户程通过BDE创建的。
    由于是两个SESSION,所以其链接是不会共享的。
      

  3.   

    你可以试着使用TSession构件,即在客户程序和ActiveForm应用中都放两个TSession构件并将其SessionName设为一样,再将ActiveForm中的TQuery的SessionName设成和它们一样。
      

  4.   

    to ameng007:
    不行啊放两个TSession 它报错说TSession重名了
      

  5.   

    to airhorse:
    你说的非常有道理,所以请问AddAlias,AddPassword等几个方法是怎么用的,另外问一下一个database是不是对应一个与数据库的连接,还是一个TSession是一个连接,还是一个TQuery是一个连接。
      

  6.   

    如何自动Login数据库:
        
    在Delphi中,有Database元件和对象,Database对象有属性:Params和LoginPrompt,充分使用这两个属性就会自动Login数据库。下面的例程就会自动Login。
        例:新建一程序(Project),在Form上放置Table,Database,DataSource,StringGrid各一个,并通过Object
    Inspector将StringGrid的DataSource指向DataSource,DataSource的DataSet指向Table。双击Form,进入Form1的Create事件程序代码编辑,输入:
         Database1.Params.Values['USERNAME']:='SYSDBA';
         Database1.Params.Values['PASSWORD']:='masterkey';
         Database1.LoginPrompt:=False;
         Database1.DatabaseName:='MYDB';
         Database1.AliasName:='IBLOCAL';
         Table1.DatabaseName:='MYDB';
         Table1.TableName:='EMPLOYEE';
         Table1.Open;
        运行程序(Run, F9)则可以自动Login Interbase,将数据表中的数据显示在StringGrid中。
    注:由于Delphi
    3安装不会自动安装Interbase数据库程序,所以如果运行以上程序必须安装Interbase。但是可以使用其他的数据服务器,如Oracle或Sybase,ODBC等。对于不需要用户名和密码的ODBC驱动,可以设置USERNAME和PASSWORD为空。
    TdataBase,TSession,都不是一个连接,只有,TQuery,Tstorcproc,Ttable, 是一个数据库连接。