我想实现这样的格式:vb+sqlserver+datareport
编号:001     名称: 张三    
     批次号       日期       类别1   类别2     类别3
     20050101  2005-11-1      1       3          3
     20050201  2005-11-2      10      13         23
     20050601  2005-11-6      10      23         53
编号:002     名称: 李四   
     批次号       日期       类别1   类别2     类别3
     20050111  2005-11-1      1       3          3
     20050221  2005-11-2      10      13         23
     20050631  2005-11-6      10      23         53………………
报表数据源是sql语句
datareport 中用分组标头,现在有两个问题:
1、“编号”、“ 名称” 不能显示在分组标头中
2、打印的时候,想实现:打完001的,002又重新从新的一张纸上打起

解决方案 »

  1.   

    1. 可以用SHAPE语句实现分组
    2. 设置分组标头强制分页
      

  2.   

    “编号”、“ 名称”的text框放在分组标头中就出提示:该控件 不能放在这里
      

  3.   

    不可能的吧?
    你仔细看好了,只有报表标头,页标头不能放置RptTextBox
      

  4.   


       sql1 = "select * from table"
      
     strSql = "SHAPE {" & sql1 & " } " & _
            "AS miCmd COMPUTE miCmd BY '编号' " 这是sql语句部分
    现在
      批次号       日期       类别1   类别2     类别3
         20050101  2005-11-1      1       3          3
         20050201  2005-11-2      10      13         23
         20050601  2005-11-6      10      23         53
     批次号       日期       类别1   类别2     类别3
         20050111  2005-11-1      1       3          3
         20050221  2005-11-2      10      13         23
         20050631  2005-11-6      10      23         53
    ……
    现在能实现这样的格式
    在分组标头中加入下面的
    “编号”、“ 名称”的text框放在分组标头中就出提示错误:该控件 不能放在这里
    而且打印的也是连着打的,预览的时候,001和002 都在一张纸上郁闷啊~~~~~~~
      

  5.   

    补充说明:
    text控件可以加在分组标头中,但是运行程序后,提示:控件”text2“不能放在该区域
      

  6.   

    有的,这么说吧
    我把text2放在细节中就没问题,但是放在分组标头中就提示错误~~~~~~~~~~~~
      

  7.   

    strSql = "SHAPE {" & sql1 & " } " & _
            "AS miCmd COMPUTE miCmd BY '编号','名称' "
      

  8.   

    还要设置好text2的相关属性:
    RptGroup.Sections("Section6").Controls("text2").DataField = "名称"
    然后点击“分组标头”,在属性窗口,设置ForcePageBreak = 1
    你要的功能就可以实现了
      

  9.   

    strSql = "SHAPE {" & sql1 & " } " & _
            "AS miCmd COMPUTE miCmd BY '编号','名称' "    DataReport3.Sections("Section6").Controls("text2").DataField = "编号"
        DataReport3.Sections("Section6").Controls("text2").DataMember = "miCmd"
        DataReport3.Sections("Section6").Controls("text3").DataField = "名称"
        DataReport3.Sections("Section6").Controls("text3").DataMember = "miCmd"
     还是不行,还是提示错误
     控件”text2“不能放在该区域
      

  10.   

    DataReport3.Sections("Section6").Controls("text2").DataMember = "miCmd" 
    和编号一样,这是分组字段,在分组标头中,不要设置DataMember属性
      

  11.   

    谢谢你啊,终于解决了
    strSql = "SHAPE {" & sql1 & " } " & _
            "AS miCmd COMPUTE miCmd BY '编号','名称' "
    能帮我解释一下这句么??
    micmd是什么意思呢?
    其他在细节中写的
        DataReport3.Sections("Section6").Controls("text6").DataMember = "miCmd"
    我都加上这个了~~~~~
      

  12.   

    micmd 是SQL语句返回的 Recordset 的别名,你可以按自己的习惯命名
    在 COMPUTE 子句的列的列表中需要这个别名,用于定义父和子 Recordset 对象的关系。
      

  13.   

    这种的sql语句在查询分析器中不支持~~~`
      

  14.   

    vbman2003(家人) 
    大侠,我能再问你最后一个问题么?
    加在分组注脚中,合计和统计行数的语法怎么写啊????
      

  15.   

    比如你要合计的字段中qty:    strSql = "SHAPE {" & Sql & " } " & _
            "AS miCmd COMPUTE sum(miCmd.qty) as qty,miCmd BY 'Name' "
    然后在分组页脚加一个text:
    RptGroup.Sections("Section7").Controls("text5").DataField = "qty"