login com interbase (como faço?)

20/05/2003

0

Estou fazendo uma tela de login, e estou usando o interbase.

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

Michele

Responder

Posts

20/05/2003

Flavio Sanches

Não deu pra entender direito o que vc quer, mas preciso esclarecer que:
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.


Responder

20/05/2003

Michele

desculpe no meu banco de dados tenho uma tabela apenas.
Nome do banco é empresa.grd

nesta tabela tem 3 campos.

codigo usuario e senha

são esses campos que eu preciso comparar


Responder

20/05/2003

Flavio Sanches

coloque um ibquery e na instrução sql coloque alguma coisa assim:

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


Responder

20/05/2003

Michele

agradeço sua resposta mas pelo que entendi só compara o usuário.
mas comparo isso com a senha....


Responder

20/05/2003

Marcelo.c

Michele,

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;


Responder

21/05/2003

Flavio Sanches

Veja se eu entendi...

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


Responder

21/05/2003

Michele

é exatamente isso que estou precisando.
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?


Responder

21/05/2003

Flavio Sanches

Na aplicação vc está, obviamente, mencionando o datamodule, né???

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


Responder

21/05/2003

Michele

tirei o ibquery1 do datamodule e coloquei dentro do form,
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?


Responder

21/05/2003

Michele

agora está funcionando, sou muito grata por sua ajuda.

mas esta comparação é case sensitive.
tem como deixar o usuario sem ser?

beijos.


Responder

21/05/2003

Michele

agora está funcionando, sou muito grata por sua ajuda.

mas esta comparação é case sensitive.
tem como deixar o usuario sem ser?

beijos.


Responder

21/05/2003

Michele

desculpe acho que estou dando um pouco de trabalho,
mas agora verifiquei que se deixo os dois edits em branco o form fecha assim mesmo, tem alguma sugestão para mim resolver isso?


Responder

21/05/2003

Guedes.rj

Sei problema está muito complexo!
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


Responder

21/05/2003

Michele

Agradeço muito pela ajuda.
Por hora meus problemas foram resolvidos.


Responder

21/05/2003

Flavio Sanches

quanto ao case sensitive vc pode colocar os dois como case up, assim:


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)


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