Ajuda em trocar senha
Olá , gostaria de uma ajuda na hora de trocar senha , quando eu clico para trocar senha , ele diz que não é possível salvar e as vezes pede o campo código(Quando coloco QueryTrocaSenha.edit) , algo que ja tem , eu quero só trocar senha e manter os dados antigos, no programa está estas linhas de código:
QueryTrocaSenha.Close;
QueryTrocaSenha.SQL.Clear;
QueryTrocaSenha.SQL.Add('SELECT * FROM USUARIOS WHERE SENHA_USUARIO = :PRM_SenhaUsuA');
QueryTrocaSenha.ParamByName('PRM_SenhaUsuA').AsString := edtSenhaAntiga.text;
QueryTrocaSenha.Open;
if (QueryTrocaSenha.RecordCount) = 1 then
begin
If (edNovaSenha.text = edtConfirmaNvSenha.Text) then
begin
QueryTrocaSenha.FieldByName('SENHA_USUARIO').Value := edtConfirmaNvSenha.Text;
QueryTrocaSenha.ParamByName('PRM_SenhaUsuA').AsString := edtConfirmaNvSenha.text;
QueryTrocaSenha.Post;
Self.Close;
MessageDlg('Senha Modificada com sucesso!',mtConfirmation,[mbOK],0);
end else
begin
MessageDlg('Verifique se os campos de nova senha conferem!',mtError,[mbOK],0);
edtConfirmaNvSenha.SetFocus;
end;
end else
begin
Application.MessageBox('Senha antiga não confere!', 'Alerta', mb_Ok+
mb_IconExclamation);
edtSenhaAntiga.SetFocus;
end;
end;Jonathan Romeiro
Curtidas 0
Respostas
Alisson Santos
15/10/2012
Amigo o ideal é fazer um update na tabela, pois o jeito que está fazendo está errado mesmo, pois não está dando um update.
poderia fazer dessa maneira. So lembrando que tem que colocar dentro de uma transação, agora se quiser criar uma store procedure para fazer isso fica ao critério.
QueryTrocaSenha.Close;
QueryTrocaSenha.SQL.Clear;
QueryTrocaSenha.SQL.Add('SELECT * FROM USUARIOS WHERE SENHA_USUARIO = :PRM_SenhaUsuA');
QueryTrocaSenha.ParamByName('PRM_SenhaUsuA').AsString := edtSenhaAntiga.text;
QueryTrocaSenha.Open;
if (QueryTrocaSenha.RecordCount) = 1 then
begin
If (edNovaSenha.text = edtConfirmaNvSenha.Text) then
begin
QueryTrocaSenha.sql.add('update usuarios set senha = ' + edtConfirmaNvSenha.Text);
QueryTrocaSenha.sql.add('where cd_usuário = ' + parametro do usuário);
Self.Close;
MessageDlg('Senha Modificada com sucesso!',mtConfirmation,[mbOK],0);
end else
begin
poderia fazer dessa maneira. So lembrando que tem que colocar dentro de uma transação, agora se quiser criar uma store procedure para fazer isso fica ao critério.
QueryTrocaSenha.Close;
QueryTrocaSenha.SQL.Clear;
QueryTrocaSenha.SQL.Add('SELECT * FROM USUARIOS WHERE SENHA_USUARIO = :PRM_SenhaUsuA');
QueryTrocaSenha.ParamByName('PRM_SenhaUsuA').AsString := edtSenhaAntiga.text;
QueryTrocaSenha.Open;
if (QueryTrocaSenha.RecordCount) = 1 then
begin
If (edNovaSenha.text = edtConfirmaNvSenha.Text) then
begin
QueryTrocaSenha.sql.add('update usuarios set senha = ' + edtConfirmaNvSenha.Text);
QueryTrocaSenha.sql.add('where cd_usuário = ' + parametro do usuário);
Self.Close;
MessageDlg('Senha Modificada com sucesso!',mtConfirmation,[mbOK],0);
end else
begin
Olá , gostaria de uma ajuda na hora de trocar senha , quando eu clico para trocar senha , ele diz que não é possível salvar e as vezes pede o campo código(Quando coloco QueryTrocaSenha.edit) , algo que ja tem , eu quero só trocar senha e manter os dados antigos, no programa está estas linhas de código:
QueryTrocaSenha.Close;
QueryTrocaSenha.SQL.Clear;
QueryTrocaSenha.SQL.Add('SELECT * FROM USUARIOS WHERE SENHA_USUARIO = :PRM_SenhaUsuA');
QueryTrocaSenha.ParamByName('PRM_SenhaUsuA').AsString := edtSenhaAntiga.text;
QueryTrocaSenha.Open;
if (QueryTrocaSenha.RecordCount) = 1 then
begin
If (edNovaSenha.text = edtConfirmaNvSenha.Text) then
begin
QueryTrocaSenha.FieldByName('SENHA_USUARIO').Value := edtConfirmaNvSenha.Text;
QueryTrocaSenha.ParamByName('PRM_SenhaUsuA').AsString := edtConfirmaNvSenha.text;
QueryTrocaSenha.Post;
Self.Close;
MessageDlg('Senha Modificada com sucesso!',mtConfirmation,[mbOK],0);
end else
begin
MessageDlg('Verifique se os campos de nova senha conferem!',mtError,[mbOK],0);
edtConfirmaNvSenha.SetFocus;
end;
end else
begin
Application.MessageBox('Senha antiga não confere!', 'Alerta', mb_Ok+
mb_IconExclamation);
edtSenhaAntiga.SetFocus;
end;
end;GOSTEI 0
Jonathan Romeiro
15/10/2012
Fiz o que dissestes , mas é como se nada ocorresse fui no IBexpert e continuou a antiga senha.
GOSTEI 0
Gilvanio Gonçalves
15/10/2012
Jonathan, Onde vc esta usando este codigo em um botão, certo?
onde tem a string PRM_SenhaUsuA , é uma variavel?ou campo na tabela?
se for uma variavel como vc declara ela? onde vc declara, qual o valor?
vc tres edits. edtisenhaantiga,editnovasenha, editconfirmanovasenha.
Aqui :
vc diz no codigo que parametroname(prm_senhaUsuaA) é igual edtsenhaantiga
ou seja vc carrega a senha antiga do banco para este edit, como?
poste o codigo onde declara PRM_SenhaUsuA.
que vou ajustar o seu codigo,ok.
onde tem a string PRM_SenhaUsuA , é uma variavel?ou campo na tabela?
se for uma variavel como vc declara ela? onde vc declara, qual o valor?
vc tres edits. edtisenhaantiga,editnovasenha, editconfirmanovasenha.
Aqui :
QueryTrocaSenha.ParamByName('PRM_SenhaUsuA').AsString := edtSenhaAntiga.text;vc diz no codigo que parametroname(prm_senhaUsuaA) é igual edtsenhaantiga
ou seja vc carrega a senha antiga do banco para este edit, como?
poste o codigo onde declara PRM_SenhaUsuA.
que vou ajustar o seu codigo,ok.
GOSTEI 0
Alisson Santos
15/10/2012
Amigo, tentou executar no ibexpert o update.
Execute primeiramente o update e verifica se vai funcionar, caso não faz os acertos necessários e depois coloca no seu código.
Execute primeiramente o update e verifica se vai funcionar, caso não faz os acertos necessários e depois coloca no seu código.
GOSTEI 0
Jonathan Romeiro
15/10/2012
Gilvanio é uma variável ou melhor um parâmetro do fb que eu utilizo para receber os arquivos do edit, outra onde você citou como code é onde o parâmetro é declarado.
GOSTEI 0
Jonathan Romeiro
15/10/2012
Amigo, tentou executar no ibexpert o update.
Execute primeiramente o update e verifica se vai funcionar, caso não faz os acertos necessários e depois coloca no seu código.
Execute primeiramente o update e verifica se vai funcionar, caso não faz os acertos necessários e depois coloca no seu código.
Tentei no ibexpert e também não funcionou.
GOSTEI 0
Gilvanio Gonçalves
15/10/2012
Gilvanio é uma variável ou melhor um parâmetro do fb que eu utilizo para receber os arquivos do edit onde , outra onde você citou como code é onde o parâmetro é declarado.
entendi, vc usa o parametro levando o valor para o edit no caso acredito a senha atual do usuario,
veja bém para segurança de troca de senha, vc não acha que a rotina deveria pegar o usuario logado! onde só ele
pode alterar a senha?
no seu exemplo não vi onde vc define qual usuario será a troca de senha, para ele digitar a senha atual, ser verificada se é valida, e ser for valida, digita nova senha, e confirma a nova senha, e grava.
o que me diz?
GOSTEI 0
Jonathan Romeiro
15/10/2012
Gilvânio , tentei outro meio aqui usando update ,deu certo ,eu não faria o que me disse pois o programa ja está demorando muito na minha mão e preciso entregar pronto logo.
GOSTEI 0