var
  a,b,c,d,e,f:string;
begin if (Trim(edt2.Text))='' then
 begin
   Application.MessageBox('姓名不能为空!','提示',64);
   Exit;
   end;
    if (Trim(edt3.Text))='' then
 begin
   Application.MessageBox('性别不能为空!','提示',64);
   Exit;
   end;
    if (Trim(edt4.Text))='' then
 begin
   Application.MessageBox('年龄不能为空!','提示',64);
   Exit;
   end;
    if (Trim(edt5.Text))='' then
 begin
   Application.MessageBox('专业不能为空!','提示',64);
   Exit;
   end;
     begin
     edt1.Text:=qry_xg.fieldbyname('sno').AsString;
     a:=edt1.Text;
   with qry_xg do
    begin
    Close;
    SQL.Clear;
    SQL.Add('update student set sname=:b,sgentle=:c,sage=:d,sbirth=:e,sdept=:f where sno=:a');
    Parameters.ParamByName('b').Value:=Trim(edt2.Text);
    Parameters.ParamByName('c').Value:=Trim(edt3.Text);
    Parameters.ParamByName('d').Value:=StrToInt(edt4.Text);
    Parameters.ParamByName('e').Value:=dtp1.DateTime;
    Parameters.ParamByName('f').Value:=Trim(edt5.Text);
    ExecSQL;
    Application.MessageBox('保存成功!','提示',64);
    edt1.Text:='';
    edt2.Text:='';
    edt3.Text:='';
    edt4.Text:='';
    edt5.Text:='';
    dtp1.DateTime:=Now;
    end;
  end;
  end;其中edit1.text是不变的!~没有修改进去啊!高手看看什么问题

解决方案 »

  1.   


        SQL.Add('update student set sname=:b,sgentle=:c,sage=:d,sbirth=:e,sdept=:f where sno=:a'); 
        Parameters.ParamByName('b').Value:=Trim(edt2.Text); 
        Parameters.ParamByName('c').Value:=Trim(edt3.Text); 
        Parameters.ParamByName('d').Value:=StrToInt(edt4.Text); 
        Parameters.ParamByName('e').Value:=dtp1.DateTime; 
        Parameters.ParamByName('f').Value:=Trim(edt5.Text); 這裏沒有看到:A也沒有看到EDIT1
      

  2.   

        edt1.Text:=qry_xg.fieldbyname('sno').AsString; 
        a:=edt1.Text;  我在上面写到在啊 !~with qry_xg do 前面啊!`
      

  3.   

    少了句:
    Parameters.ParamByName('a').Value:=a; 
      

  4.   


    楼上正解!
    另外变量a,b,c,d,e,f等变量无需以
    var 
      a,b,c,d,e,f:string;
    形式声明,因为他们不是在程序中用到的变量,而只是sql语句中的变量
    Parameters.ParamByName('a').Value:=a;一句足以
      

  5.   

    问题又来了啊!~
    保存成功后,前一个窗体上面的dbgrideh中的数据没有同步更新啊
    怎么写啊?
    在那里写?