web-dev-qa-db-ja.com

フォームを表示せずにReportViewerレポートを印刷する方法

フォームを画面外に表示して非表示にすることができ、他の多くの形式のWinFormsハックの魔法使いと一緒にできることはわかっていますが、私はむしろ禅の道に固執してこれを正しく実行したいと思います。 SSRSローカルレポート(サーバーがないため)があり、ユーザーに表示または印刷のオプションを提供したい(つまり、ユーザーに表示を強制して印刷させたくない)。残念ながら、ReportViewerコントロールは、コードで明示的に作成しているコンポーネントとして(もちろん、using()ブロック内で)印刷しようとすると、またはビューアフォームをインスタンス化しようとすると、その「状態」について文句を言います。表示せずに印刷するだけです。

これを行うための手段はありますか?それとも、画面外に表示して人生を続ける必要がありますか?

14
Adam Robinson

私のブログにこれを行うサンプルがあります: http://blogs.msdn.com/brianhartman/archive/2009/02/27/manually-printing-a-report.aspx

LocalReportオブジェクトは、ReportViewerコントロールとは独立してインスタンス化でき、そのブログ投稿に添付されているサンプルコードで直接使用できます。または、最初にUIにレポートを表示しなくても、ReportViewer.LocalReportを渡すことができます。

22
Brian Hartman

これをチェックして、それが役立つかどうかを確認してください... http://scruffylookingcatherder.com/archive/2007/12/07/printing-reporting-services-2005-reports.aspx

簡単な説明:SSRS Webサービスを使用して、レポートをEMFイメージにレンダリングしてから、イメージをプリンターに送信します。

1
Mozy
Private Sub btnReceipt_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnReceipt.Click


    My.Forms.FormA5.ReportViewer.LocalReport.DataSources.Clear()
    Dim cmd = New SqlClient.SqlCommand("Select * from V_Sale where InvoiceNo=" & Me.txtInvoice.Text, cn)
    Dim dr = cmd.ExecuteReader()
    Dim dt As New DataTable
    dt.Load(dr)
    dr.Close()
    Dim rpt As New ReportViewer
    rpt.LocalReport.DataSources.Clear()
    rpt.LocalReport.DataSources.Add(New ReportDataSource("posds_receipt", dt))
    rpt.LocalReport.ReportEmbeddedResource = "POSsystem.receipt.rdlc"
    rpt.SetDisplayMode(DisplayMode.PrintLayout)
    rpt.ZoomMode = ZoomMode.FullPage

    Dim printDialog1 As PrintDialog = New PrintDialog
    printDialog1.Document = PrintDocument1
    Dim result As DialogResult = printDialog1.ShowDialog
    If (result = DialogResult.OK) Then
        PrintDocument1.Print()
    End If

End Sub
0
Pheakdey Sout
0
Ramesh Rao