procedure TForm9.Button1Click(Sender: TObject);
var
  str:string;
begin
  if edit1.Text='' then
  begin
    showmessage('请输入用户名称');
    edit1.SetFocus;
    exit;
  end;
  if edit2.Text='' then
  begin
    showmessage('请输入密码');
    edit1.SetFocus;
    exit;
  end;
 、、、、、、、、、、、、、、、、、  if button1.Tag=2 then
  begin
    str:=edit1.Text;
    adoquery2.Close;
    adoquery2.SQL.Clear;
    adoquery2.SQL.Add('update UserInfo set 用户类型=:yhlx'
                 +' where 用户名称=:olduser');
    adoquery2.Parameters.ParamByName('olduser').Value:=str;
    adoquery2.Parameters.ParamByName('yhlx').Value:=dbcombobox1.Text;
    adoquery2.ExecSQL;
    adoquery1.Close;
    adoquery1.Open;
  end;  close;
end;上述代码中的、、、、、、、表示这段代码已经注释掉,现在里面已经没有user
可是当修改用户类型的时候会出错如下:adoquery2:parameter 'user' not found里面已经没有user了,可是为何还是报错:user参数没有找到????

解决方案 »

  1.   

    olduser应该是表UserInfo中字段"用户名称"所包含的,而str可能是表中的不存在的
      

  2.   

    首先你的说的注释,看不明白你注释掉拉什么;
    代码这样看看:
    if button1.Tag=2 then 
      begin 
        str:=edit1.Text; 
        adoquery2.Close; 
        adoquery2.SQL.Clear; 
        adoquery2.SQL.Add('update UserInfo set 用户类型=:yhlx' 
                     +' where 用户名称=:olduser'); 
        adoquery2.Parameters.ParamByName('olduser').Value:=''+str+''
        adoquery2.Parameters.ParamByName('yhlx').Value:=''+dbcombobox1.Text+''
        adoquery2.ExecSQL; 
        adoquery1.Close; 
        adoquery1.Open; 
      end; 
      

  3.   

    parameter 'user' not found ,
    明显写的是定义的user找不到!可能不是这里,这里都换成olduser了,
    应该是你sql里面还要这个:user,你再检查下。
      

  4.   

    想了下,
    应该是params.clear忘记写了吧!
    以前的参数没有删除!
      

  5.   

    adoquery2.params.clear;//清一下参数
      

  6.   

    对,你看一下你的AdoQuery2的参数设置是不是没有清空