情况是这样的。。有二张表,table1为主表,table2为细表。二者之间以字段bianma
(编码)相连。二表结构如下:table1结构如下:bianma(编码)
name(姓名)
.....(其他若干字段)table2结构如下:bianma(编码)
yuefen(月份)
benyuejine(本月金额)
一个窗口。ADOTable1/ADOTable2,DBGrid1/DBGrid2,,DataSource1/DataSource2 六个数据库控件分别与这两个表(table1/table2)相连。当在DBGrid1中选中某一编码时(bianma)。DBGrid2中出现相应本编码的各月金额记录。。我想要求的功能是:在DBGrid1中增加一字段heji(合计),本字段(heji)自动显示本编码的各月金额之和。我知道可能利用计算字段即可解决。。但在ADOTable1的OnCalcFields事件中却不知应该怎么来进行合计。请各位朋友帮帮忙。。谢谢。

解决方案 »

  1.   

    我表达得太差了??我的意思就是"在DBGrid1中增加一计算字段heji(合计),本字段(heji)自动显示当前编码的各月金额之和。"
      

  2.   

    procedure TForm1.ADOTable1CalcFields(DataSet: TDataSet);
    begin
    ADOTable1.FieldByName('recordno').AsString :=inttostr(StrtoInt(ADOTable1.FieldByName('bianhao').asstring)+StrToInt(ADOTable1.FieldByName('jiner').AsString));
    end;
      

  3.   

    这样。。打个比方说吧。table2中有如下几条记录:bianma(编码)   yuefen(月份)      jine(金额)10011                1月             140
    10011                2月             340
    10012                1月             150
    10013                1月             100
    10013                2月             350
    10013                3月             150
    10014                1月             100我的目的就是在DBGrid1中增加一字段heji ,当在DBGrid1中选中编码10013时,这个字段把所有table2中关于10013的各月金额加起来:100+350+100=550。。就是要把550这个数字显示出来。。
      

  4.   

    谢谢zhaojinghui(撒哈拉之雨的悲伤) ,不过你可能误会了我的意思。
      

  5.   

    不能用计算字段来搞吗?写sql语句的话,具体应该用哪些字段呢?
      

  6.   

    我要问的就是怎么达到自动合计的目的。如当在DBGrid1中选中编码10013时,这个字段显示出所有table2中编码为10013的各月金额之和。。应该怎么实现这个功能呢?是用计算字段,还是用sql语句??具体怎么做呢?
      

  7.   

    用SQL语句比较简单,不过用计算字段也是可以实现的:
    用SQL的话,把ADOTable1换成ADOQuery
    在查询中:select T1.bianma,T1.name,heji=Sum(T2.BenYueJinYe) from table1 T1,table2 T2 where T1.bianma=T2.bianma Group by T1.bianma,T1.name
    此时直接有了heji.
      

  8.   

    在ADOQUERY1的SQL语句写上:
    SELECT A.BIANMA,A.NAME,..., SUM(B.JINE) AS HEJI FROM TABLE1 A,TABLE2 
    B WHERE A.BIANMA=B.BIANMA
    RROUP BY A.BIANMA,A.NAME... 
    再在上面添加一个字段就OK 了
    剩下的自己搞定