我的系统使用三层结构,前台是Tclientdataset,客户要求能自己组合排序在,前台里,而TClientdataset有个属性indexfieldnames,可以进行组合排序,如先按客户编号,再按订单日期,那indexfieldnames 得到的排序值为'KHBH;DDRQ',那就可可以了.这种方法在单个表,和统计报表中没有问题.
  但是在主从关系表中,对子表进行排序就会出现:一个怪问题:排序后子表的记录数是所有打开子表的记录数.如我有两张订单,第一张单子表有10条记录,第二张单子表有5条记录.当我对任何一张单的子表进行排序时.子表的记录总数变成了15条了,本改是本单的记录也混近来了。   还有在我的电脑上不会出现(有开发环境).在别的机子上就会.
   另外对主表移动记录后,就恢复正常了。   那一位能给出一点意见!实在困惑.

解决方案 »

  1.   

    我看的有点糊涂!可能还是你SQL语句的问题吧?
      

  2.   

    客户端clientdataset做一下主从关系。
      

  3.   

    谢谢你们的恢复!可是你们的确没有一个明白我的意思!  首先,我的主从关系是在中间层中建立的,我在前台也不用filter,现在用户的要求是能对子表进行排序,并且是随机,意思是说想按那个字段排序是用户自己决定的,不能在sql语句中实现,因为用sql语句要不断的在后台请求数据,这种做法是没有效率的。
      那我的做法是这样的。Tclientdataset 有个属性Indexfieldnames,这个属性就可以进行在前台进行排序。只要给它赋要排序的字段值就可以了.如要对客户编号(KHBH)排序,IndexFieldnames :='KHBH';假如要先按客户编号排,后按订单日期排,就这样做.
    IndexFieldnames :='KHBH;DDRQ'.  这种方法是可行的,但在有的机子里排序后会出现,记录数增多的现象,本不属于本主记录的子记录也在本单中出现了.  如我有两张订单,
      第一张单子表有10条记录,
      第二张单子表有5条记录.  当我对任何一张单的子表进行排序时.
      子表的记录总数变成了15条了,
      不是本单的记录也混近来了。 你们说这如何解决吗?
      

  4.   

    将子表的clientdataset的PacketRecords设置为-1