生成的报表如http://www.runyang.net/1.jpg图所示,当然同样的记录码单记录是有可能大于10笔的,我想可能是用子报表分为10列,或者是分组,但问题是后面的统计不好做呀,分组也有同样的问题,请高人指点,
这样的例子在现实中应该不少,我在CSDN中找过没有这方面的示例程序,唉,希望也为后来者提供点帮助吧

解决方案 »

  1.   

    这个问题是 记录码单记录是有可能大于10笔,不知道现实工作中如果超出10笔是怎么处理的,难道重新印刷表格吗?(看楼主的表格好象胶印成品,不是当场从电脑打印出来的)如果非要这样的表格,涉及的问题是:报表纸张宽度要调整(比如超出10笔),楼主实在不行,就看一下最大能达到多少笔,然后做一个最大宽度的。或者更换表格结构,采用分组分栏结构,至于说到统计是可以做到的. 说真的,这方面的示例ActiveReport本身也没有提供过多的演示,中国的表格就是复杂,呵呵。建议楼主多在分组或者子报表上打打注意。重复一次,呵呵,和楼主共同研究。
      

  2.   

    这个单子是原来的软件自动生成的,可能是用dehpi写的,因为功能上不完善,所以重新写,数据记录我是一笔笔录进去的,我的想法是产品进行分组的,然后在datail区加10个控件,用数据进行填充,如果数据大于10个,正换到下一列去显示,但不知道数据换到下一行怎么写,我的数据记录集如下产品代码   发货数量  发货重量前几天问过,一位朋友作出如下回答,我觉得已经能解决一部份问题了,,思路也不错,只是不知道如何让多于10行的数据打印到下一行去,是不是newcolumn的一个属性去解决用field,但不绑定到字段。
    假设有十个field,分别是f1.......f10。在Detail区的format中这样写:
        Dim i As Long, S As String
        Dim C As Object
        Dim Rs As New ADODB.Recordset
        Set Rs = DbConnection.GetRs("select 数值 from 表名 where 产品='" & 产品名 & "')     '得到一个静态只读Recordset的函数,这部分自己写吧。    With Rs
            For i = 1 To .RecordCount
                .AbsolutePosition = i
                S = Rs.Fields(0)
                For Each C In Detail.Controls   '因为AR不支持控件数组,只好用名称来搜索。
                    If C.Name = "F" & i Then
                    C.Text = S
                Next
            Next
        End With
       
    原理很简单吧。就是放弃报表数据控件的自动填充。用代码手动填充。