tidTcpServer dando erro quando recebe muitas conexões.
alguém pode me ajudar com o código abaixo? quando mais de uma pessoa se conecta ao mesmo tempo ocorre o erro ´name not unique in this context´
procedure TfrmPrincipal.TCPMenuExecute(AThread: TIdPeerThread); var cont: Byte; idUsuario, nmUsuario, nmLogin, nmSenha, nmEtiqueta:String[50]; query:TQuery; begin query:=TQuery.Create(nil); query.DatabaseName:=´dbSC´; cont := 0; with AThread.Connection do begin LimpaTela(AThread); WriteLn(´Bem-vindo ao´); WriteLn(´ Rastro 3.0´); repeat query.SQL.Text:=´SELECT tbUsuario.idUsuario, tbUsuario.nmUsuario ´+ ´FROM usrSeguranca.tbUsuario ´+ ´JOIN usrSeguranca.tbUsuarioGrupo ON usrSeguranca.tbUsuarioGrupo.idUsuario=usrSeguranca.tbUsuario.idUsuario ´+ ´JOIN usrSeguranca.tbMenuGrupo ON usrSeguranca.tbMenuGrupo.idGrupo=usrSeguranca.tbUsuarioGrupo.idGrupo ´+ ´JOIN usrSeguranca.tbMenu ON usrSeguranca.tbMenuGrupo.idMenu=usrSeguranca.tbMenu.idMenu ´; WriteLn; Write(´Login: ´); nmLogin := InputLn2(AThread); Write(´Senha: ´); nmSenha := Criptografar(InputLn2(AThread, ´*´),50); if (nmLogin=´´) and (nmSenha=´´) then begin WriteLn; //informa conexao nao ok WriteLn(´Autenticacao falhou!´); end else begin query.SQL.Text:=query.SQL.Text+ ´WHERE UPPER(nmLogin) = ´+#39+UpperCase(nmLogin)+39+´ AND UPPER(nmSenha)=´+39+UpperCase(nmSenha)+39+´ AND SUBSTR(tbMenu.nmObservacao,11)=´+39+´Producao´+39; query.Open; if (query.IsEmpty) then begin query.Close; WriteLn; //informa conexao nao ok WriteLn(´Autenticacao falhou!´); end; end; Inc(cont); until (query.Active) or (cont=3); if query.Active then begin idUsuario:=query.FieldByName(´idUsuario´).Value; nmUsuario:=query.FieldByName(´nmUsuario´).AsString; query.free; WriteLn; //informa conexao ok WriteLn(´Conectado ao Oracle ´); WriteLn(´Usuario ´ nmLogin := InputLn2(AThread); Write(´Senha: ´); nmSenha := Criptografar(InputLn2(AThread, ´*´),50); if (nmLogin=´´) and (nmSenha=´´) then begin WriteLn; //informa conexao nao ok WriteLn(´Autenticacao falhou!´); end else begin query.SQL.Text:=query.SQL.Text+ ´WHERE UPPER(nmLogin) = ´+#39+UpperCase(nmLogin)+39+´ AND UPPER(nmSenha)=´+39+UpperCase(nmSenha)+39+´ AND SUBSTR(tbMenu.nmObservacao,11)=´+39+´Producao´+39; query.Open; if (query.IsEmpty) then begin query.Close; WriteLn; //informa conexao nao ok WriteLn(´Autenticacao falhou!´); end; end; Inc(cont); until (query.Active) or (cont=3); if query.Active then begin idUsuario:=query.FieldByName(´idUsuario´).Value; nmUsuario:=query.FieldByName(´nmUsuario´).AsString; query.free; WriteLn; //informa conexao ok WriteLn(´Conectado ao Oracle ´); WriteLn(´Usuario ´ + nmUsuario); MenuAlimentacao(AThread, idUsuario, nmUsuario); end else begin query.Free; Disconnect; end; end; end;
Jprogramador
Curtidas 0
Respostas
Jprogramador
27/10/2006
procedure TfrmPrincipal.TCPMenuExecute(AThread: TIdPeerThread); var cont: Byte; idUsuario, nmUsuario, nmLogin, nmSenha:String[50]; query:TQuery; begin query:=TQuery.Create(nil); query.DatabaseName:=´dbSC´; cont := 0; with AThread.Connection do begin LimpaTela(AThread); WriteLn(´Bem-vindo ao´); WriteLn(´ Rastro 3.0´); repeat query.SQL.Text:=´SELECT tbUsuario.idUsuario, tbUsuario.nmUsuario ´+ ´FROM usrSeguranca.tbUsuario ´+ ´JOIN usrSeguranca.tbUsuarioGrupo ON usrSeguranca.tbUsuarioGrupo.idUsuario=usrSeguranca.tbUsuario.idUsuario ´+ ´JOIN usrSeguranca.tbMenuGrupo ON usrSeguranca.tbMenuGrupo.idGrupo=usrSeguranca.tbUsuarioGrupo.idGrupo ´+ ´JOIN usrSeguranca.tbMenu ON usrSeguranca.tbMenuGrupo.idMenu=usrSeguranca.tbMenu.idMenu ´; WriteLn; Write(´Login: ´); nmLogin := InputLn2(AThread); Write(´Senha: ´); nmSenha := Criptografar(InputLn2(AThread, ´*´),50); if (nmLogin=´´) and (nmSenha=´´) then begin WriteLn; //informa conexao nao ok WriteLn(´Autenticacao falhou!´); end else begin query.SQL.Text:=query.SQL.Text+ ´WHERE UPPER(nmLogin) = ´+#39+UpperCase(nmLogin)+39+´ AND UPPER(nmSenha)=´+39+UpperCase(nmSenha)+39+´ AND SUBSTR(tbMenu.nmObservacao,11)=´+39+´Producao´+39; query.Open; if (query.IsEmpty) then begin query.Close; WriteLn; //informa conexao nao ok WriteLn(´Autenticacao falhou!´); end; end; Inc(cont); until (query.Active) or (cont=3); if query.Active then begin idUsuario:=query.FieldByName(´idUsuario´).Value; nmUsuario:=query.FieldByName(´nmUsuario´).AsString; query.free; WriteLn; //informa conexao ok WriteLn(´Conectado ao Oracle ´); WriteLn(´Usuario ´ + nmUsuario); MenuAlimentacao(AThread, idUsuario, nmUsuario); end else begin query.Free;7),50); if (nmLogin=´´) and (nmSenha=´´) then begin WriteLn; //informa conexao nao ok WriteLn(´Autenticacao falhou!´); end else begin query.SQL.Text:=query.SQL.Text+ ´WHERE UPPER(nmLogin) = ´+#39+UpperCase(nmLogin)+39+´ AND UPPER(nmSenha)=´+39+UpperCase(nmSenha)+39+´ AND SUBSTR(tbMenu.nmObservacao,11)=´+39+´Producao´+39; query.Open; if (query.IsEmpty) then begin query.Close; WriteLn; //informa conexao nao ok WriteLn(´Autenticacao falhou!´); end; end; Inc(cont); until (query.Active) or (cont=3); if query.Active then begin idUsuario:=query.FieldByName(´idUsuario´).Value; nmUsuario:=query.FieldByName(´nmUsuario´).AsString; query.free; WriteLn; //informa conexao ok WriteLn(´Conectado ao Oracle ´); WriteLn(´Usuario ´ + nmUsuario); MenuAlimentacao(AThread, idUsuario, nmUsuario); end else begin query.Free; Disconnect; end; end; end;
GOSTEI 0