Var
ChrName:String;
begin
     ChrName:=Edit1.Text;
  IF RadioButton1.Checked=False Then
     begin
     //
     Query1.Close;
     Query1.SQL.Clear;
     Query1.SQL.Add('UPDATE user_info set CHRPHONE=:CHRPHONE,CHREMAIL=:CHREMAIL,CHRMEMO=:CHRMEMO Where CHRUSERNAME='''+ChrName+'''');
     Query1.ParamByName('CHRPHONE').Value :=Edit2.Text;
     Query1.ParamByName('CHREMAIL').Value :=Edit3.Text;
     Query1.ParamByName('CHRMEMO').Value :=Memo1.Lines.Text;
     Query1.ExecSQL;
     MessageBox(Handle,'用户修改成功','提示',MB_ICONINFORMATION or MB_OK);
     end
  Else
     begin
     ShowMessage('请先选择<更改>');
     end;
 

解决方案 »

  1.   

    Project ProPart.exe raised exception class EAccessViolation with message'Access violation at address 0047E966 in module 'ProPart.exe',Read of address 00000000'.Process stopped.Use Step or Run to continue.
      

  2.   

    单步调试
    可能是Query1.ParamByName('CHRMEMO').Value :=Memo1.Lines.Text;这里的错
      

  3.   

    To:blueshu(绝对是菜鸟)
    我把这条语句//掉 ,一样,所以不是这边的错误!
      

  4.   

    老兄,我觉得不需要冒号吧?
    'UPDATE user_info set CHRPHONE=CHRPHONE,CHREMAIL=CHREMAIL,CHRMEMO=CHRMEMO Where CHRUSERNAME='''+ChrName+'''');

      

  5.   

    'UPDATE user_info set CHRPHONE=CHRPHONE,CHREMAIL=CHREMAIL,CHRMEMO=CHRMEMO Where CHRUSERNAME='+'''+ChrName+''''
      

  6.   

    feibob(灵猫) (zhiwuyang602(独狼):要冒号的
    Project ProPart.exe raised exception class EAccessViolation with message'Access violation at address 0047E966 in module 'ProPart.exe',Read of address 00000000'.Process stopped.Use Step or Run to continue
    这个错应该不是SQL语句的问题。
    Query1.SQL.Add('UPDATE user_info set CHRPHONE=:CHRPHONE,CHREMAIL=:CHREMAIL,CHRMEMO=:CHRMEMO Where CHRUSERNAME='''+ChrName+'''');
    这句好像没问题。
    跟踪一下,看是执行到哪条语句出了问题
      

  7.   

    是下面Query1.ParamByName('CHRPHONE').Value :=Edit2.Text;
    错误提示是没有获得CHRPHONE的值!