没用过DataReport。求一实例。

解决方案 »

  1.   

    页面上设置分组
    代码用下面:
    ADODB.Connection对象属性的设置。
    错误的设置是
    conn.Provider = "SQLOLEDB.1"
    conn.ConnectionString = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=mytest;Data Source=SUNRY"这个Provider不支持“shape”关键字,必须用下面来设置:
    conn.Provider = "MSDataShape"
    conn.ConnectionString = "PROVIDER=MSDataShape;DATA PROVIDER=SQLOLEDB;" & _
            "SERVER=;DATABASE=mytest;UID=sa;PWD=;"这样设置就可以支持“shape”关键字。
    然后用下面的语句可以生成多重数据集:
        Dim sqlOne As String
        Dim sqlTwo As String
        Dim sqlstr As String
        sqlOne = "Select 资料类型,归档日期,count(*) as DayTotal from index1 group by 资料类型, 归档日期 order by 资料类型,归档日期"
        sqlTwo = "SHAPE {" & sqlOne & "}" & _
                " as kkk COMPUTE kkk, sum(kkk.DayTotal) as SubTotal by 资料类型"
        sqlstr = "SHAPE (" & sqlTwo & ")" & _
                " as eee COMPUTE eee, sum(eee.SubTotal) as Total "
              
        rsParent.StayInSync = False
        rsParent.CursorLocation = adUseClient
        rsParent.Open sqlstr, conn
        rsParent.Requery
        
        Set DRDatumType.DataSource = rsParent    'rsParent是一个ADODB.Recordset对象    DRDatumType.Sections.Item("DatumType_Detail").Controls.Item("txtType").DataField = "资料类型"
        DRDatumType.Sections.Item("DatumType_Detail").Controls.Item("txtDate").DataField = "归档日期"
        DRDatumType.Sections.Item("DatumType_Detail").Controls.Item("txtDayToal").DataField = "DayTotal"
        DRDatumType.Sections.Item("DatumType_Detail").Controls.Item("txtType").DataMember = "kkk"
        DRDatumType.Sections.Item("DatumType_Detail").Controls.Item("txtDate").DataMember = "kkk"
        DRDatumType.Sections.Item("DatumType_Detail").Controls.Item("txtDayToal").DataMember = "kkk"
       
        DRDatumType.Sections.Item("DatumType_SubTotal_Footer").Controls.Item("txtSubTotal").DataField = "SubTotal"
        DRDatumType.Sections.Item("DatumType_SubTotal_Footer").Controls.Item("txtSubTotal").DataMember = "eee"
        DRDatumType.Sections.Item("DatumType_Total_Footer").Controls.Item("txtTotal").DataField = "Total"
             
        DRDatumType.Show 1