Delphi中有4个控件 Edit1,Edit2,Edit3和ADOQuery.Edit1表示旧密码,Edit2表示输入的新密码,Edit3表示确认新密码。如果我用abc登录,旧修改abc的密码,如果用admin登录,就修改admin的密码。就是不同的登录用户修改该登录用户的密码。修改当前用户的密码。

解决方案 »

  1.   

    if edit1.text ='****' then
    begin
      if edit2.text = edit3.text then
      begin
        with adoquery do
        begin
          close;
          sql.text := ' updata table1 set password ='+quotedstr(edit2.text)+ ' where  username ='+quotedstr(用户名);
          ExecSQL;
        end; 
      end
      else
      begin
           //提示两次输入的密码不一致
      end;
    end
    else
    begin
      //提示旧密码不正确
    end;随手写的 ,基本上就这样了
      

  2.   

    var YSmima:string;
    begin
      if edit2.Text<>edit3.Text then
      begin
        messagebox(handle,'确认码不正确,请检查!','提示',MB_OK+MB_ICONERROR);
        edit3.SetFocus;
        edit3.SelectAll;
        exit;
      end;
      //先查询出来原始密码,然后进行对比
      with adoquery1 do
      begin
        close;
        sql.Clear;
        sql.Add('select * from SFIS_User where UserCode='''+copy(combobox1.Text,1,6)+'''');
        open;
        YSmima:=fieldbyname('PassWord').AsString;
      end;  if Edit1.Text<>YSmima then
      begin
        messagebox(handle,'原始密码输入不正确!','提示',MB_OK+MB_ICONinformation);
        Exit;
      end;   with adoquery1 do
       begin
         close;
         sql.Clear;
         sql.Add('select * from SFIS_User where UserCode='''+copy(combobox1.Text,1,6)+'''');
         open;
         Edit;
         fieldbyname('PassWord').AsString:=edit2.Text;
         post;
         messagebox(handle,'密码修改成功!','提示',MB_OK+MB_ICONinformation);
       end;
    end;
      

  3.   

    procedure TPwdForm.bitbtn_okClick(Sender: TObject);
    var
      sql:string;
    begin
      sql:='update op_info set op_password=:a where op_name=:b';
      if (edt_old.Text)<>(LoginForm.edt_pwd.Text) then
      begin
          MessageBox(handle,'旧密码有误','提示',MB_OK or MB_ICONERROR);
          
      end
      else if edt_new.Text='' then
        begin
            MessageBox(Handle,'密码不能为空','提示',MB_OK or mb_iconinformation);
        end
      else if (edt_ok.Text)<>(edt_new.Text) then
        begin
            MessageBox(Handle,'两次新密码不一致,请重输','提示',MB_OK or mb_iconinformation);    end
      else
      begin
      qry.Close;
      qry.SQL.Clear;
      qry.SQL.Add(sql);
      qry.Parameters.ParamByName('a').Value:=edt_new.Text;
      qry.Parameters.ParamByName('b').Value:=LoginForm.edt_username.Text;
      qry.ExecSQL;
      MessageBox(Handle,'修改成功','提示',MB_OK or MB_ICONINFORMATION);
      UnitLogin.Log.WriteString('login','password',edt_new.Text);
      end;
    end;LoginForm表示登录窗口
      

  4.   

    先查询数据库中的旧密码,与EDIT1的数据进行比较,如正确则比较EDIT2、EDIT3的数据是否一致,
    如一致则更新数据库。