procedure TFrmChangePwd.btnEnterClick(Sender: TObject);
begin
  With DmBasic Do
    Begin
      qryChangePwd.Close;
      qryChangePwd.Sql.Clear;   
      qryChangePwd.Sql.Add('SELECT * FROM STYLEUSER WHERE USERID='''+qryLogin.FieldByName('USERID').Value+'''');//这样写有没错,但可以过编译
      qryChangePwd.Open;
      If qryChangePwd.Recordset.RecordCount>0 Then
        qryChangePwd.SQL.Add('SELECT * FROM STYLEUSER WHERE PWD='''+EdOld.Text+'''');
          If qryChangePwd.Recordset.RecordCount>0 Then
            EdNew.SetFocus;
              If EdNew.Text<>'' Then
                EdEnter.SetFocus;
                  If EdEnter.Text=EdNew.Text  Then
                    Begin
                    qryChangePwd.SQL.Add('UPDATE STYLEUSER SET PWD='''+EdEnter.Text+''' WHERE USERID='''+qryLogin.FieldByName('USERID').Value+'''' );
                    qryChangePwd.ExecSql;
                    End
                  Else
                     ShowMessage('两次密码不一致!');
                  End;
                  End;end.

解决方案 »

  1.   

    qryLogin.FieldByName('USERID').Asstring,如果userid字段是数值型的,就别加引号
      

  2.   

      qryChangePwd.Sql.Add(' SELECT * FROM STYLEUSER WHERE USERID='''+trim(qryLogin.FieldByName('USERID').AsString)+''' ');
    qryChangePwd.Close;
      qryChangePwd.Sql.Clear; 
    qryChangePwd.SQL.Add('UPDATE STYLEUSER SET PWD='''+EdEnter.Text+''' WHERE USERID='''+qryLogin.FieldByName('USERID').Value+'''' );
      qryChangePwd.ExecSql;
      

  3.   

    你用的是同一個ado,再次使用時,先用close和clear之前的再使用
      

  4.   

    是的,就是每次用时先Close和Close就可以了..
    begin
      With DmBasic Do
        Begin
          qryChangePwd.Close;
          qryChangePwd.Sql.Close;   //SELECT NAME FROM STYLEUSER
          qryChangePwd.Sql.Add('SELECT * FROM STYLEUSER WHERE USERID='''+Trim(qryLogin.FieldByName('USERID').Value)+'''');
          qryChangePwd.Open;
          If qryChangePwd.Recordset.RecordCount>0 Then
             qryChangePwd.Close;
             qryChangePwd.Sql.Clear;
             qryChangePwd.SQL.Add('SELECT * FROM STYLEUSER WHERE PWD='''+EdOld.Text+'''');
             qryChangePwd.Open;
              If qryChangePwd.Recordset.RecordCount>0 Then
                EdNew.SetFocus;
                  If EdNew.Text<>'' Then
                    EdEnter.SetFocus;
                      If EdEnter.Text=EdNew.Text  Then
                        Begin
                        qryChangePwd.Close;
                        qryChangePwd.Sql.Clear;
                        qryChangePwd.SQL.Add('UPDATE STYLEUSER SET PWD='''+EdEnter.Text+''' WHERE USERID='''+qryLogin.FieldByName('USERID').Value+'''' );
                        qryChangePwd.ExecSql;
                        End
                      Else
                         ShowMessage('两次密码不一致!');
                      End;
                      End;