用DataBase,BDE,Sybase的一个不理解的问题……(30分)

  • 主题发起人 主题发起人 代码雪儿
  • 开始时间 开始时间

代码雪儿

Unregistered / Unconfirmed
GUEST, unregistred user!
·登陆界面上用一个TDataBase,别名为BDE的别名,DataBaseName为自己定义的
·其他界面的TQuery的DataBaseName为 登陆界面上的DataBase的DataBaseName
问题
·登陆时候用DataBase.connected:=True,触发DataBase的OnLogin事件,OnLogin事件代码
loginParams.Values['USER NAME']:=StrUserName;
loginparams.Values['PASSWORD']:=StrPwd;
·其他界面的Query在连接数据库时候以前不弹出登陆数据库的用户名密码窗口
可现在弹出来了,怎么办才能不弹出????????????????
·在onLogin事件中加上 DataBase1.LoginPrompt := False;反而出错。
 
说明你断开过!!
 
我DataBase的KeepConnected为False
当然要断开了,我意思是只有请求时候,DataBase才连数据库。
否则光在线了!
 
HandleShare设置为True了吗?
 
To rockxu:
· 没有……
· 设置了,也不行……
 
DataBase1.LoginPrompt设为False,而不要写到OnLogin里试试
 
to 高小五:
那样我就不能动态设置登陆数据库的用户名和密码了
 
OnLogin事件是用于在显示系统标准登录对话框时,把用户名和密码预先填入到里面的。
如果你想程序不要显示数据库对话框,不应该这样做。
可以这样:
TDataBase的LoginPrompt置为False;
写它的BeforeConnect事件(Delphi3 不支持,想你也不会再用吧)
with Sender as TDatabase do
begin
Params.Values['USER NAME']:=StrUserName
Params.Values['PASSWORD']:=StrPwd;
end;

而且你的登录界面是不能Free的,否则那个Database也没有了
 
可以,您可以将TDatabase的参数里将
user name=...
password=...
删除,程序中写:
Database1.Params.Add('USER NAME=' + StrUserName;
Database1.Params.Add(PASSWORD=' + StrPwd;
Database1.Connected := TRUE ;
 
To 高小五。
你好像写错语法了吧……
 
sorry,
Database1.Params.Add('USER NAME=' + StrUserName);
Database1.Params.Add('PASSWORD=' + StrPwd);
Database1.Connected := TRUE ;
 
不行呀……
 
多人接受答案了。
 
后退
顶部