假设,在ACCESS中有表sheet1,编排如下
主编号 副编号 数据
1      1      1
1      2      2
1      3      3
2      1      4
2      1      5
3      1      6我想列出报表如下:
主编号1
副编号 数据
1      1
2      2
3      3
主编号2
副编号 数据
1      4
2      5
主编号3
副编号 数据
1      6请问我怎样才能用DataReport和DataEnviroment做出这样的报表呢?

解决方案 »

  1.   

    不要用DataEnviroment,下面是我通过ODBC数据源连接数据库,用代码解决DataReport分组的方法。
      1.运行VB,选择“工程_引用”命令,引用 Microsoft ActiveX Data Objects 2.5 Library 
      2.添加DataReport。插入分组标头
      3.添加Text控件布局。它们的相应属性可以在代码中设置。
      双击DataReport,添加代码如下:Private Sub DataReport_Initialize()
        Dim cn As ADODB.Connection
        Dim rs As ADODB.Recordset
        Dim Sql, strSql As String
        
    '连接数据库
        Set cn = New ADODB.Connection
        With cn
            .Provider = "MSDataShape.1"     '一定要这句
            .Open "miGroup", "Admin", ""    '通过数据源连接数据库
        End With
        
    '设置text控件属性
        '分组标头,注意不要设置其DataMember属性
        DataReport1.Sections("Section6").Controls("text1").DataField = "id"
        '细节标头,其中“miCmd”是分组名称
        DataReport1.Sections("Section1").Controls("text2").DataField = "iName"
        DataReport1.Sections("Section1").Controls("text2").DataMember = "miCmd"
        DataReport1.Sections("Section1").Controls("text3").DataField = "iCode"
        DataReport1.Sections("Section1").Controls("text3").DataMember = "miCmd"
       
    '查询表:
        Sql = "SELECT * FROM `tb`"
        '(这里注意tb不是用单引号括起来的,而是用Tab键上方的那个带~的键上的`括起来的)
        
    '分组并打开查询记录集
        strSql = "SHAPE {" & Sql & " } " & _
            "AS miCmd COMPUTE miCmd BY 'id' "
        Set rs = New ADODB.Recordset
        rs.Open strSql, cn, adOpenStatic, adLockReadOnly    Set Me.DataSource = rs
    End Sub你只要将上述代码中的id改为“主编号”,iName改为“付编号”,iCode改为“数据”,就可以了
      

  2.   

    忘了,miCmd是分组名称,你可以根据你的需要取名
      

  3.   

    如果用ODBC的话,但是我的数据源是不固定的,是让用户选择的,(格式是固定的),这样也可以吗?
      

  4.   

    不用数据固固执(ODBC)的代码我了一下,通过了:
        With cn
            .Provider = "MSDataShape.1"     '一定要这句
            .Open "Data Provider=Microsoft.Jet.OLEDB.4.0 ;" & _
                "Data Source=" & App.Path & "\db1.mdb;" & _
                "Persist Security Info=False"
        End With
    以上注意次序以上代码和用数据源只是连接数据库的格方式不同,不用DataEnviroment的原因就是可以灵活的调整报表的数据源,你只要修改上述代码中的Sql和strSql,就可以打印出不同要求的报表