S
sxbug
Unregistered / Unconfirmed
GUEST, unregistred user!
中间层我做了一个用于打开数据库的 功能,代码如下:
procedure TCauWuXT_RD.SetDB(const DBN, PWD: WideString);
begin
{ Assign a new Database name }
try
Database1.Close;
//Database1.AliasName := DBN;
if PWD <> '' then
begin
DataBase1.Params.Values['USERNAME']:='CAIWU';
DataBase1.Params.Values['PASSWORD']:=PWD;
DataBase1.LoginPrompt:=False;
DataBase1.DatabaseName:='CAIWU_DAT';
DataBase1.AliasName:='CAIWU_DATA';
Database1.Open;
end;
except
{ If the DB open fails, assume it is because a password is required and
raise a special exception which will cause the client to prompt the
user for a password }
on E: EDBEngineErrordo
if (PWD = '') then
raise Exception.Create('数据库口令有错。') else
raise;
end;
end;
在这里我用database1打开了一个oracle数据库。
在客户端,我在主程序显示窗口时,调用上面的过程,代码如下:
procedure TMainForm.FormShow(Sender: TObject);
var
i:Integer;
DBN:OLEVariant;
PWD:String;
begin
myDM.DCOMConnection_CWXT.Connected:=True;
DBN:=myDM.DCOMConnection_CWXT.AppServer.GetDB;
if VarIsArray(DBN) then
for I:=0 to VarArrayHighBound(DBN,1)do
DBComboBox.Items.Add(DBN);
try
myDM.DCOMConnection_CWXT.AppServer.SetDB(DBComBoBox.text,'CAIWUCHU');
except
on E:Exceptiondo
if E.Message='数据库口令有错。' then
begin
if InputQuery(E.Message,'请输入密码',PWD) then
myDM.DCOMConnection_CWXT.appServer.SetDB(DBComboBox.Text,PWD);
end
else
Raise;
end;
for i:=0 to ActionList.actioncount-1do
TAction(ActionList.Actions).Enabled:=False;
LoginSYS.Enabled:=True;
HelpAbout1.Enabled:=True;
FileExit1.Enabled:=True;
end;
这样我的程序就可以运行了。
现在我的问题是,在调试客户端程序时(不是运行),总是无法激活ClientDataset。每次我激活clientdataset时,中间层能自动启动,但客户端仍然显示:没有打开(登录) alias name: CAIWU_DAT 的数据库 。
那么我又想了一个办法:在中间层的机器上,又创建一个 caiwu_dat 的数据库连接,可还是一样的错误,
我不想改动程序,像这样的程序,如何调试?
procedure TCauWuXT_RD.SetDB(const DBN, PWD: WideString);
begin
{ Assign a new Database name }
try
Database1.Close;
//Database1.AliasName := DBN;
if PWD <> '' then
begin
DataBase1.Params.Values['USERNAME']:='CAIWU';
DataBase1.Params.Values['PASSWORD']:=PWD;
DataBase1.LoginPrompt:=False;
DataBase1.DatabaseName:='CAIWU_DAT';
DataBase1.AliasName:='CAIWU_DATA';
Database1.Open;
end;
except
{ If the DB open fails, assume it is because a password is required and
raise a special exception which will cause the client to prompt the
user for a password }
on E: EDBEngineErrordo
if (PWD = '') then
raise Exception.Create('数据库口令有错。') else
raise;
end;
end;
在这里我用database1打开了一个oracle数据库。
在客户端,我在主程序显示窗口时,调用上面的过程,代码如下:
procedure TMainForm.FormShow(Sender: TObject);
var
i:Integer;
DBN:OLEVariant;
PWD:String;
begin
myDM.DCOMConnection_CWXT.Connected:=True;
DBN:=myDM.DCOMConnection_CWXT.AppServer.GetDB;
if VarIsArray(DBN) then
for I:=0 to VarArrayHighBound(DBN,1)do
DBComboBox.Items.Add(DBN);
try
myDM.DCOMConnection_CWXT.AppServer.SetDB(DBComBoBox.text,'CAIWUCHU');
except
on E:Exceptiondo
if E.Message='数据库口令有错。' then
begin
if InputQuery(E.Message,'请输入密码',PWD) then
myDM.DCOMConnection_CWXT.appServer.SetDB(DBComboBox.Text,PWD);
end
else
Raise;
end;
for i:=0 to ActionList.actioncount-1do
TAction(ActionList.Actions).Enabled:=False;
LoginSYS.Enabled:=True;
HelpAbout1.Enabled:=True;
FileExit1.Enabled:=True;
end;
这样我的程序就可以运行了。
现在我的问题是,在调试客户端程序时(不是运行),总是无法激活ClientDataset。每次我激活clientdataset时,中间层能自动启动,但客户端仍然显示:没有打开(登录) alias name: CAIWU_DAT 的数据库 。
那么我又想了一个办法:在中间层的机器上,又创建一个 caiwu_dat 的数据库连接,可还是一样的错误,
我不想改动程序,像这样的程序,如何调试?