就一个用户密码修改问题, Edit1 写(用户名),Edit2 写(旧密码) , Edit3 写(新密码),  Edit4 确认一下(新密码)
代码:
if (edit3.Text=edit4.Text)and(edit4.Text <>'')and(edit2.Text <>'')and(edit3.Text <>'') then
  begin 
    adoquery1.Close; 
    adoquery1.Prepared;
    ADOQuery1.SQL.Clear;
    adoquery1.SQL.Add('select * from jluser where name =:name');
    adoquery1.Parameters.ParamValues['name']:=trim(edit1.text);
    adoquery1.Open;
    if not ADOQuery1.RecordCount>0 then
      begin 
        if  adoquery1.FieldByName('pass').AsString=trim(edit2.text) then
          begin 
            adoquery1.Close;
            adoquery1.Prepared;
            ADOQuery1.SQL.Clear; 
            adoquery1.SQL.Add('update  jluser set pass = '''+trim(edit4.Text)+''' where name =:name');
            adoquery1.Parameters.ParamValues['name']:=trim(edit1.text);
            adoquery1.ExecSQL;
            showmessage('修改成功!!!');
          end 
        else
          showmessage('旧密码不正确!!!'); 
      end; 
  end
  else
    showmessage('不能为空!'#13'或者两次新密码不正确!!!');
--------------------
结果我输入的旧密码不管正确和否 都说:旧密码不正确!!!,修改都是不成功.
大家帮我看看,具体哪错了?
超级小菜鸟谢谢!!!

解决方案 »

  1.   

    if Trim(adoquery1.FieldByName('pass').AsString)=trim(edit2.text) then
    试试
      

  2.   

      if not ADOQuery1.RecordCount>0 then 
    ?????????????????????????RecordCount<=0才能执行下面的代码?而<=0时候,是没有数据的,后面的if 一定为否,所以会执行‘旧密码不正确!’
    应该是   if ADOQuery1.RecordCount>0 then 吧?并且Edit1.Text是不是和用户名相同?还有,
    adoquery1.Open;后,adoquery1.Last;然后再判断RecordCount.
      

  3.   

    if not ADOQuery1.RecordCount>0 then 
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    去掉not
    if ADOQuery1.RecordCount>0 then 
    ..
      

  4.   

    你的逻辑有点乱
    为什么不直接使用用户名和密码两个条件进行查找呢
    直接就用'select * from jluser where name =:name and pass=:pass'语句进行查询
    如果有结果则表示正确
    否则错误