REVELAR

Fórum tidTcpServer dando erro quando recebe muitas conexões. #332190

27/10/2006

0

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

Jprogramador

Responder

Posts

27/10/2006

Jprogramador

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;



Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar