procedure TF_Res_PWD.btn1Click(Sender: TObject);
begin
      if edt1.Text='' then
      begin
          ShowMessage('请输入旧密码');
      end;
      if edt2.Text='' then
      begin
          ShowMessage('请输入新密码');
      end;
      if edt3.Text='' then
      begin
          ShowMessage('请输入确认密码');
      end;
      if not (edt2.Text=edt3.Text) then
      begin
          ShowMessage('两次密码输入不一样');
      end;
      with DataModule1.qry_login do
              begin
                 Close;
                 SQL.Clear;
                 SQL.Add('SELECT spassword FROM sinfo WHERE sno='+username+'');
                 try
                 Open;
                 except
               end;
               edt1.Text:='';
               edt2.Text:='';
               edt3.Text:='';
             end;        if (Edt1.Text=DataModule1.qry_login.FieldByName('spassword').AsString) and (edt2.Text=edt3.Text) then
               begin
                   with DataModule1.qry_login do
                        begin
                        Close;
                        SQL.Clear;
                        SQL.Add('UPDATE sinfo SET spassword='+edt2.text+' WHERE sno='+username+'');
                        ExecSQL;
                        end;
               end
            else
            begin
              Application.MessageBox('密码错误!','提示',MB_OK or MB_ICONSTOP);
              edt1.SetFocus;
              edt1.SelectAll;
              Edt2.SetFocus;
              Edt2.SelectAll;
              edt3.SetFocus;
              edt3.SelectAll;            end;
end;上面我写的代码。执行的时候有错误。
请高手指点,有关于修改密码的源码发给我也可以。注明ID问题解决立即给分
邮箱[email protected]

解决方案 »

  1.   

    with DataModule1.qry_login do
                  begin
                     Close;
                     SQL.Clear;
                     SQL.Add('SELECT spassword FROM sinfo WHERE sno='+ QuotedStr(username));
                     try
                     Prepared := true;
                     Open;
                     except
                   end;
                   edt1.Text:='';
                   edt2.Text:='';
                   edt3.Text:='';
                 end;        if (Edt1.Text=DataModule1.qry_login.FieldByName('spassword').AsString) and (edt2.Text=edt3.Text) then
                   begin
                       with DataModule1.qry_login do
                            begin
                            Close;
                            SQL.Clear;
                            SQL.Add('UPDATE sinfo SET spassword='+ QuotedStr(edt2.text)+' WHERE sno='+ QuotedStr(username));
                            ExecSQL;
                            end;
                   end
                else
      

  2.   

    或者:
    procedure TF_Res_PWD.btn1Click(Sender: TObject);
    begin
          if edt1.Text='' then
          begin
              ShowMessage('请输入旧密码');
              edt1.SetFocues;
              exit; 
          end;
          if edt2.Text='' then
          begin
              ShowMessage('请输入新密码');
              edt2.SetFocues;
              exit;
          end;
          if edt3.Text='' then
          begin
              ShowMessage('请输入确认密码');
              edt3.SetFocues;
              exit;
          end;
          if not (edt2.Text=edt3.Text) then
          begin
              ShowMessage('两次密码输入不一样');
              edt3.Clear;
              edt2.Clear;
              edt2.SetFocus;
              exit;
          end;// 此处加上原密码验证:假设用的是qry_login
       if not DataModule1.qry_login.IsEmpty then
       begin
          DataModule1.qry_login.Close;
          DataModule1.qry_login.Sql.Clear;
          DataModule1.qry_login.SQL.Add('UPDATE sinfo SET spassword='+edt2.text+' WHERE sno='+username);
       end      with DataModule1.qry_login do
                  begin
                     Close;
                     SQL.Clear;
                     SQL.Add('SELECT spassword FROM sinfo WHERE sno='+username+'');
                     try
                     Open;
                     except
                   end;
                   edt1.Text:='';
                   edt2.Text:='';
                   edt3.Text:='';
                 end;        if (Edt1.Text=DataModule1.qry_login.FieldByName('spassword').AsString) and (edt2.Text=edt3.Text) then
                   begin
                       with DataModule1.qry_login do
                            begin
                            Close;
                            SQL.Clear;
                            SQL.Add('UPDATE sinfo SET spassword='+edt2.text+' WHERE sno='+username+'');
                            ExecSQL;
                            end;
                   end
                else
                begin
                  Application.MessageBox('密码错误!','提示',MB_OK or MB_ICONSTOP);
                  edt1.SetFocus;
                  edt1.SelectAll;
                  Edt2.SetFocus;
                  Edt2.SelectAll;
                  edt3.SetFocus;
                  edt3.SelectAll;            end;
    end;
      

  3.   

    procedure TF_Res_PWD.btn1Click(Sender: TObject);
    begin
      if edt1.Text='' then
      begin
        ShowMessage('请输入旧密码');
        //加入返回
        Edt1.SetFocus;
        Exit;
      end;
      if edt2.Text='' then
      begin
        ShowMessage('请输入新密码');
        //加入返回
        Edt2.SetFocus;
        Exit;
      end;
      if edt2.Text <> edt3.Text then
      begin
        ShowMessage('两次密码输入不一样');
        Edt2.SetFocus;
        Exit;
      end;
      with DataModule1.qry_login do
      begin
        Close;
        SQL.Text := 'SELECT spassword FROM sinfo '
          + 'WHERE sno='+ QuotedStr(username);
        try
          Open;
        except    end;
        //如果没有找到username用户
        //那么退出
        if RecordCount <= 0 then
        begin
          ShowMessage('用户没有找到');
          Exit;
        end;    //修改密码
        Edit;
        FieldByName('spassword').AsString := edt2.Text;
        try
          Post; //提交
          ShowMessage('更新密码失败');
        except
          ShowMessage('更新密码成功');
        end;
      end;
    end;
      

  4.   

    晕,刚还没完,点错了
    procedure TF_Res_PWD.btn1Click(Sender: TObject);
    begin
          if edt1.Text='' then
          begin
              ShowMessage('请输入旧密码');
              edt1.SetFocues;
              exit; 
          end;
          if edt2.Text='' then
          begin
              ShowMessage('请输入新密码');
              edt2.SetFocues;
              exit;
          end;
          if edt3.Text='' then
          begin
              ShowMessage('请输入确认密码');
              edt3.SetFocues;
              exit;
          end;
          if not (edt2.Text=edt3.Text) then
          begin
              ShowMessage('两次密码输入不一样');
              edt3.Clear;
              edt2.Clear;
              edt2.SetFocus;
              exit;
          end;// 此处加上原密码验证:假设用的是qry_login
       if not DataModule1.qry_login.IsEmpty then
       begin
          DataModule1.qry_login.Close;
          DataModule1.qry_login.Sql.Clear;
          DataModule1.qry_login.SQL.Add('UPDATE sinfo SET spassword='+QuotedStr(edt2.text)+' WHERE sno='+ QuotedStr(username) + ' AND spassword=' + QuotedStr(edt1.Text));
          DataModule1.qry_login.ExecSQL;
          Showmessage('修改成功');
          // 清楚操作
       end
       else begin
         Showmessage('原密码有错');
         edt2.Clear;
         // 清楚操作
       end;
    end;
      

  5.   

    段海的这两个语句有一点点小问题,就是成功和失败反了
          ShowMessage('更新密码失败');
        except
          ShowMessage('更新密码成功');
    马上给分。
    另外的程序我没有验证。也都给分。呵呵。
    多谢了!
    今天终于把选课系统搞好了