名位大师,帮帮我啦:
报表打印要求:在程序中可以选择1.打印全部报表2.打印奇数页报表3.打印偶数页报表,报表工具用:ActiveReports ,怎么写程序呀?你有没有例子,发个给我啦,项目快要上线了,急啊!!! 谢啦.
报表打印要求:在程序中可以选择1.打印全部报表2.打印奇数页报表3.打印偶数页报表,报表工具用:ActiveReports ,怎么写程序呀?你有没有例子,发个给我啦,项目快要上线了,急啊!!! 谢啦.
ActiveReports 安装目录下有例子的
Dim cv As Canvas
' Apply a preprinted canvas object tyo all pages
' in the report
For Each cv In Pages
cv.Overlay cvFormaLayout
Next
End SubPrivate Sub PrintDuplex(ar As DDActiveReport)
Dim I As Integer Printer.StartJob
' print all odd pages, pause, then print all even pages
'-----打印奇数页 For I = 0 To Pages.Count Step 2
Printer.PrintPage Pages(I)
Next I
s = "Printed first side, " & _"turn the pages and click OK to print second side" & _
"or Cancel to abort the print job" If MsgBox(s,vbOKCancel) = vbOk Then
’----打印偶数页
For I = 1 To Pages.Count Step 2
Printer.PrintPage Pages(I)
Next I
End If
Printer.EndJob
End Sub
你可不可以告诉我ActiveReports 安装目录下有这个例子的名称是什么?
我在界面里调用时,它提示:"用户定义类型未定义"啊,可能是我不会调用吧.
Dim printType As String
Private Sub ComOk_Click()If OptEvenPrint.Value = True Then
printType = "EvenPrint" '打印偶数页
ElseIf OptOddPrint.Value = True Then
printType = "OddPrint" '打印奇数页
Else
printType = "AllPrint" '全部打印
End IfPrintDuplex (Report1) '调用方法进行打印报表,报表名为:Report1
End SubPrivate Sub PrintDuplex(ar As DDActiveReport)
Dim I As Integer
Dim s As String
s = "Printed first side, " & _
"turn the pages and click OK to print second side" & _
"or Cancel to abort the print job" Printer.StartJob
' print all odd pages, pause, then print all even pages
'-----打印奇数页
If printType = "OddPrint" Then For I = 0 To Pages.Count Step 2
Printer.PrintPage Pages(I)
Next I If MsgBox(s, vbOKCancel) = vbOK Then
'----打印偶数页
For I = 1 To Pages.Count Step 2
Printer.PrintPage Pages(I)
Next I
End If
Printer.EndJob
ElseIf printType = "EvenPrint" Then'-----打印偶数页
For I = 1 To Pages.Count Step 2
Printer.PrintPage Pages(I)
Next I If MsgBox(s, vbOKCancel) = vbOK Then
'----打印奇数页
For I = 0 To Pages.Count Step 2
Printer.PrintPage Pages(I)
Next I
End If
Printer.EndJobElse
'----打印全部页
For I = 0 To Pages.Count Step 1
Printer.PrintPage Pages(I)
Next I
End IfEnd Sub
新建一Form 名为frmReport,加一ARView21控件Public rs As ADODB.Recordset
Public PrintOddEven As IntegerPrivate Sub ARView21_LoadCompleted()
PreViewOddEven PrintOddEven
End SubPrivate Sub PreViewOddEven(ByVal PageType As Integer)
'----PageType是1,则显示奇数页,PageType是2,则显示偶数页,否则显示全部
Dim i As Integer
Dim PG As Pages
Dim strRange As String
Dim CV As Canvas
Debug.Print ARView21.Pages.Count
If PageType <> 1 And PageType <> 2 Then Exit Sub For i = PageType To ARView21.Pages.Count Step 2
strRange = strRange & CStr(i) & ","
Next
strRange = Left(strRange, Len(strRange) - 1)
Set PG = ARView21.Pages.GetPagesInRange(strRange) ARView21.Pages.RemoveAll
ARView21.Pages.Commit
For Each CV In PG
ARView21.Pages.Insert ARView21.Pages.Count, CV
Next
ARView21.Pages.Commit ARView21.Refresh
Set PG = Nothing
Set CV = Nothing
End Sub
Private Sub Form_Load()
ARView21.Move Me.ScaleLeft, Me.ScaleTop, Me.ScaleWidth, Me.ScaleHeight
InitReprot
End SubPrivate Sub Form_Resize()
ARView21.Move Me.ScaleLeft, Me.ScaleTop, Me.ScaleWidth, Me.ScaleHeight
End SubPrivate Sub InitReprot()
Set ActiveReport1.DataControl1.Recordset = rs
ActiveReport1.Restart
ActiveReport1.Refresh
ARView21.ReportSource = ActiveReport1
ARView21.Refresh
End Sub-----------
调用:在调用窗体中
Private Sub PrintEven()
Dim frm1 As New frmReport
Set frm1.rs = rs
frm1.PrintOddEven = 2
frm1.Show 1
Unload frm1
Set frm1 = Nothing
If rs.RecordCount >= 1 Then rs.MoveFirst
End SubPrivate Sub PrintOdd()
Dim frm1 As New frmReport
Set frm1.rs = rs
frm1.PrintOddEven = 1
frm1.Show 1
Unload frm1
Set frm1 = Nothing
If rs.RecordCount >= 1 Then rs.MoveFirst
End Sub
---------------
在本机上测试成功,你试试……