我想生成这样的报表:
    1月 2月 3月 4月 11月 12月
A部门  ? ? 
B部门  ? ? 
C部门  。

Z部门//---------------------------------------------------
其中的?需要由一个SQL语句进行统计得出结果,各个?的查询条件类似但不同。
比如:
...Where 月份='1' And 部门='A'
...Where 月份='3' And 部门='A'
...等等。
要求是该条件可以在运行时指定,例如:统计部门为A、B、F,1至6月份的。我初步的打算是,将统计结果一个一个地插入控件中。但是,这样就有问题了:
1、用什么控件?Grid吗?可是我要显示报表啊;如果用报表,好象不能这样插入
数据,只能给“一个”SQL语句,从数据库中查询出来后进行预览:(
2、一个一个的插入很麻烦,而且速度可能很慢;
3、各位大侠是如何做这种东西的?什么方法比较好?急盼指教,谢谢!

解决方案 »

  1.   

    啊?你的报表是怎么显示的啊
    是本来就是一个一个的条件查询后的显示?
    这样的话就设参数一个一个的赋值吧.
    还是用SQL查出来的一整张表?
    这个就好办了吧.
      

  2.   

    以前是用PB开发的,现在要改。
    以前用PB时,是按不同但类似的条件进行统计后,一个一个地写入PB的数据窗口中的,
    显示速度倒还可以。现在用Delphi做。参数怎样设置、怎样赋值啊?我才刚进入Delphi大门:(
      

  3.   

    这个...那个...东西很多啊.1.在FR里面声明参数
    2.在DELPHI里面对参数进行赋值.
      

  4.   

    不发意思,我用的是Report Builder.
    主要问题不在于工具的不同,而在于:
    我是从模板中载入,在Delphi的Form中不能写代码对报表中的东西进行操作吧?
    因为都不知道用户载入的是哪个报表模板,怎么知道对哪个对象赋值啊?
      

  5.   

    不好意思,可能没说清楚:)
    如果是在设计时在报表中放入一些控件的话,我知道有些什么控件,当然就好办了。
    但是,在运行时从模板装入呢?因为我的报表有很多个,用了模板的方式。另外,我初学Delphi,如果知道报表中有个DBText1, 我怎么对它操作?比方说,把
    它第10行的数据改为0?
      

  6.   

    我比较常用FastReport,dxComponentPrinter...等第三方组件,做报表比较方便。
    像你的问题,可以用SQL语句先生成一个临时表,再连接打印控件,就可以实现你打印
    格式的要求。对于Delphi自带的Rave报表组件,也可直接对其设计的控件赋值。
      

  7.   

    其他报表用了模板,这种纯粹用一条一条的SQL语句统计出的,我还不知道从何入手啊求教
      

  8.   

    感觉上是打印一个两维交叉表的结果. 呵呵用DecisionQuery,只需要一条语句.然后DBText1连上就可以了,DecisionQuery自动统计本人不善做报表,也没有用过模板报表 不知道模板报表是怎么回事,如无帮助还望包涵.
      

  9.   

    汗,我对交叉表是敬而远之,很少用:(,而且我是初学Delphi,对于DecisionQuery也没用
    过:(  我决定研究研究交叉表的例子模板报表?其实是这样:报表工具一般不是有个设计器吗?该设计器一般可以将设计的结果
    保存为一个文件,以后就可以从文件载入了。我把这称作模板啊。我上面说的报表是因为我找不到更好的方法,所以以前用PB作时,是用笨方法以SQL语句在循
    环中统计,并将其写入表格的相应单元格中。在PB中使用数据窗口,可以很方便的对指定行、
    列的那个单元格进行读写。但在Delphi中,我不知道用什么控件好,且对于该种控件如何对
    指定单元格读写?我不知道是否有比上述笨法子更好的方法,如有,该如何作?望各位指教,谢谢
      

  10.   

    delphi的数据集也可以定位的, 建议你就做一个临时表:
    部门 一月 二月 .... sum.只要你能得到一个如上结构的数据集就可以修改,添加了.用table还是query都可以.
    然后打印这个数据集.
      

  11.   

    那你就在BEFOREPRINT中写好了,只要限制条件的求和好了。
      

  12.   

    仔细研究一下SQL的帮助,有类似的例子