VS2003下水晶報表的列印比較麻煩,看到有些朋友在為此而苦惱,分享一下偶的做法:
如果是局域網內中,可參考下面的步驟:
1.增加列印按鈕,其代碼如下

 Dim rpt As ReportDocument = Session("report")
 Dim pv() As String = Split(TextBox1.Text, ";")'TextBox1.text為點列印按鈕時返回的印表機及邊界的設定值,以;分隔
 Dim margins As CrystalDecisions.Shared.PageMargins
        If pv(0) > pv(1) Then
            If Not IsStartupScriptRegistered("Startup") Then
                Page.RegisterStartupScript("Startup", "<script language=javascript>window.alert('列印頁數設定錯誤!@_@')</script>")
            End If
            Exit Sub
        End If

        ' 取得 PageMargins 結構並設定
        '  報表的邊界。
        margins = rpt.PrintOptions.PageMargins
        margins.leftMargin = pv(6)
        margins.rightMargin = pv(7)
        margins.topMargin = pv(4)
        margins.bottomMargin = pv(5)
        ' 套用頁面邊界。
        rpt.PrintOptions.ApplyPageMargins(margins)

        ' 選取印表機。
        rpt.PrintOptions.PrinterName = pv(3)
        ' 列印報表。將 startPageN 及 endPageN 
        '  參數設定為 0 即可列印所有頁面。
        Try
            rpt.PrintToPrinter(pv(2), False, pv(0), pv(1))
        Catch exp As LoadSaveReportException
            If Not IsStartupScriptRegistered("Startup") Then
                Page.RegisterStartupScript("Startup", "<script language=javascript>window.alert('開啟報表檔時發生錯誤!@_@')</script>")
            End If
        Catch exp As PrintException
            If Not IsStartupScriptRegistered("Startup") Then
                Page.RegisterStartupScript("Startup", "<script language=javascript>window.alert('列印時發生錯誤,請檢查印表機相關設定!@_@')</script>")
            End If
        Catch exp As Exception
            If Not IsStartupScriptRegistered("Startup") Then
                Page.RegisterStartupScript("Startup", "<script language=javascript>window.alert('錯誤來源:" & exp.Source & "!@_@')</script>")
            End If
        End Try

2.增設列印設定頁面,包括印表機名稱及邊界,列印頁數等的設定,當點列印按鈕後秀出該列印設定頁面並將值返回至報表頁面的TextBox1中
P.S.值得注意:
1.服務器上要安裝所需用的印表機,建議印表機位址設成IP或用PrintServer
2.印表機盡可能選用功能完備的,偶之前有遇到過用HP1022對有些報表印不出,有些卻正常,而換用HP1200或HP3300,HP3390,EPSON LQ-680K等均正常
posted on 2007-02-03 15:39  小哈  阅读(520)  评论(0编辑  收藏  举报