Controle de Acesso a um Sistema Delphi 7.0 Firebird 1.5

18/02/2006

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&93;,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&93;.Text := ´Usuário logado: ´+edUsuario.Text;
    FrmLogin.Close;
  end else
  begin
     sbLogar.Panels&91;0&93;.Text := ´Usuário e/ou Senha inexistente no sistema´;
     edusuario.Clear;
     edsenha.Clear;
     edusuario.SetFocus;
  end;
  Except
  begin
    sbLogar.Panels&91;0&93;.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&93;,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

Respostas

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 Citar

18/02/2006

Flavinha

Obrigada Vinicius, está rodando perfeitamente agora.
Flavinha


Responder Citar