在用DATA REPORT做报表时,选择"插入分组标头/注脚"后按运行
提示"报表部分与数据源不匹配"请问如何解决???

解决方案 »

  1.   

    '--------------------------------------------------------------------------------------
    '***************************** DataReport 分组示例  ****************************
    '---------------------------------------------------------------------------------------'运行VB,选择“工程\引用”命令,引用“Microsoft AetiveX Date 2.x Library”
    Option ExplicitPrivate Sub DataReport_Initialize()
        Dim cn As ADODB.Connection
        Dim rs As ADODB.Recordset
        Dim Sql, strSql As String
        
    '连接数据库(Access)
       Set cn = New ADODB.Connection
        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'设置RptTextBox控件属性
        '分组标头,注意不要设置其DataMember属性
        RptGroup.Sections("Section6").Controls("text1").DataField = "id"
        '细节标头,其中“miCmd”是分组名称
        RptGroup.Sections("Section1").Controls("text2").DataField = "iName"
        RptGroup.Sections("Section1").Controls("text2").DataMember = "miCmd"
        RptGroup.Sections("Section1").Controls("text3").DataField = "iCode"
        RptGroup.Sections("Section1").Controls("text3").DataMember = "miCmd"
        
    '查询表:
        Sql = "SELECT * FROM `tb`"
        '这里注意tb不是用单引号括起来的,而是用Tab键上方的那个带~的键上的`括起来的。
        '在表名后可以加上Where子句
        
    '打开查询记录集
        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
      

  2.   

    楼上的先谢谢,
    其实我想用DATA REPORT 实现如下的效果
    单号:no0001
    项目    原因    说明
    1       ffff     gggg
    2       cccc     okffd-------------------------------
    单号:no0002
    项目    原因   说明
    1       dddd   wfkjad也就是说有一个按单号分组 然后项目,原因,说明等在细节中
    单号可以有很多个,且要能让单号连续打印
    这样能实现吗???
      

  3.   

    上面的示例就是通过ID分组的。
    你可以建一个数据库db1,字段 ID/iName/iCode,都是文本类型,随便输入数据。在程序中怗上上面的代码试试。
      

  4.   

    哦,代码中要将DataReport更名为RptGroup
      

  5.   

    我现在是连SQL SERVEr
    但提示"参数类型不正确,或不在可以接受的范围内,或与其它参数冲突"
      

  6.   

    哦,SQL这样连接可能不行(我没试)。但可以建立ODBC数据连接,如下所示:'连接数据库
       Set cn = New ADODB.Connection
        With cn
            .Provider = "MSDataShape.1"     '一定要这句
            .Open "youODB","sa","youPass"
        End With
      

  7.   

    我现在用ACCESS连也是同样的提示.
      

  8.   

    多谢vbman2003(家人)我已经收到了,我先研究一下
      

  9.   

    up ,也发给我研究一下吧,[email protected] 谢谢。
      

  10.   

    呵呵,多谢vbman2003(家人)
    问题已经解决,谢谢你的例子,给了我一个很好的思路