Fórum problema ao alterar senha de usuario #423734
16/09/2012
0
tenho um campo usuario onde o sistema compara se o usuario está cadastrado no banco de dados..
E dois edits para comparar a nova senha para atualizar o banco de dados..
Só que ao comparar os edits o sistema não está compilando..
da erro justamente na linha que compara os edits..estou usando variais neste caso..
procedure Tfrmaltus.btnconfirmarClick(Sender: TObject);
var
senha1: string;
senha2: string;
begin
edit2.text:=senha1;
edit3.text:=senha2;
if (edit1.Text = '') then
begin
Messagedlg('O campo "Usuário" deve ser preenchido!', mtError, [mbOk], 0);
if edit1.CanFocus then
edit1.SetFocus;
Exit;
end;
if (edit2.Text = '') then
begin
Messagedlg('O campo "Senha" deve ser preenchido!', mtError, [mbOk], 0);
if edit2.CanFocus then
edit2.SetFocus;
Exit;
end;
if (edit3.Text = '') then
begin
Messagedlg('O campo "Nova senha" deve ser preenchido!', mtError, [mbOk], 0);
if edit3.CanFocus then
edit3.SetFocus;
Exit;
end;
if logvalido (edit1.Text) then
ModalResult := mrOk
else
Messagedlg('Usuário não cadastrado!', mtError, [mbOk], 0);
if edit1.CanFocus then
edit1.SetFocus;
Exit;
end;
if UpperCase(senha1) = UpperCase(senha2) then
begin
DM.ADOQuerySql.SQL.CLEAR;
DM.ADOQuerySql.SQL.ADD('update administrador set usuario= '+QuotedStr(trim(senha1))+', '+quotedstr(trim(senha2))+', where usuario= '+edit1.Text);
DM.ADOQuerySql.execsql;
showmessage('Senha alterada com sucesso!');
end;
end;
function Tfrmaltus.logvalido(const usuario: string): Boolean;
begin
with DM.ADOconexao, DM.ClientDataSet do
begin
if not connected then
connected :=true;
DM.ClientDataSet.Close;
DM.ClientDataSet.commandtext := 'select count(1) from administrador ' + 'where upper(usuario) = '+ Quotedstr(AnsiupperCase(trim(usuario)));
DM.ClientDataSet.Open;
result := (Fields[0].AsInteger > 0);
end;
end;
end;
end.
Grato a quem possa ajudar
Mauricio Nicoli
Curtir tópico
+ 0Posts
16/09/2012
Mauricio Nicoli
if (edit2.Text = '') then
begin
Messagedlg('O campo "Senha" deve ser preenchido!', mtError, [mbOk], 0);
if edit2.CanFocus then
edit2.SetFocus;
Exit;
end;
codigo inteiro...
procedure Tfrmaltus.btnconfirmarClick(Sender: TObject);
var
senha1: string;
senha2: string;
begin
edit2.text:=senha1;
edit3.text:=senha2;
if (edit1.Text = '') then
begin
Messagedlg('O campo "Usuário" deve ser preenchido!', mtError, [mbOk], 0);
if edit1.CanFocus then
edit1.SetFocus;
Exit;
end;
if (edit2.Text = '') then
begin
Messagedlg('O campo "Senha" deve ser preenchido!', mtError, [mbOk], 0);
if edit2.CanFocus then
edit2.SetFocus;
Exit;
end;
if (edit3.Text = '') then
begin
Messagedlg('O campo "Nova senha" deve ser preenchido!', mtError, [mbOk], 0);
if edit3.CanFocus then
edit3.SetFocus;
Exit;
end;
if logvalido (edit1.Text) then
ModalResult := mrOk
else
begin
Messagedlg('Usuário não cadastrado!', mtError, [mbOk], 0);
if edit1.CanFocus then
edit1.SetFocus;
Exit;
end;
if UpperCase(senha1)=UpperCase(senha2) then
begin
DM.ADOQuerySql.SQL.CLEAR;
DM.ADOQuerySql.SQL.ADD('update administrador set usuario= '+QuotedStr(trim(senha1))+', '+quotedstr(trim(senha2))+', where usuario= '+edit1.Text);
DM.ADOQuerySql.execsql;
showmessage('Senha alterada com sucesso!');
end;
end;
function Tfrmaltus.logvalido(const usuario: string): Boolean;
begin
with DM.ADOconexao, DM.ClientDataSet do
begin
if not connected then
connected :=true;
DM.ClientDataSet.Close;
DM.ClientDataSet.commandtext := 'select count(1) from administrador ' + 'where upper(usuario) = '+ Quotedstr(AnsiupperCase(trim(usuario)));
DM.ClientDataSet.Open;
result := (Fields[0].AsInteger > 0);
end;
end;
Gostei + 0
16/09/2012
Mauricio Nicoli
if (edit2.Text = '') then
begin
Messagedlg('O campo "Senha" deve ser preenchido!', mtError, [mbOk], 0);
if edit2.CanFocus then
edit2.SetFocus;
Exit;
end;
e pede >>>> 'O campo "Senha" deve ser preenchido!'...
codigo inteiro...
procedure Tfrmaltus.btnconfirmarClick(Sender: TObject);
var
senha1: string;
senha2: string;
begin
edit2.text:=senha1;
edit3.text:=senha2;
if (edit1.Text = '') then
begin
Messagedlg('O campo "Usuário" deve ser preenchido!', mtError, [mbOk], 0);
if edit1.CanFocus then
edit1.SetFocus;
Exit;
end;
if (edit2.Text = '') then
begin
Messagedlg('O campo "Senha" deve ser preenchido!', mtError, [mbOk], 0);
if edit2.CanFocus then
edit2.SetFocus;
Exit;
end;
if (edit3.Text = '') then
begin
Messagedlg('O campo "Nova senha" deve ser preenchido!', mtError, [mbOk], 0);
if edit3.CanFocus then
edit3.SetFocus;
Exit;
end;
if logvalido (edit1.Text) then
ModalResult := mrOk
else
begin
Messagedlg('Usuário não cadastrado!', mtError, [mbOk], 0);
if edit1.CanFocus then
edit1.SetFocus;
Exit;
end;
if UpperCase(senha1)=UpperCase(senha2) then
begin
DM.ADOQuerySql.SQL.CLEAR;
DM.ADOQuerySql.SQL.ADD('update administrador set usuario= '+QuotedStr(trim(senha1))+', '+quotedstr(trim(senha2))+', where usuario= '+edit1.Text);
DM.ADOQuerySql.execsql;
showmessage('Senha alterada com sucesso!');
end;
end;
function Tfrmaltus.logvalido(const usuario: string): Boolean;
begin
with DM.ADOconexao, DM.ClientDataSet do
begin
if not connected then
connected :=true;
DM.ClientDataSet.Close;
DM.ClientDataSet.commandtext := 'select count(1) from administrador ' + 'where upper(usuario) = '+ Quotedstr(AnsiupperCase(trim(usuario)));
DM.ClientDataSet.Open;
result := (Fields[0].AsInteger > 0);
end;
end;
Gostei + 0
17/09/2012
Alisson Santos
1º O que precisa que o sistema faça.
2º Qual o erro que está retornando e em qual linha.
3º Está debugando para verificar os valores que está sendo passado.
Gostei + 0
17/09/2012
Romulo Contro
Gostei + 0
17/09/2012
Mauricio Nicoli
preciso que ao digitar o nome do usuário senha nova e confirmação de senha..sendo edit1 edit2 e edit3 respectivamente..
o sistema primeiro verifique se o usuário está cadastrado no banco de dados mysql..
dando ok passa-se para a próxima etapa..
sendo a senha1 e senha2 iguais ou seja...nova senha e confirmação de senha respectivamente..
o sistema tem que atualizar o banco de dados com a nova senha cadastrada..
só que agora depois de mexer no sistema ele está tentando validar a atualização mas não consegue..diz a mensagem de erro..
[b]check the manual corresponds to your Mysql server version for the right syntax to use near "123456", where usuario=mauricio at line 1[/b]
Dá erro nesta linha..
showmessage('Senha alterada com sucesso!');
procedure Tfrmaltus.btnalterarClick(Sender: TObject);
var
senha1: string;
senha2: string;
begin
senha1:=edit2.text;
senha2:=edit3.text;
if (edit1.Text = '') then
begin
Messagedlg('O campo "Usuário" deve ser preenchido!', mtError, [mbOk], 0);
if edit1.CanFocus then
edit1.SetFocus;
Exit;
end;
if (edit2.Text = '') then
begin
Messagedlg('O campo "Senha" deve ser preenchido!', mtError, [mbOk], 0);
if edit2.CanFocus then
edit2.SetFocus;
Exit;
end;
if (edit3.Text = '') then
begin
Messagedlg('O campo "Nova senha" deve ser preenchido!', mtError, [mbOk], 0);
if edit3.CanFocus then
edit3.SetFocus;
Exit;
end;
if not logvalido (edit1.Text) then
begin
Messagedlg('Usuário não cadastrado!', mtError, [mbOk], 0);
if edit1.CanFocus then
edit1.SetFocus;
Exit;
end;
if UpperCase(senha1)=UpperCase(senha2) then
begin
DM.ADOQuerySql.SQL.CLEAR;
DM.ADOQuerySql.SQL.ADD('update administrador set usuario= '+QuotedStr(trim(senha1))+', '+quotedstr(trim(senha2))+', where usuario= '+edit1.Text);
DM.ADOQuerySql.execsql;
showmessage('Senha alterada com sucesso!');
ModalResult := mrOk;
end
else
ShowMessage('A confirmação da senha está diferente da senha!');
end;
Gostei + 0
18/09/2012
Alisson Santos
Ao invé de fazer desse jeito
DM.ADOQuerySql.SQL.ADD('update administrador set usuario= '+QuotedStr(trim(senha1))+', '+quotedstr(trim(senha2))+', where usuario= '+edit1.Text)
Faça desse jeito para ver se resolve.
DM.ADOQuerySql.SQL.ADD('update administrador set usuario= '+QuotedStr(trim(senha1))+', where usuario= '+edit1.Text)
Pois analisando não entendi pq passou dois campos de senha, sendo que ele você tem que passar apenas um campo para o update, do jeito que fez ele não vai reconhecer o segundo campo.
Sempre que tiver alguma duvida debuga o programa e verifica o que ele está passando, nesse caso quando ele chegar nessa instrução tem que verificar o que ele está passando para o seu update antes de executar, verificar a instução sql.
Se precisar de ajuda no debugger me fala que eu te oriento.
Gostei + 0
18/09/2012
Mauricio Nicoli
Ao desenvolver um projeto o programa pode, durante o desenvolvimento trancar em alguma linha..
Pelo que entendi este procedimento ajuda a entender melhor o que está acontecendo com o sistema..
Agradeço se puder ajudar neste sentido sobre o procedimento de debugar..
Gostei + 0
18/09/2012
Mauricio Nicoli
showmessage('Senha alterada com sucesso!');
[b]check the manual corresponds to your Mysql server version for the right syntax to use near where usuario=mauricio at line 1.[/b]
Gostei + 0
18/09/2012
Mauricio Nicoli
if (edit1.text <> '') and (edit2.Text <> '') then
begin
DM.ADOQuerySql.SQL.CLEAR;
DM.ADOQuerySql.SQL.ADD('update administrador set usuario= '+QuotedStr(trim(senha1))+', where usuario= '+edit1.Text);
DM.ADOQuerySql.execsql;
showmessage('Senha alterada com sucesso!');
ModalResult := mrOk;
end
else
ShowMessage('A confirmação da senha está diferente da senha!');
end;
Gostei + 0
18/09/2012
Alisson Santos
Logo que chegar em casa estarei simulando o que está ocorrendo e te passo uma resposta mais correta.
Pode ser assim.
E faço uma video de como utilizar o debug para verificar o retorno do sql.
Gostei + 0
18/09/2012
Mauricio Nicoli
deixei de ir ao estágio hoje para ficar em casa trabalhando em cima do projeto..
obrigado..
Gostei + 0
18/09/2012
Bruno Leandro
tente assim as duas formas seja se algum deu certo e nos retorne
DM.ADOQuerySql.SQL.ADD('update administrador set senha = '+QuotedStr(senha1)+' where usuario = ' + edit1.Text );
ou
DM.ADOQuerySql.SQL.ADD('update administrador set senha = '+QuotedStr(senha1)+' where usuario = ' + QuotedStr(edit1.Text) );
Gostei + 0
18/09/2012
Deivison Melo
Debugando não encontrou o ponto exato?
Gostei + 0
18/09/2012
Mauricio Nicoli
fiz o processo de debuggar o programa para ver se a variavel carrega o que foi digitado do edit
na linha
DM.ADOQuerySqlalterar.SQL.ADD('update administrador set senha= '+QuotedStr(senha1)+', where usuario= '+QuotedStr(editalterarus.Text));Debugei e vi que a variável senha1 carrega os dados "123456" que foram os mesmos que eu digitei no edit antes de apertar o botão alterar..
e na linha..
DM.ADOQuerySqlalterar.execsql;
debugei também e diz DM.ADOQuerySqlalterar.execsql=inaccessible value
Se a variavel consegue carregar o valor digita porque não atualiza o bd?
procedure Tfrmaltus.btnalterarusClick(Sender: TObject);
var
senha1: string;
begin
senha1:=editsenhaus.text;
if (editalterarus.Text = '') then
begin
Messagedlg('O campo "Usuário" deve ser preenchido!', mtError, [mbOk], 0);
if editalterarus.CanFocus then
editalterarus.SetFocus;
Exit;
end;
if (editsenhaus.Text = '') then
begin
Messagedlg('O campo "Senha" deve ser preenchido!', mtError, [mbOk], 0);
if editsenhaus.CanFocus then
editsenhaus.SetFocus;
Exit;
end;
if not logvalido (editalterarus.Text) then
begin
Messagedlg('Usuário não cadastrado!', mtError, [mbOk], 0);
if editalterarus.CanFocus then
editalterarus.SetFocus;
Exit;
end;
if (editalterarus.Text <> '') and (editsenhaus.Text <> '') then
begin
DM.ADOQuerySqlalterar.SQL.CLEAR;
DM.ADOQuerySqlalterar.SQL.ADD('update administrador set senha= '+QuotedStr(senha1)+', where usuario= '+QuotedStr(editalterarus.Text));
DM.ADOQuerySqlalterar.execsql;
showmessage('Senha alterada com sucesso!');
ModalResult := mrOk;
end
else
ShowMessage('A confirmação da senha está diferente da senha!');
end;
function Tfrmaltus.logvalido(const usuario: string): Boolean;
begin
with DM.ADOconexaoalterar, DM.ClientDataSetalterar do
begin
if not connected then
connected :=true;
DM.ClientDataSetalterar.Close;
DM.ClientDataSetalterar.commandtext := 'select count(1) from administrador ' + 'where upper(usuario) = '+ Quotedstr(AnsiupperCase(trim(usuario)));
DM.ClientDataSetalterar.Open;
result := (Fields[0].AsInteger > 0);
end;
end;
Gostei + 0
18/09/2012
Bruno Leandro
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)