应该可以,查一个HELP, 最好是MSDN

解决方案 »

  1.   

    不用dataenvironment来实现分组好象不可能。
      

  2.   

    用临时表
    定义一个全局变量record
    看看下面代码,希望有点帮助
    Dim recde As ADODB.Recordset
    '打印按钮
    Private Sub Command4_Click()
    On Error Resume Next'建立打印数据源集合
    Data_printFor i = 1 To ListView2.ListItems.Count - 1
       With recde
            .AddNew
            !field1 = ListView2.ListItems(i).Text
            !field2 = CSng(ListView2.ListItems(i).SubItems(1))
            !field3 = CSng(ListView2.ListItems(i).SubItems(2))
            !field4 = CSng(ListView2.ListItems(i).SubItems(3))
            !field5 = CSng(ListView2.ListItems(i).SubItems(4))
            !field6 = CSng(ListView2.ListItems(i).SubItems(5))
            !field7 = CSng(ListView2.ListItems(i).SubItems(6))
            !field8 = CSng(ListView2.ListItems(i).SubItems(7))
            !field9 = CSng(ListView2.ListItems(i).SubItems(8))
            .Update
       End With
    Next i
    Set DataReport1.DataSource = recde
    DataReport1.Show
    End Sub'建立打印数据源集合
    Private Sub Data_print()
    Set recde = New ADODB.Recordset
    With recde
         .Fields.Append "Field1", adVarChar, 10
         .Fields.Append "Field2", adSingle
         .Fields.Append "Field3", adSingle
         .Fields.Append "Field4", adSingle
         .Fields.Append "Field5", adSingle
         .Fields.Append "Field6", adSingle
         .Fields.Append "Field7", adSingle
         .Fields.Append "Field8", adSingle
         .Fields.Append "Field9", adSingle
         .CursorLocation = adUseClient
    End With
       recde.Open
    End Sub
      

  3.   

    众合打表(原傻瓜打表)支持这种打印要求
    http://www.uepoch.com/
    http://sgreport.yeah.net
      

  4.   

    报表设计期间先用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