是这样地:在FORM1里有ADOQUERY1连定单,ADOQUERY2连补款,点BUTTON3进入FORM2进行补款操作,当FORM2插入完补款记录后,FORM1里的ADOQUERY2进行新的补款求和,也就是把刚才FORM2的插入的补款加到总的和里,DBEDIT连ADOQUERY2记录补款求和,但是有时候求和,有时候不求和,不知道为什么。求和的时候具多,以下是代码:其中khid1我定义的是全局变量,放在FORM1的VAR下面,代表客户编号。这是FORM2插入完补款记录回到FORM1窗体时的代码:
procedure TForm1.FormActivate(Sender: TObject);
beginadoquery2.Close;
adoquery2.SQL.Clear;
adoquery2.SQL.Add('select sum(bukuan) as 总补款求和 from bukuan where kehuid=:aid');
adoquery2.Parameters.ParamByName('aid').Value:=khid1;
adoquery2.Open;end;
这是点击FORM1的button3进入FORM2补款的代码:
procedure TForm1.Button3Click(Sender: TObject);
begin
 with tformbukuan.Create(self) do
 begin
  edit1.Text:=khid1;
  adoquery2.Active:=false;
  adoquery2.Parameters.ParamValues['abc']:=khid1;
  adoquery2.Open;
  adoquery1.Open;
  adoquery1.Append;
  dbedit4.Text:=formatdatetime('yyyy-MM-dd hh:mm',now);
  show;
  end;
end;有点急请大家帮我看看。

解决方案 »

  1.   

    第一次插入补款后,回到FORM1肯定不求和
      

  2.   

    procedure TForm1.FormActivate(Sender: TObject);
    beginadoquery2.Close;
    adoquery2.SQL.Clear;
    adoquery2.SQL.Add('select sum(bukuan) as 总补款求和 from bukuan where kehuid=:aid');
    adoquery2.Parameters.ParamByName('aid').Value:=khid1;
    adoquery2.ExecSQL;//adoquery2.Open;end;试试
      

  3.   

    不行啊,执行完,DBEDIT里是空的,什么也没有
      

  4.   

    这样试试:把FormActive中的内容移到一个过程里,每次FORM2插入完补款记录后调用这个过程。
      

  5.   

    有点头晕。你求和是是截取Edit里的数值来求吗?
      

  6.   

    那说明"在FORM1里"的SQL语句没有刷新!重发一个SQL就可以了!
      

  7.   

    你在ExecSQL()前取个变量保存它的值吧,然后传给Edit。
      

  8.   

    死树,写详细点啊,还有我想如果在FORM2插入完,自动Release掉FORM1,然后自动在打开,不知道用什么代码?