login com interbase (como faço?)
20/05/2003
0
Estou acessando o banco da seguinte forma.
tenho um data module com:
um IBdatabase
um IBTransaction
um IBDataSet
um IbDataSource
Por enquanto o banco de dados tem apenas 3 campos:
Código
USuário
Senha
Como faço para fechar o formulário apenas se o nome e o usuário digitado em dois edits sejam comprados com os dados do banco de dados.
Grata.
Michele
Posts
20/05/2003
Flavio Sanches
1 - Banco de dados não tem campos, as tabelas é que tem campos
2 - O banco de dados tem users (usuários) que vc pode acessar através da sua aplicação
Ou seja...
Tente ser um pouquinho mais explícita.
20/05/2003
Michele
Nome do banco é empresa.grd
nesta tabela tem 3 campos.
codigo usuario e senha
são esses campos que eu preciso comparar
20/05/2003
Flavio Sanches
select * from <tabela>
where usuario = :usuario
depois, na sua aplicação, no click de um botão sair, por exemplo:
ibquery.close;
ibquery.parambyname(´usuario´).asstring := edit1.text;
ibquery.open;
if ibquery1.fieldbyname(´usuario´).asstring = esit2.text then
close;
ve se seria mais ou menos isso
20/05/2003
Michele
mas comparo isso com a senha....
20/05/2003
Marcelo.c
eu utilizo ADO, mas o princípio é o mesmo. O código abaixo pode te dar uma idéia de como proceder:
procedure TF_Menu.FormShow(Sender: TObject);
var
i: integer;
begin
DM_Geral.TabSenha.Open;
for i:= 0 to 2 do
begin
F_Senha.ShowModal;
vusuario:=F_Senha.Edit1.Text;
vsenha:=F_Senha.Edit2.Text;
if not DM_Geral.TabSenha.Locate(´Usuario;Entrada´, VarArrayOf([vusuario, ´True´]), []) then
MessageDlg(´ Usuário não Cadastrado !!! ´, mtInformation, [mbOk], 0)
else
if DM_Geral.TabSenhaSenha.Value<>vsenha then
MessageDlg(´ Senha inválida !!! ´, mtInformation, [mbOk], 0)
else
break;
if i=2 then
close;
end;
end;
21/05/2003
Flavio Sanches
Pelo que vc falou vc vai criticar o usuario pra ver se ele tem permissão pra sair do aplicativo, certo?
se certo então
os dois edits mencionados são um pra o usuário e outro pra senha?
se certo então tente isso...
ibquery.close;
ibquery.parambyname(´usuario´).asstring := Edt_usuario.text;
ibquery.open;
{
acima vc passa o parametro usuario pra query que vai retornar o registro no qual o mesmo está cadastrado, que conterá o nome do usuario e a senha dele, daí é so comparar
}
if ibquery1.fieldbyname(´usuario´).asstring = Edt_usuario.text
and ibquery1.fieldbyname(´senha´).asstring = Edt_senha.text then
close;
Acho que essa forma é mais simples do que a do amigo gean.
Vc pode melhorar exibindo mensagens pra senha errada ou usuario não cadastrado.
Desculpe não ser tão detalhado, mas prefiro supor que vc tenha conhecimento suficiente pra entender e até adaptar o pouco que eu disse a sua necessidade.
ve se seria mais ou menos isso
21/05/2003
Michele
só que quando mando compilar ele não reconhece o ibquery1.
veja se estou fazendo certo
coloquei um ibquery1 no meu data module
na propriedade database vinculei com o ibdatabase1
na propriedade transaction vinculei com ibtransaction1
o que estou fazendo errado?
21/05/2003
Flavio Sanches
tipo:
with datamodule1 do
begin
ibquery1.....
end;
só assim ele vai saber que o ibquery está dentro do datamodule.
Caso, o que eu acredito, vc esteja fazendo isso, mande uma transcrição da mensagem de erro.
beijin
21/05/2003
Michele
parou de dar o erro.
Agora aparece outro erro:
ibquery1:Parameter ´usuario´ not found.
na instrução sql do ibquery1 adicionei:
select * from usuario
where usuario=:usuario
aonde estou errando agora?
21/05/2003
Michele
mas esta comparação é case sensitive.
tem como deixar o usuario sem ser?
beijos.
21/05/2003
Michele
mas esta comparação é case sensitive.
tem como deixar o usuario sem ser?
beijos.
21/05/2003
Michele
mas agora verifiquei que se deixo os dois edits em branco o form fecha assim mesmo, tem alguma sugestão para mim resolver isso?
21/05/2003
Guedes.rj
E um pouco complicado!
Talvez se vc enviar (para o e-mail abaixo) os arquivos envolvidos neste problemas talvez possamos ajudá-la.
Guedes.
guedes.rj@bol.com.br
21/05/2003
Michele
Por hora meus problemas foram resolvidos.
21/05/2003
Flavio Sanches
if upcase(ibquery1.fieldbyname(´usuario).asstring) = upcase(edt_usuario.text)
e quanto fechar mesmose o edit estiver em branco, a tabela deve ter algum registro em branco, teste o edt_usuario.text <> ´´, assim:
if upcase(ibquery1.fieldbyname(´usuario).asstring) = upcase(edt_usuario.text) and edt_usuario.text <> ´´ then
obs.: Em edt_usuario.text <> ´´, o ´´(plic,plic) não é ´ (aspa) mas ´(plic) + ´(plic)
Clique aqui para fazer login e interagir na Comunidade :)