Array
(
)

Controle de Acesso a um Sistema Delphi 7.0 Firebird 1.5

Flavinha
   - 18 fev 2006

Possuo uma tabela com os seguintes campos:

#Código

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:

#Código
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?


Vinicius2k
   - 18 fev 2006

Colega,

Altere este trecho:
#Código

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


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


A função QuotedStr, irá colocar o texto de edUsuario.Text entre aspas. O que é necessário em instruções sem parametros.

T+


Flavinha
   - 18 fev 2006

Obrigada Vinicius, está rodando perfeitamente agora.
Flavinha