问题1明确告诉你,这个功能你没法完成(如果你用TQuery+TDBGrid)!
问题2你可以用自定义打印或用BandType=rbSummary试试。

解决方案 »

  1.   

    加一个,TDataSetProvider,ClientDataSet1TQuery =>TDataSetProvider,->ClientDataSet1TClientDataset(可以排序);
      

  2.   

    问题1:为什么不能排序呢?你是否只向对添加(修改)操作前的记录做排序啊?如果不是的话,重新select并order by某字段应该可以实现重排序的。
    问题2:参考delphi所带的demo,应该可以帮助你
      

  3.   

    问题一:
    我是用语句取得数据子集后再用提供的命令经过加工的,这样当然是要排过序,
    但怎么还能再用SQL语句呢?难道说又重新来过吗?问题二:
    例子好像没有我所要求的报表吧?
      

  4.   

    你用命令对数据子集进行加工后,只要记录还是满足原来的条件,重新select后还应该包含原来查出来的数据,这时再重新排序就可以了
      

  5.   

    看来老兄没明白我的意思,我用Append()添加的记录,只是存在Query控件里而已,
    并没有存在真正的数据库里,如果再用SQL语句,则我新添加的几条记录怎么取出来呢?
      

  6.   

    要是能第二次用Order By...命令,这第一个问题也不能算是问题了。
      

  7.   

    1.也可以用EhDbgrid啊~他本身提供排序功能~~呵呵~
    2.没用过!不知道啊!
      

  8.   

    谁说C++Builder论坛里无人能解答,
    我已经看过你的问题了,是你太不认真,
    qrexpr   属性  ResetAfterPrint 设置一下就好了以后少说这种话
      

  9.   

    怎么各位的回答都是这么简洁呢?搞得小弟云里雾里的,
    不知是否水平的问题,现在我还没搞懂,就像什么属性ResetAfterPrint,
    只有true和false,到底怎么个用法呢?C++Builder论坛里的回答更简单,大都是一句话,弄得我现在也没能解决问题。
      

  10.   

    你的第一个问题好说,如果你是用的BDE的缓存表的话就没有办法解决了,因为对缓存表修改或增加记录后不能重新排序,除非你用正确的ADO表或者使用PB,在Delphi的BDE中是无法解决的,我很遗憾不能帮你,但是希望给点分。
      

  11.   

    1:先把tquery中的数据保存到一个表中(存到硬盘中),可以用batchmove控件来完成。下一步再排序。使用中间表你看可行吗?
    2:你用的QRExpr可以从table 或 query 中取值,这样也可利用的中间表的方法,将临时变量的值保存到临时表中。临时变量的取值过程可以加到报表的生成过程中。
     
    方法比较笨,见笑了。
      

  12.   

    SQL语句后再加ORDER BY语句不是就可以了么?
      

  13.   

    一、可以告诉你,用tquery是无法实现的,因为他不能编辑数据,可以用table配合实现
    二、报表里添加自定义的东西,最好是在窗体创建时控制,即在form.create里控制
      

  14.   

    问题一我已经解决了,是参考newreamer的方法,分数打算给50,另外还有问题二怎么解决?
      

  15.   

    其实Borland提供的Qreport报表工具挺好用呀。