2009-04-08 38 views
14

Trong khi tôi nhận ra rằng tôi chỉ có thể hiển thị biểu mẫu ngoài màn hình và ẩn nó, cùng với nhiều hình thức thuật sĩ tấn công WinForms khác, tôi muốn gắn bó với đường dẫn zen và làm được điều này đúng. Tôi có một báo cáo địa phương SSRS (vì vậy không có máy chủ) mà tôi muốn cung cấp cho người dùng tùy chọn xem hoặc in ấn (nói cách khác, tôi không muốn ép buộc họ xem để in). Thật không may, điều khiển ReportViewer phàn nàn về "trạng thái" của nó khi tôi cố gắng in nó như một thành phần mà tôi đang tạo một cách rõ ràng trong mã của tôi (bên trong một khối using(), hoặc) hoặc nếu tôi cố gắng tạo biểu mẫu người xem và chỉ cần in mà không bao giờ hiển thị nó.Làm thế nào để in báo cáo ReportViewer mà không hiển thị một biểu mẫu

Có phương tiện nào để thực hiện việc này sẽ phù hợp với tôi hay tôi chỉ nên trình chiếu màn hình và tiếp tục cuộc sống của mình?

Trả lời

22

Tôi có một mẫu mà thực hiện điều này được đăng trên blog của tôi ở đây: http://blogs.msdn.com/brianhartman/archive/2009/02/27/manually-printing-a-report.aspx

Đối tượng LocalReport có thể được khởi tạo một cách độc lập của kiểm soát ReportViewer và sử dụng trực tiếp trong mã mẫu gắn liền với bài đăng blog. Hoặc bạn có thể vượt qua trong ReportViewer.LocalReport ngay cả khi bạn không hiển thị báo cáo đầu tiên trong giao diện người dùng.

+0

Cảm ơn, Brian. Tôi sẽ xem xét giải pháp đầu tiên này vào ngày mai. –

+0

Giải pháp tuyệt vời; làm việc hoàn hảo! Xin chúc mừng bạn đã nhận được điểm SO đầu tiên của mình từ câu hỏi tiền thưởng;) –

+0

Mã tuyệt vời - cảm ơn bạn đã chia sẻ. – RThomas

2

Kiểm tra này ra và xem nếu nó giúp ... http://scruffylookingcatherder.com/archive/2007/12/07/printing-reporting-services-2005-reports.aspx

Một lời giải thích nhỏ: Đó là sử dụng các dịch vụ web SSRS để render các báo cáo cho một hình ảnh EMF sau đó gửi hình ảnh đến máy in.

+0

Thật không may, đây là một báo cáo địa phương sử dụng dữ liệu từ một DataSet từ một SQLCE cơ sở dữ liệu 3.5, vì vậy bất cứ điều gì để làm với SSRS chính nó là có lẽ vì câu hỏi. –

+0

@Xoá liên kết mà bạn đã cung cấp không hoạt động. Liên kết chính xác là http://scruffylookingcatherder.com/post/2007/12/08/Printing-Reporting-Services-2005-Reports.aspx – N30

0
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 
Các vấn đề liên quan