Controle de Acesso a um Sistema Delphi 7.0 Firebird 1.5

18/02/2006

0

Possuo uma tabela com os seguintes campos:

 USUARIOS (
    ID_USUARIO  INTEGER NOT NULL,
    USUARIO     VARCHAR(10) NOT NULL COLLATE PXW_INTL850,
    SENHA       VARCHAR(10) NOT NULL COLLATE PXW_INTL850,
    NIVEL       CHAR(1) NOT NULL COLLATE PXW_INTL850
)


Em um banco Firebird 1.5 Dialect 3.

Estou tentando utilizar esta tabela como base como controle no meu form de acesso, o código segue abaixo:

procedure TFrmLogin.btCancelarClick(Sender: TObject);
begin
  Application.Terminate;
end;

procedure TFrmLogin.edUsuarioExit(Sender: TObject);
begin
  if (edusuario.Text = ´´) then
  begin
     Messagedlg(´Campo em branco, por favor, preencha-o corretamente´,mtWarning,[mbOK],0);
     edusuario.SetFocus;
  end;
end;

procedure TFrmLogin.btLogarClick(Sender: TObject);
begin
 Try
  DMod.dsUsuar.Close;
  DMod.dsUsuar.SelectSQL.Clear;
  DMod.dsUsuar.SelectSQL.Add(´Select * from USUARIOS´);
  DMod.dsUsuar.SelectSQL.Add(´Where USUARIO = ´+ UpperCase(edUsuario.Text));
  DMod.dsUsuar.Open;
  if (DMod.dsUsuarSENHA.Value = edSenha.Text) and (DMod.dsUsuarUSUARIO.Value = edUsuario.Text) then
  begin
    FrmSANCP.sbPrincipal.Panels[0].Text := ´Usuário logado: ´+edUsuario.Text;
    FrmLogin.Close;
  end else
  begin
     sbLogar.Panels[0].Text := ´Usuário e/ou Senha inexistente no sistema´;
     edusuario.Clear;
     edsenha.Clear;
     edusuario.SetFocus;
  end;
  Except
  begin
    sbLogar.Panels[0].Text := ´Falha na comunicação com o sistema´;
    edusuario.Clear;
    edSenha.Clear;
    edUsuario.SetFocus;
  end;
 end;
end;

procedure TFrmLogin.FormCreate(Sender: TObject);
begin
  if DMod.Conexao.Connected = false then
     DMod.Conexao.Connected := true;

  if DMod.dsUsuar.Active = false then
     DMod.dsUsuar.Open;
end;

procedure TFrmLogin.edSenhaExit(Sender: TObject);
begin
   if (edSenha.Text = ´´) then
  begin
     Messagedlg(´Campo em branco, por favor, preencha-o corretamente´,mtWarning,[mbOK],0);
     edSenha.SetFocus;
  end;
end;

end.


Porém ao tentar logar me aparece a seguinte mensagem:

Project SANCP.EXE raised exception EIBInterbaseBaseError with message
´Dinamic SQL Error
SQL Error Code = -206
Column unknowm
FLAVIA (nome do usuário na qual tentei logar)
At line 2, column 17´ Process stoped. Use stop or Run to continue.

O formulário é do tipo: fsStayOnTop
O sistema é feito com formulario MDIForm e MDIChild sendo este o unico fsStayOnTop do sistema.

Alguém poderia me ajudar?


Flavinha

Flavinha

Responder

Posts

18/02/2006

Vinicius2k

Colega,

Altere este trecho:
...
DMod.dsUsuar.SelectSQL.Add(´Select * from USUARIOS´);
DMod.dsUsuar.SelectSQL.Add(´Where USUARIO = ´+ UpperCase(edUsuario.Text));
...


Para:
...
DMod.dsUsuar.SelectSQL.Add(´Select * from USUARIOS´);
DMod.dsUsuar.SelectSQL.Add(´Where USUARIO = ´+ QuotedStr(UpperCase(edUsuario.Text)));
...


A função [b:352f7cec88]QuotedStr[/b:352f7cec88], irá colocar o texto de [i:352f7cec88]edUsuario.Text[/i:352f7cec88] entre aspas. O que é necessário em instruções sem parametros.

T+


Responder

18/02/2006

Flavinha

Obrigada Vinicius, está rodando perfeitamente agora.
Flavinha


Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

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

Aceitar