procedure TForm3.Button1Click(Sender: TObject);
var
p1,p2:string;
begin
p1:=Form1.xusername;
p2:=trim(Edit2.Text);
with ADOCommand1 do
begin
  if trim(edit1.Text)<>form1.xpsd then
     begin
     showmessage('输入原密码不正确');
     edit1.SetFocus;
     end
  else
     if trim(edit2.Text)=form1.xpsd then
        begin
        showmessage('新密码不可与原密码相同,请修改');
        edit2.SetFocus;
        end
     else
        if trim(edit2.Text)<>trim(edit3.Text) then
           begin
           Showmessage('新密码和校验密码不同,请修改!');
           edit2.setfocus;
           end
        else
        begin
          DataModule8.ADOQuery1.Parameters.Clear;
          ADOCommand1.CommandText:='update EmployeesXin set 密码:=p1 where 姓名=p2';
    
          parameters.ParamByName('??').Value:=trim(edit2.Text);
          parameters.ParamByName('??').Value:=form1.xusername;

          execute;
          edit1.Text:='';
          edit2.Text:='';
          edit3.Text:='';
          showmessage('修改密码成功!');
          DataModule8.ADOTable1.Close;
          DataModule8.ADOTable1.Open;
        end;
     end;
end;
各位哥哥姐姐帮帮忙!
在做毕业设计啊!
如果加入上面的红色字段,运行时提示找不到'??'(我不知道这个函数怎么用,所以加'??'表示),不管在'??'处输入什么,总是提示找不到;如果不加入红色字段,则提示'不正常定义参数对象,提供不一直或不完整的信息',应该怎么修改啊?
非常感谢!

解决方案 »

  1.   

    参数设置写法不对。sql语句里面的等号和delphi 的等号不一样。只是一个简单的‘=’,
    另外参数名称前加‘:’。
     ADOCommand1.CommandText:= 'update EmployeesXin set 密码=:p1 where 姓名=:p2 ';
     
     parameters.ParamByName( 'p1 ').Value:=trim(edit2.Text);
     parameters.ParamByName( 'p2 ').Value:=form1.xusername; 
      

  2.   

    set 密码=:p1 where 姓名=:p2  ';
    parameters.ParamByName('p1').Value:=trim(edit2.Text); 
    parameters.ParamByName('p2').Value:=form1.xusername;  
      

  3.   

    都说了哈
    啰唆一下,参数面前加 :ADOCommand1.CommandText:= 'update EmployeesXin set 密码=:p1 where 姓名=:p2 ';
    parameters.ParamByName( 'p1 ').Value:=trim(edit2.Text);  
    parameters.ParamByName( 'p2 ').Value:=form1.xusername;   
    ADOCommand1.excute;