同一FORM里放置2个DBGridEh分别指向ADOQuery主从表数据源  在OnShow事件中分别打开主从表后执行如下语句:  DBGridEhBig.Columns.Items[0].Footer.ValueType := fvtCount;
  
  DBGridEhSmall.Columns[0].Visible := false;
  DBGridEhSmall.Columns[1].Visible := false;
  DBGridEhSmall.Columns.Items[2].Footer.ValueType := fvtCount;
  DBGridEhSmall.Columns.Items[5].Footer.ValueType := fvtSum;  结果主表的统计数正常了  从表的2个数字都为0  又试了3层的主从表中也只有第1层主表正常  找了点资料才知道:  "在非BDE数据集的主/明细表中,SumList 不能跟踪数据变化。"  
  不知道哪位高手知道如何解决这个问题还请告之~    言身寸言身寸!  ^_^
  
  (不改变当前使用ADOQuery的前提下)

解决方案 »

  1.   


      谢谢    这个句子加在哪里呢  在OnShow如上的代码后加入  DBGridEhSmall.SumList.RecalcAll;  没效果  又试了在 Query 的 AfterScroll 和 DataSource 的OnChange事件加这行代码  CPU 占用 100% ~~~  溢出...
      

  2.   

    在主表的AfterScroll上写,或者DBGridEhBig的cellClick事件写
    如果在主表的AfterScroll事件写,注意控制何时计算何时不计算
      

  3.   


      RecalcAll 很有问题 总会导致溢出  我换成 EHLIB 4.1.4 了还是一样  现在的解决办法是在 主Query的AfterScroll事件中重新打开从Query  但有一个FORM中需要同时打开主从3层的表时就有点郁闷了  记录越多 主记录移动时速度就越慢  因为在主Query Scroll时重新打开第一层的从Query  而打开从Query又触发Scroll重新打开第二层的从Query...
      

  4.   

    1。sumlist的Active设置为True
    2。FooterRowCount设置为1(也可以设置为多行,一般1行就够了。)
    3。要求和的那个字段(DBGridEH里面的)Footer属性:ValueType设置为fvtsum,FieldName设置为要求和的字段名。
      

  5.   

    invalid class typecast.. 什么原因?
      

  6.   

    字符类型转成整型,strtoint,就可以求和了。