不是很复杂的报表用VB6自带的DataReport。

解决方案 »

  1.   

    利用datareport约束较多,可以自己根据实际情况自己编写打印代码。
      

  2.   

    请问:
      如果用datareport,是不是不同条件的查询结果就得各自设计各自的报表?
      

  3.   

    vb中用printer,自己编写代码好象很烦琐,我也没用过,能给我简单讲讲吗?另外,能给我一个讲解清晰的实例参考。先行谢过!
      

  4.   

    找个好点的报表控件,VB自带的DATAREPORT太不好用了
      

  5.   

    DATAREPORT可以实现较复杂的报表。
    他可以做基本的的统计和汇总
      

  6.   

    我用的是把记录集输出到LISTVIEW 
    http://www.jinesc.com/disp.asp?idx=70
    再从LISTVIEW中打印~~~ 
    代码比较长,不要见怪
    Sub ListvPrn(ll As ListView)
    '本模块用于直接打印 LISTVIEW  的内容
    Dim maxline As IntegerDim j(20) As Long
    Dim i, t, z, e As Integer
    Dim YY
        Dim X As Printer
        maxline = 30
    FrmPrn.Show 1
    If FrmPrn.Tag = "p" Then
    '选择打印机
    For Each X In Printers
       If X.DeviceName = FrmPrn.Combo1 Then
          Set Printer = X
          ' 终止查找打印机。
          Exit For
       End If
    Next'打印份数
    For e = 1 To CInt(FrmPrn.Text1)
    With Printer
    If FrmPrn.Option2 Then
        .Orientation = 1
    Else
        .Orientation = 2
    End If
        .FontName = "宋体"
        .FontSize = 20
        .ScaleMode = 1
        .CurrentX = 0
        .CurrentY = 0
        .FontSize = ll.Font.Size
        '正文
        .FontName = "宋体"
        .FontSize = ll.Font.Size
        .ScaleMode = 1
        '定义各坐标点(X)
        j(0) = 0
        j(1) = ll.ColumnHeaders(1).Width + 100
        For i = 2 To ll.ColumnHeaders.Count
            j(i) = ll.ColumnHeaders(i).Width + j(i - 1) + 100
        Next
        YY = 250
        '打印标题
        For i = 1 To ll.ColumnHeaders.Count
         .CurrentX = j(i - 1)
         .CurrentY = YY
            Printer.Print ll.ColumnHeaders(i).Text
        Next
        YY = YY + 350
         .CurrentX = 0
         .CurrentY = YY
         Printer.Print "--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------"    YY = YY + 400For t = 1 To ll.ListItems.Count
    '每30行自动换页
    z = z + 1
    If z = 61 Then
        z = 0
        Printer.NewPage
        YY = 250
    End If     .CurrentX = 0
         .CurrentY = YY
         Printer.Print ll.ListItems(t).TextFor i = 1 To ll.ColumnHeaders.Count - 1     .CurrentX = j(i)
         .CurrentY = YY
         If Not (i = 11) Then Printer.Print ll.ListItems(t).SubItems(i)
    Next     YY = YY + 200
    Next
    End With
    Printer.EndDoc
    Next
    End If
    End Sub
    我着段代码没有放到网上~~  我先帖出来~~  下次不贴那么长的代码了~~