我们一般用BDE的时候,不是手工用BDE建一个数据库别名,而是用TDatabase控件来建立,然后用户登录,如果成功,再建立别名,供各数据库控件使用可是如果你的程序想模块化,每个模块肯定要用到数据库别名,那要怎么办,
简短的说,如果有某个模块.dll文件,调用他的时候怎么获得主程序建立的数据库别名呢?
是将登录信息保存起来,调用模块时再登录建立一个新的别名吗,这样感觉不好吧,
还是将TDatabase就做为一个.dll模块公用呢如果你的程序的报表经常变化,那么就可以将每个报表做成.dll文件,有新的就加一个.dll,可是dll却有不能用哪个数据库别名,麻烦死人啦,怎么办,你们遇到这样的情况到底是怎么解决的啊???
简短的说,如果有某个模块.dll文件,调用他的时候怎么获得主程序建立的数据库别名呢?
是将登录信息保存起来,调用模块时再登录建立一个新的别名吗,这样感觉不好吧,
还是将TDatabase就做为一个.dll模块公用呢如果你的程序的报表经常变化,那么就可以将每个报表做成.dll文件,有新的就加一个.dll,可是dll却有不能用哪个数据库别名,麻烦死人啦,怎么办,你们遇到这样的情况到底是怎么解决的啊???
BDE已不再升级了。
程序升级也是,客户点有多,维护反正很痛苦!
dll也可以,你把TDatabase传过去,不过要麻烦一些。
在dll接口中把主程序的TDatabase传过去
绝对可以,原来一直用这种方法,没任何问题的
我今天在网上查资料,我现在不是传的TDatabase,传的是Application句柄,就是Application.Handle ,行倒是行了,就是每次都出一个密码的提示框,要我输入密码!!!!对于您说的方法,我也同样做了,可是还是要求输入密码?
==================================================================================
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控件了,我是这么认为的!
==========================================================