我们一般用BDE的时候,不是手工用BDE建一个数据库别名,而是用TDatabase控件来建立,然后用户登录,如果成功,再建立别名,供各数据库控件使用可是如果你的程序想模块化,每个模块肯定要用到数据库别名,那要怎么办,
简短的说,如果有某个模块.dll文件,调用他的时候怎么获得主程序建立的数据库别名呢?
是将登录信息保存起来,调用模块时再登录建立一个新的别名吗,这样感觉不好吧,
还是将TDatabase就做为一个.dll模块公用呢如果你的程序的报表经常变化,那么就可以将每个报表做成.dll文件,有新的就加一个.dll,可是dll却有不能用哪个数据库别名,麻烦死人啦,怎么办,你们遇到这样的情况到底是怎么解决的啊???

解决方案 »

  1.   

    如果你的系统不是对旧系统进行改进,数据连接最好不要用BDE,改用ADO或DBExpress。
    BDE已不再升级了。
      

  2.   

    哎,现在就是对旧系统的升级啊,再说BDE都用顺手哒对于哪个查询,常常要修改,麻烦的要死,又要赶进度,
    程序升级也是,客户点有多,维护反正很痛苦!
      

  3.   

    把你的模块统统编译成bpl,这样就可以了。
    dll也可以,你把TDatabase传过去,不过要麻烦一些。
      

  4.   

    dll里定义个TDatabase变量
    在dll接口中把主程序的TDatabase传过去
    绝对可以,原来一直用这种方法,没任何问题的
      

  5.   

    to leejiey(李杰)
    我今天在网上查资料,我现在不是传的TDatabase,传的是Application句柄,就是Application.Handle ,行倒是行了,就是每次都出一个密码的提示框,要我输入密码!!!!对于您说的方法,我也同样做了,可是还是要求输入密码?
    ==================================================================================
      

  6.   

    我是这么做的:
    procedure DoTest(H:THandle;ADB:TDatabase);cdecl;
    begin
      Application.Handle := H;
      with TForm1.Create(Application) do
      try
        database1 := adb;
        with query1 do
        begin
          Close;
          DatabaseName :=database1.DatabaseName  ;
          Open;
          ShowModal;
        end;
      finally
        Free;
      end;
    //上面的其实就可以只传一个参数,但是现在就是不管怎么做,他老上要提示输入密码!
    //我想如果只取ADB这个控件的参数还是可以实现不出现密码提示框,但是这样就不是公用一个
    //TDatabase控件了,我是这么认为的!
    ==========================================================
      

  7.   

    我的database1.LoginPrompt = False, 我测试过了的,