我现在用ActiveReport来做打印报表,我要打印出来的报表是这样的:有个表头,下面是细表.
细表就是一张表格.
我操作访问数据库都通过代码形式的,用得是VB6,数据库是sqlserver2000.
做过这方面的给我点建议.

解决方案 »

  1.   

    我的例子:  Dim ctl As Object, i As Integer
      
      intLeft(0) = 0:  For i = 1 To 7: intLeft(i) = intLeft(i - 1) + intWidth(i - 1): Next
      With ar
      .DataControl1.ConnectionString = curConnection
      .DataControl1.Source = strSQL
      '添加表头
      Set ctl = .ReportHeader.Controls.Add("DDActiveReports2.Label")
      ctl.Left = 1000
      ctl.Width = 7000
      ctl.Caption = strTitle
      ctl.Font.Name = "仿宋_GB2312"
      ctl.Font.Size = 20
      Set ctl = .ReportHeader.Controls.Add("DDActiveReports2.Label")
      ctl.Left = 10
      ctl.Width = 3100
      ctl.Caption = strField(0) & ":" & cur_xn
      ctl.Font.Name = "宋体"
      ctl.Font.Size = 12
      ctl.Top = 700
      Set ctl = .ReportHeader.Controls.Add("DDActiveReports2.Label")
      ctl.Left = 3110
      ctl.Width = 3000
      ctl.Caption = strField(1) & ":" & cur_xy
      ctl.Font.Name = "宋体"
      ctl.Font.Size = 12
      ctl.Top = 700
      Set ctl = .ReportHeader.Controls.Add("DDActiveReports2.Label")
      ctl.Left = 6110
      ctl.Width = 3000
      ctl.Caption = strField(2) & ":" & cur_nj
      ctl.Font.Name = "宋体"
      ctl.Font.Size = 12
      ctl.Top = 700
    '  Set ctl = .ReportHeader.Controls.Add("DDActiveReports2.Label")
    '  ctl.Left = 9100
    '  ctl.Width = 1400
    '  ctl.Caption = "统计字段:" & CStr(.GroupHeader1.DataField)
    '  ctl.Font.Name = "宋体"
    '  ctl.Font.Size = 8
    '  ctl.Top = 700
      .ReportHeader.Height = 800
      
      '添加组头
      If strSum <> "" Then
      .GroupHeader1.Visible = True
      .GroupFooter1.Visible = True
      .GroupHeader1.DataField = strSum
      .GroupFooter1.Height = 300
      Set ctl = .GroupFooter1.Controls.Add("DDActiveReports2.Label")
        ctl.Left = 0
        ctl.Width = intLeft(3)
        ctl.Height = 300
        ctl.Caption = "小计"
        ctl.Font.Name = "宋体"
        ctl.Font.Size = 12
        ctl.Alignment = ddTXCenter
      Set ctl = .GroupFooter1.Controls.Add("DDActiveReports2.Shape")
        ctl.Left = 0
        ctl.Width = intLeft(3)
        ctl.Height = 300
      For i = 3 To 7
        Set ctl = .GroupFooter1.Controls.Add("DDActiveReports2.Shape")
        ctl.Left = intLeft(i)
        ctl.Width = intWidth(i)
        ctl.Height = 300
      Next
        
        .Field1.DataField = strField(3)
        .Field1.SummaryDistinctField = strField(3)
        .Field1.Left = intLeft(3)
        .Field1.Width = intWidth(3)
        .Field2.DataField = strField(4)
        .Field2.SummaryDistinctField = strField(4)
        .Field2.Left = intLeft(4)
        .Field2.Width = intWidth(4)
        .Field3.DataField = strField(5)
        .Field3.SummaryDistinctField = strField(5)
        .Field3.Left = intLeft(5)
        .Field3.Width = intWidth(5)
        .Field4.DataField = strField(6)
        .Field4.SummaryDistinctField = strField(6)
        .Field4.Left = intLeft(6)
        .Field4.Width = intWidth(6)
        .Field5.DataField = strField(7)
        .Field5.SummaryDistinctField = strField(7)
        .Field5.Left = intLeft(7)
        .Field5.Width = intWidth(7)
        
      Else
      .GroupHeader1.Visible = False
      .GroupFooter1.Visible = False
      End If
        .Detail.Height = 320
      
      For i = 0 To 7
        '添加表头
        Set ctl = .PageHeader.Controls.Add("DDActiveReports2.Label")
        ctl.Caption = strField(i)
        ctl.Left = intLeft(i) + 10
        ctl.Width = intWidth(i)
        ctl.Font.Name = "宋体"
        ctl.Font.Size = 12
        ctl.Height = 300
        ctl.Top = 120
        Set ctl = .PageHeader.Controls.Add("DDActiveReports2.Shape")
        ctl.Left = intLeft(i)
        ctl.Width = intWidth(i)
        ctl.Height = 320
        ctl.Top = 100
        '添加字段
        Set ctl = .Detail.Controls.Add("DDActiveReports2.Field")
        ctl.DataField = strField(i)
        ctl.Left = intLeft(i) + 10
        ctl.Width = intWidth(i)
        ctl.Font.Name = "宋体"
        ctl.Font.Size = 10
        ctl.Height = 280
        ctl.Top = 30
        ctl.WordWrap = False
        ctl.Visible = bVis(i)
        '添加边框
        Set ctl = .Detail.Controls.Add("DDActiveReports2.Shape")
        ctl.Left = intLeft(i)
        ctl.Width = intWidth(i)
        ctl.Height = 320
        ctl.Top = 0
      Next
      
      '添加总计
      .ReportFooter.Height = 300
      Set ctl = .ReportFooter.Controls.Add("DDActiveReports2.Label")
        ctl.Left = 0
        ctl.Width = intLeft(3)
        ctl.Height = 320
        ctl.Caption = "总计"
        ctl.Font.Name = "宋体"
        ctl.Font.Size = 12
        ctl.Alignment = ddTXCenter
      Set ctl = .ReportFooter.Controls.Add("DDActiveReports2.Shape")
        ctl.Left = 0
        ctl.Width = intLeft(3)
        ctl.Height = 320
      For i = 3 To 7
        Set ctl = .ReportFooter.Controls.Add("DDActiveReports2.Shape")
        ctl.Left = intLeft(i)
        ctl.Width = intWidth(i)
        ctl.Height = 320
      Next
        
        .Field6.DataField = strField(3)
        .Field6.SummaryFunc = ddSFSum
        .Field6.SummaryDistinctField = strField(3)
        .Field6.SummaryRunning = ddSRGroup
        .Field6.Left = intLeft(3)
        .Field6.Width = intWidth(3)
        .Field7.DataField = strField(4)
        .Field7.SummaryFunc = ddSFSum
        .Field7.SummaryDistinctField = strField(4)
        .Field7.SummaryRunning = ddSRGroup
        .Field7.Left = intLeft(4)
        .Field7.Width = intWidth(4)
        .Field8.DataField = strField(5)
        .Field8.SummaryFunc = ddSFSum
        .Field8.SummaryDistinctField = strField(5)
        .Field8.SummaryRunning = ddSRGroup
        .Field8.Left = intLeft(5)
        .Field8.Width = intWidth(5)
        .Field9.DataField = strField(6)
        .Field9.SummaryFunc = ddSFSum
        .Field9.SummaryDistinctField = strField(6)
        .Field9.SummaryRunning = ddSRGroup
        .Field9.Left = intLeft(6)
        .Field9.Width = intWidth(6)
        .Field10.DataField = strField(7)
        .Field10.SummaryFunc = ddSFSum
        .Field10.SummaryDistinctField = strField(7)
        .Field10.SummaryRunning = ddSRGroup
        .Field10.Left = intLeft(7)
        .Field10.Width = intWidth(7)
      End With
      

  2.   

    全部用代码实现?我的意思是数据库连接访问是用SQL串,而不是绑定
      

  3.   

    不会是想把报表上的line label textbox都用代码来实现出来吧