none
如何讓用戶端報表(*.rdlc),直接列印,而不SHOW出ReportViewer預覽畫面 RRS feed

  • 問題

  • 採用VB2005,開發WinForm程式

    我是用用戶端報表(*.rdlc)的

    想要讓用戶端報表(*.rdlc),直接由印表機列印,而不SHOW出ReportViewer預覽畫面

    謝謝

    2006年11月26日 下午 03:08

解答

  • Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load        Me.ProductsTableAdapter.Fill(Me.northwndDataSet.Products)

    Me.ReportViewer1.RefreshReport()  '要加這行程式


    End Sub

        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Try       
                Me.ReportViewer1.PrintDialog()
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try

        End Sub

    以上供您參考。

     

    2006年11月27日 上午 03:36
    版主

所有回覆

  • 希望以下步驟對您有所幫助。

    一、首先將ReportViewer設定為Visible=Flase。

    二、加入ReportViewer1.PrintDialog()這段程式。

       10  Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

       11         ReportViewer1.PrintDialog()

       12     End Sub

    2006年11月26日 下午 06:25
    版主
  • 謝謝 回覆

    但會發生

    "由於該物件目前的狀態,導致作業無效。"這錯誤訊息

    程式如下:

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
           Me.ProductsTableAdapter.Fill(Me.northwndDataSet.Products)
            Try
                ReportViewer1.PrintDialog()
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try

        End Sub

    不知何處發生問題?

    因為我下ReportViewer1.RefreshReport()是正常

    再麻煩你解答,謝謝

    2006年11月27日 上午 01:23
  • 這邊的程式碼要放置於一個『列印』鈕的CLICK事件上,如果放於PAGE_LOAD,在此REPORTVIEWER還沒有被FILL資料(這邊您可能要作一下CODE TRACE,我不太確定),所以會導致錯誤。
    2006年11月27日 上午 02:34
    版主
  • 謝謝回覆

    程式調整如下

    首先我在此form放了一button,
    在form_load事件中fill   dataset
    也去引發button_click事件,ReportViewer1.PrintDialog

    程式如下
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load        Me.ProductsTableAdapter.Fill(Me.northwndDataSet.Products)
    End Sub

        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Try       
                Me.ReportViewer1.PrintDialog()
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try

        End Sub

    依舊發生"由於該物件目前的狀態,導致作業無效。"的錯誤訊息

    感謝能再度回覆

     

    2006年11月27日 上午 03:26
  • Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load        Me.ProductsTableAdapter.Fill(Me.northwndDataSet.Products)

    Me.ReportViewer1.RefreshReport()  '要加這行程式


    End Sub

        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Try       
                Me.ReportViewer1.PrintDialog()
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try

        End Sub

    以上供您參考。

     

    2006年11月27日 上午 03:36
    版主
  • 感謝你的答覆
    錯誤訊息是不見了,跟我所想要有90%相似度

    如果能夠不出現印表機對話框,直接交由預設印表機就列印就會更完美
    因為我的目的是要印[出貨單],不然每次每印一張要選一次印表機對話框,出現印表機對話框頻率過高
    有無辦法改善呢?

    謝謝回覆

     

     

     

     

     

    2006年11月27日 上午 04:24
  • ReportViewer可能無法達到您想要的需求,就像直接開啟pdf按列印鈕,也是會跳出列印的相關設定畫面。

    如果要達成您的要求(少按列印設定),要將出貨單設計成可以一次列印多張,就可以顯示一次列印設定畫面,而將全部出貨單列印出來了。

    2006年11月27日 上午 04:43
    版主
  • 謝謝,你的回覆

     

    2006年11月27日 上午 05:03
  • 再次請教
    因為一定要輸入一張完出貨單,就要立即列印,所以你介紹的方法對我而言,並不是最佳解
    請問是否有另外方法,解決這個問題呢?
    謝謝
    2006年11月27日 上午 08:03