在进行完update程序就关闭了.数据已经更新,以下是源码
procedure TForm1.Button2Click(Sender: TObject);
var get_date,csid:string;
    l_avail,l_lqconsum,l_wfconsum,l_yfconsum,l_savail,l_sumavail:single;
    year:integer;
    bl:single;
    querybox1:TQuery;
begin
    if (edit1.text='') or (strtofloat(edit1.text)<30000) then
    begin
      showmessage('返还累计金额不能小于30000');
    end;
    if edit1.text='' then
      begin
       showmessage('请输入返还金额');
       end
    else
      begin
        querybox1:=TQuery.Create(nil);
        with querybox1 do
        get_date:=datetostr(date);
         l_avail:=strtofloat(edit5.text);
         l_lqconsum:=strtofloat(edit1.text);
         csid:=edit3.Text;
         bl :=strtofloat(edit2.text);
      end;
    if csid='' then
      begin
       showmessage('请选择会员')
      end
    else
      begin
         close;
         querybox1.DatabaseName:='ww';
         querybox1.SQL.clear;
         querybox1.SQL.Add('update cs_zzk set j_wfconsum=j_wfconsum-:l_lqconsum ,j_yfconsum=j_yfconsum+:l_lqconsum,f_avail=:l_avail,f_consum=f_consum+:l_avail');
         querybox1.SQL.Add('where cs_id=:csid');
         querybox1.params[0].asfloat:=l_lqconsum;
         querybox1.params[1].asfloat:=l_lqconsum;
         querybox1.params[2].asfloat:=l_avail;
         querybox1.params[3].asfloat:=l_avail;
         querybox1.params[4].asstring:=csid;
         try
         querybox1.ExecSQL;
         except
         close;
         Free;
         queryBox1 := nil;
         exit;
         end;

解决方案 »

  1.   

    这样子改一下试试:  try
         querybox1.ExecSQL;
      except
         showmessage('更新失败')
      end;
             
             queryBox1.close;
             queryBox1.Free;
             queryBox1 := nil;
      exit;
    end;
      

  2.   

    建议使用Try-Except封装
    并且单步跟踪,检查错误
      

  3.   

    你这段代码是在出窗体中?
    ..............
             querybox1.params[3].asfloat:=l_avail;
             querybox1.params[4].asstring:=csid;
             try
             querybox1.ExecSQL;
             except
             close; //-----这里实际执行form1.close;
             Free;  //-----这里实际执行form1.free;
             queryBox1 := nil;
             exit;
    .............
      

  4.   

    try
             querybox1.ExecSQL;
             except
             close;//这里
             Free;//这里
      

  5.   

    with querybox1 do
    ...
      close;
      free;
    ...
      

  6.   


    try
             querybox1.ExecSQL;
             except
             close;//此句将关闭窗体
             Free;//此句将释放窗体
             queryBox1 := nil;
             exit;
             end;
    改为:
    try
             querybox1.ExecSQL;
             except
             querybox1.close;
             querybox1.Free;
             queryBox1 := nil;
             exit;
             end;祝你好运!