Fórum Ajuda em trocar senha #426182

15/10/2012

0

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

Jonathan Romeiro

Responder

Posts

15/10/2012

Alisson Santos

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



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;


Responder

Gostei + 0

15/10/2012

Jonathan Romeiro

Fiz o que dissestes , mas é como se nada ocorresse fui no IBexpert e continuou a antiga senha.
Responder

Gostei + 0

15/10/2012

Gilvanio Gonçalves

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 :
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.
Responder

Gostei + 0

16/10/2012

Alisson Santos

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.
Responder

Gostei + 0

19/10/2012

Jonathan Romeiro

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.
Responder

Gostei + 0

19/10/2012

Jonathan Romeiro

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.

Tentei no ibexpert e também não funcionou.
Responder

Gostei + 0

19/10/2012

Gilvanio Gonçalves

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?
Responder

Gostei + 0

24/10/2012

Jonathan Romeiro

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.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar