我用的是把记录集输出到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 我着段代码没有放到网上~~ 我先帖出来~~ 下次不贴那么长的代码了~~
如果用datareport,是不是不同条件的查询结果就得各自设计各自的报表?
他可以做基本的的统计和汇总
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
我着段代码没有放到网上~~ 我先帖出来~~ 下次不贴那么长的代码了~~