如实现以下格式:  部门: 销售一科
---------------------------------
  客户       数量      日期  
  aa          44      2002-09-12 
  bb          55      2002-09-12 
  .....  部门: 销售二科
 ---------------------------------
  客户       数量      日期  
  cc          23      2002-03-11
  dd          45      2002-09-23 
  ee          445     2002-09-23 
  .....

解决方案 »

  1.   

    一般在报表设计期间先用dataenvironment设计好报表的结构。在程序运行期间,可以更改dataenvironment的数据库连接和数据集(即改变SQL的条件);也可以在程序运行期间脱离dataenvironment,用Provider为MSShape的数据库连接打开分层的recorderset(SQL可以参考dataenvironment生成的SQL),然后设为报表的datasource。
    当然也可以完全不要dataenvironment,直接设计分组的报表结构,然后用后一种方法打开报表的数据源。
      

  2.   

    gsuner(gsuner) 说的好!
        报表设计期间先用dataenvironment设计好报表的结构。再在程序运行期间更改dataenvironment的数据库连接和数据集,sql 用data shape 格式。
    下面代码可供参靠:
      
       ...
       cn_rpt_cnstr = "Provider=MSDataShape.1;Persist Security Info=True;Data Source="
       cn_rpt_cnstr = cn_rpt_cnstr & serv & ";User ID=sa;Password=" + psd + ";Initial Catalog=" + my_db + ";Data Provider=SQLOLEDB.1"
       det_rpt.cn_rpt.CursorLocation = adUseClient
       det_rpt.cn_rpt.CommandTimeout = 10
       det_rpt.cn_rpt.connectionstring = cn_rpt_cnstr
       det_rpt.cn_rpt.Open
       det_rpt.Commands.Item("rpt_fhtj_Grouping").commandtext = "SHAPE {SELECT * FROM v_sell_fhtj " + query_sql + "}  AS rpt_fhtj COMPUTE rpt_fhtj  BY 'depart','name','guige'"
       det_rpt.rsrpt_fhtj_Grouping.Source = "SHAPE {SELECT * FROM v_sell_fhtj " + query_sql + "}  AS rpt_fhtj COMPUTE rpt_fhtj  BY 'depart','name','guige'"
    '   det_rpt.rsrpt_fhtj_Grouping.ActiveConnection = det_rpt.cn_rpt
    '   det_rpt.rsrpt_fhtj_Grouping.Open
       det_rpt.Commands.Item("rpt_fhtj_Grouping").ActiveConnection = det_rpt.cn_rpt
       det_rpt.Commands.Item("rpt_fhtj_Grouping").Execute
       drt_fhtj_03.Show 1
       ...
       On Error GoTo lable_0
         det_rpt.rsrpt_fhtj_Grouping.Close
         det_rpt.cn_rpt.Close
    lable_0:
        Err.Clear
    end sub