在一个主form1中,我用query1查出了一些数据。我现在需要做一个报表,数据来源于form1.query1,假设form1.query1中包括这些数据项:地区名,业务员姓名,业务员编号,合同号,销售重量。form1.query1中所查到的数据如下:
地区名   业务员姓名    合同号   销售重量
湖北      aaa           1       100
湖北      aaa           2       200
湖南      aaa           3       300
湖南      bbb           4       400现在我需要作成如下的报表:地区名   业务员姓名   合同号,销售重量
湖北       
          aaa          1      100
          aaa          2      200
小计                           300
湖南      aaa          3      300
          bbb          4      400
小计                           700
总计                           1000请问这种报表用quickrep怎么做
谢谢了

解决方案 »

  1.   

    完全可以用QRGROUP控件来实现
    你可以参照下DELPHI自带的DEMO,有很好的例子
      

  2.   

    用QRGROUP(高度设为0)分组(这会吧)在Expression 属性设为“地区名  ”
    定义全局变量:
        CustName:String;
        IntNewPage:Integer;“湖北”用一TQRDBText控件,print事件如下:
    if Value=CustName then
       begin
       Value:='';
       if IntNewPage=0 then  Value:=CustName;
       end  else
       CustName:=Value;不过还要作一件事,在QuickRep的StartPage事件中加入:
         IntNewPage:=0;
      

  3.   

    老大
    这样有点误导人家了用QRGROUP(高度设为0)分组(这会吧)在Expression 属性设为“地区名  ”
    这句话是对的后面的几句是用来做什么的?
    IntNewPage一直没有赋过值,当然就是0了   Value:='';
       if IntNewPage=0 then  Value:=CustName;
       end  else
       CustName:=Value;
    最后结果是什么都没打印出来我认为完全不用写代码
    除了上述的属性外
    通过设置GROUP的GROUPFOOTER的属性,
    增加两个QREXPRESSION控件
    和一个SUMMARY的BAND就可以做到了还是建议楼主看看QR的DEMO
      

  4.   

    我也看了delphi自带的Demo,并且也仿照做了,结果还是不对。我是这样做的。
    在报表中有如下控件:
    datesource1:dataset为form1.query1
    query2:datesource为datesource1
    这样主从表连好了。query2:sql语句为
    select table1.ssdq,table1.htbh,table1.ywybh,table2.ywymc,table1.xszl 
    from table1,talbe2
    where ssdq=:ssdq and htbh=:htbh and table1.ywybh=table2.ywybh
        
    quickrep1:dataset属性为form1.query1
    QrGroup:expression属性设为form1.query1.ssdq,master属性设为qrsubdetail1,高度设为0
    qrsubdetail1:dataset属性为query2,footerband属性为qrband1,master属性为quickrep1
                 另外加了几个qrdbtex,分别为ssdq,ywymc,xszl,htbh,都连着query2
    qrband1:groupfooter型,linkband属性为qrsubdetail1,另外加了一个qrexpr,
            其expression属性为:sum(query2.xszl),master属性为qrsubdetail1我不知道自己哪个属性设错了,我想有可能是query2的sql语句写错了。所以报表不符合要求。
    按照以上方法打印的报表如下:所属地区 业务员姓名    合同号   销售重量
    湖北      aaa           1       100
    湖北      aaa           2       200
    小计                            300
    湖南      aaa           3       300
    湖南      bbb           4       400
    小计                            700
    湖北      aaa           1       100
    湖北      aaa           2       200
    小计                            300
    湖南      aaa           3       300
    湖南      bbb           4       400
    小计                            700从以上报表来看它把我的每个数据打印了两遍,请问这是为什么。
    谢谢
      

  5.   

    不好意思query2的sql语句写错了
    query2的sql语句中where语句为 ssdq=:ssdq and table1.ywybh=table2.ywybh
      

  6.   

    另外还要注意在使用了GOUP后
    你的查询必须按GROUP的EXPRESSTION来排序
      

  7.   

    我在query2中又加了一句order by ssdq
    可是还是不行
    打印的报表如下
    所属地区 业务员姓名    合同号   销售重量
    湖北      aaa           1       100
    湖北      aaa           2       200
    小计                            300
    小计                            700
    湖北      aaa           1       100
    湖北      aaa           2       200
    小计                            300
    湖南      aaa           3       300
    湖南      bbb           4       400
    小计                            700
    湖南      aaa           3       300
    湖南      bbb           4       400
    小计                            700
      

  8.   

    呵呵
    原来你是这样写的啊
    完全可不用QUERY2了
    也不需要用SUBDETAIL
    除GROUP和GROUPFOOTER外
    你只要增加一个BAND,设为DETAIL
    当然内容放
    业务员姓名    合同号   销售重量
    aaa          1      100
    然后加一个SUMMARY的BAND就OK了
      

  9.   

    按照你的方法,现打印的数据报表是这样的
    所属地区 业务员姓名    合同号   销售重量
     湖北     aaa           1       100
              aaa           2       200
              aaa           3       300
              bbb           4       400
    小计                            1000
      

  10.   


    不太清楚你的具体情况
    但请先确定下面几个问题
    1、确定你的QR的DATASET指向QUERY1?
    2、确定你显示
    aaa           2       200
    这些的QRDBTEXT的DATASET指向QUERY1?
    3、确定你的QUERY1查询回来的结果是
    地区名   业务员姓名    合同号   销售重量
    湖北      aaa           1       100
    湖北      aaa           2       200
    湖南      aaa           3       300
    湖南      bbb           4       400