网络问题(10分)

  • 主题发起人 主题发起人 anni9977
  • 开始时间 开始时间
A

anni9977

Unregistered / Unconfirmed
GUEST, unregistred user!
我用的ServerSocket和SocketConnection、ClientSocket还有ClientDataSet并且SocketConnection的loginprompt 为真,但我想让客户端运行程序时用固定的用户(特权用户)登录时不出login remote窗口,自动登录应怎么做呀?那位高手知道请指教!谢谢了!
 
loginprompt 为false
 
可能和数据库一样
username:=***
password:=***
loginprompt:=false;
 
必须要loginprompt 为TRUE,因为必须要通知服务器的,如为FALSE的话,网络是否能我也不知道呀
 
在你的中间层的DataModule的OnCreate事件写这样的代码:
从Ini文件(保存你的登陆信息,如用户、密码、服务器等)读出你设置的信息,并更新到你数据库连接控件如:AdoConnection中的相应属性。
 
在你设计期和运行期,它会通知服务器的。
procedure TSVR_CaiGou.RemoteDataModuleCreate(Sender: TObject);
var
i: integer;
begin
if frm_Main.ConnectStr = '' then
frm_Main.SetSysdbConnected(sysdb); //设置连接
Application.ProcessMessages;
for I := 0 to self.ComponentCount - 1 do
begin
if (self.Components is TDataSetProvider) then
TDataSetProvider(Components).BeforeUpdateRecord := DSP_CG_CLCGRK_MBeforeUpdateRecord;
Application.ProcessMessages;
end;
end;

procedure Tfrm_Main.SetSysdbConnected(sysdb: TADOConnection);
var
sysDbName: string;
sysSvName: string;
sysDbUser: string;
sysDbPsw: string;
IniFile: string;
MyIni: TIniFile;
begin
IniFile := ExtractFilePath(Application.ExeName) + SYSCONFIGFILE;
if not FileExists(IniFile) then
begin
MyIni := TIniFile.Create(IniFile);
MyIni.WriteString('Sysdb', PRMSYSSV, 'ServerPCName');
MyIni.WriteString('Sysdb', PRMSYSDB, 'DatabaseName');
MyIni.WriteString('Sysdb', PRMUSER, 'DataBaseUser');
MyIni.WriteString('Sysdb', PRMPSW, 'DataBasePSW');
MyIni.Free;
ShowMessage('ÇëÕýÈ·ÅäÖóÌÐòÎļþ: ' + #13 + IniFile);
end;

MyIni := TIniFile.Create(IniFile);
with MyINI do
begin
sysDbName := ReadString(SYSDBCNGLOCK, PRMSYSDB, 'JXERP');
sysSvName := ReadString(SYSDBCNGLOCK, PRMSYSSV, 'server');
sysDbUser := 'SA'; // ReadString(SYSDBCNGLOCK, PRMUSER, 'SA');
sysDbPsw := ''; // ReadString(SYSDBCNGLOCK, PRMPSW, '');
end;
ConnectStr := ' Provider=SQLOLEDB.1;Persist Security Info=False;User ID=' + sysDbUser +
';Password=' + sysDbPsw + ';Initial '
+ 'Catalog=' + sysDbName + ';Data Source=' + sysSvName
+ ';Locale Identifier=2052;Connect Timeout=60;Use Procedure for Prepare=1;'
+ 'Auto Translate=True;Packet Size=4096';
sysDB.connected := False;
sysDB.ConnectionString := ConnectStr;
try
sysDB.Connected := True;
except
ShowMessage('Êý¾Ý¿âÁ¬½Ó³ö´í!');
Halt(0);
end;
end;
 
我的问题没有那么复杂,只是想客户端运行时任意打开服务器的一个数据库证明这两台机子是通的就可以了,客户端程序如下,现在的主要问题是想不让出登录窗口,而程序自动点OK按钮,因为登录密码是在程序中定死的(服务器端把它设为特权用户),login remote在设计时是不是看不见呀,如果能看到就好说了,谁知道怎么把login remote窗口怎么弄出来呀 。
procedure tform1.init ;
var
AIni: TIniFile;
AHost, AAdress: String;
begin
AIni := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'NetPlay.Ini');
AHost := AIni.ReadString('服务器', '名称', 'Jingmin');
AAdress := AIni.ReadString('服务器', 'IP地址', '127.0.0.1');
SocketConnection1.Host := AHost;
SocketConnection1.Address := AAdress;
ClientSocket1.Host := AHost;
ClientSocket1.Address := AAdress;
clientdataset1.Close;
clientdataset1.CommandText :='select distinct telephone from lyshuju.dbf';
try
clientdataset1.Open;
except
application.MessageBox ('网络不通请查看情况','测试提示',0) ;
application.Terminate ;
end;
AIni.Free;
end;


procedure TForm1.SocketConnection1Login(Sender: TObject; Username,
Password: String);
begin
SocketConnection1.AppServer.Login('username','userpassword');

end;

procedure TForm1.FormCreate(Sender: TObject);
begin
init;
end;
 
哪位高手知道这问题,请来帮忙呀!
 
我给你发过邮件自己看去吧
 
接受答案了.
 
后退
顶部