Wie ein Report Bericht zu drucken, ohne eine Form zeigt,
-
06-09-2019 - |
Frage
Während ich merke, dass ich einfach das Formular Off-Screen zeigen könnte, und verstecken sie, zusammen mit vielen anderen Formen von WinForms hackish wizardry, würde ich eher Stick mit dem zen Weg und bekommen dies richtig gemacht. Ich habe einen SSRS lokalen Bericht (so kein Server), die ich dem Benutzer die Möglichkeit, entweder Anzeigen oder Drucken geben wollen (mit anderen Worten, ich möchte, dass sie nicht zwingen, um Druck zu sehen). Leider wirft das Reportviewer-Steuerelement über seinen „Zustand“, wenn ich versuche, es zu drucken, entweder als Komponente explizit in meinem Code Ich erstelle (in einem mit () Block, natürlich) oder wenn ich versuche, meinen Zuschauer Form zu instanziiert und bedrucken, ohne jemals es zu zeigen.
Gibt es ein Mittel, dies zu tun, der mit mir gut sitzen wird, oder soll ich es nur Off-Screen zeigen und mit meinem Leben weitergehen?
Lösung
Ich habe eine Probe, die diese auf meinem Blog hier gepostet hat: http://blogs.msdn.com/brianhartman/archive/2009/02/27/manually-printing-a-report.aspx
Das LocalReport Objekt kann unabhängig von dem Reportviewer-Steuerelement und direkt in dieser Blog-Post angebracht in dem Beispielcode instanziiert werden. Oder Sie können in ReportViewer.LocalReport passieren, auch wenn Sie zum ersten Mal in der Benutzeroberfläche den Bericht nicht angezeigt werden.
Andere Tipps
Überprüfen Sie dies und sehen, ob es hilft ... http://scruffylookingcatherder.com/archive/2007/12/07/printing-reporting-services-2005-reports.aspx
Eine kleine Erklärung: Es ist die SSRS Web-Service mit dem Report zu einem EMF-Bild machen dann das Bild an den Drucker senden
.Bitte beachten Sie den folgenden Link, sehr nützlich für Sie http: / /social.msdn.microsoft.com/Forums/en-US/9f52d79d-5baf-4e84-97d5-7dbba6623b89/printing-without-the-reportviewer
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