none
Imprimir consulta a Crystal Reports directamente a la impresora RRS feed

  • Pregunta

  • Buenos días a todos

    Estoy usando Vb net 2010 con crystal reports 13 en Windows 10 de 32 bits

    quisiera saber si hay alguna forma de enviar una consulta directamente a la impresora sin ver por el visor nativo del CR

    Esta instrucción ya la tengo armada y funciona perfecto y envía al visor sin problemas, pero quisiera que me imprima directo 

    Using dbObra As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Password=;User ID=Admin;Data Source=" & lblObraCompleto.Text)
                                'Obra Detalles
                                Dim sqlCostoObra As String = "SELECT * FROM Obra_Detalles"
                                Dim cmdCostoObra = New OleDbCommand(sqlCostoObra, dbObra)
                                Dim daCostoObra As New OleDbDataAdapter(cmdCostoObra)
                                daCostoObra.Fill(DSPresupRubros, "Obra_Detalles")

                                'Obra 
                                Dim sqlObra As String = "SELECT * FROM Obra"
                                Dim cmdObra = New OleDbCommand(sqlObra, dbObra)
                                Dim daObra As New OleDbDataAdapter(cmdObra)
                                daObra.Fill(DSPresupRubros, "Obra")

                                'Rubros detalles 
                                Dim sqlRubro As String = "SELECT * FROM Rubros_Detalles"
                                Dim cmdRubro = New OleDbCommand(sqlRubro, dbObra)
                                Dim daRubro As New OleDbDataAdapter(cmdRubro)
                                daRubro.Fill(DSPresupRubros, "Rubros_Detalles")
                            End Using

    Saludos cordiales

    martes, 30 de mayo de 2017 14:06

Respuestas

  • Saludos:

    Seria algo como esto:

    Dim MyReport As New Report1  ' --> Nombre del archivo RPT
    Dim MyPrinter As String = "\\User-PC\LaserJet 450"
    
     Try
              With MyReport
                    .PrintOptions.PrinterName = MyPrinter
                    .PrintToPrinter(1, False, 1, 1)
                End With
    
            Catch ex As Exception
                MsgBox("Error Printing: " & ex.Message)
            Finally
                If Not IsNothing(MyReport) Then
                    If MyReport.IsLoaded Then
                        MyReport.Close()
                    End If
                End If
            End Try

    Espero ayude.

    JOSE LUIS


    Dios NO los llamo LAS DIEZ RECOMENDACIONES

    • Propuesto como respuesta Jose Luis Vargas martes, 30 de mayo de 2017 16:32
    • Marcado como respuesta carlosanpy lunes, 5 de junio de 2017 13:04
    martes, 30 de mayo de 2017 16:32

Todas las respuestas

  • Saludos:

    Seria algo como esto:

    Dim MyReport As New Report1  ' --> Nombre del archivo RPT
    Dim MyPrinter As String = "\\User-PC\LaserJet 450"
    
     Try
              With MyReport
                    .PrintOptions.PrinterName = MyPrinter
                    .PrintToPrinter(1, False, 1, 1)
                End With
    
            Catch ex As Exception
                MsgBox("Error Printing: " & ex.Message)
            Finally
                If Not IsNothing(MyReport) Then
                    If MyReport.IsLoaded Then
                        MyReport.Close()
                    End If
                End If
            End Try

    Espero ayude.

    JOSE LUIS


    Dios NO los llamo LAS DIEZ RECOMENDACIONES

    • Propuesto como respuesta Jose Luis Vargas martes, 30 de mayo de 2017 16:32
    • Marcado como respuesta carlosanpy lunes, 5 de junio de 2017 13:04
    martes, 30 de mayo de 2017 16:32
  • Hola, gracias por responder

    estuve adaptando el texto que me has recomendado, pero extrañamente solo imprime el informe rpt pero sin los datos de la consulta, en que estoy errando??

    Dim sfdNombre As New PrintDialog
                Dim dlg As New PrintDialog
                dlg.ShowDialog()
    
                With sfdNombre
    
                Using dbObra As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Password=;User ID=Admin;Data Source=" & lblObraCompleto.Text)
                            Dim sqlCostoObra As String = "SELECT * FROM Obra_Detalles"
                            Dim cmdCostoObra = New OleDbCommand(sqlCostoObra, dbObra)
                            Dim daCostoObra As New OleDbDataAdapter(cmdCostoObra)
                            daCostoObra.Fill(DSCostoObra, "Obra_Detalles")
    
                            Dim sqlObra As String = "SELECT * FROM Obra"
                            Dim cmdObra = New OleDbCommand(sqlObra, dbObra)
                            Dim daObra As New OleDbDataAdapter(cmdObra)
                            daObra.Fill(DSCostoObra, "Obra")
                        End Using
                    End Using
                End With
    
                Dim myReport As New CrystalDecisions.CrystalReports.Engine.ReportDocument
                Dim ruta As String = String.Format("{0}\{1}", Application.StartupPath, "Reportes")
    
                myReport.Load(ruta & "\ReportCostoObra.rpt")
    
                With myReport
                    .PrintToPrinter(1, False, 0, 0)
                End With
    
    Saludos cordiales

    miércoles, 31 de mayo de 2017 11:54
  • Hola de nuevo

    Muchas gracias de nuevo, ya implementé el código final y paso por si alguien necesita de esta instrucción

     Dim sfdNombre As New PrintDialog
                Dim dlg As New PrintDialog
                dlg.ShowDialog()
    
                With sfdNombre
                    Cursor = Cursors.WaitCursor
                    Dim DSCostoObra As New DSCostoObra()
                     Using dbObra As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Password=;User ID=Admin;Data Source=" & lblObraCompleto.Text)
    
                            Dim sqlCostoObra As String = "SELECT * FROM Obra_Detalles"
                            Dim cmdCostoObra = New OleDbCommand(sqlCostoObra, dbObra)
                            Dim daCostoObra As New OleDbDataAdapter(cmdCostoObra)
                            daCostoObra.Fill(DSCostoObra, "Obra_Detalles")
    
                            Dim sqlObra As String = "SELECT * FROM Obra"
                            Dim cmdObra = New OleDbCommand(sqlObra, dbObra)
                            Dim daObra As New OleDbDataAdapter(cmdObra)
                            daObra.Fill(DSCostoObra, "Obra")
    
                        End Using
                    Dim reporteCostoObra As New ReportCostoObra
                    Dim ruta As String = String.Format("{0}\{1}", Application.StartupPath, "Reportes")
                    reporteCostoObra.SetDataSource(DSCostoObra)
    
                    With reporteCostoObra
                        .PrintToPrinter(1, False, 0, 0)
                    End With
                End With
    Saludos cordiales



    • Editado carlosanpy lunes, 5 de junio de 2017 13:08
    lunes, 5 de junio de 2017 13:07
  • Saludos:

    Te falta asignar el ReportSource al reporte, asi:

    With myReport
       .ReportSource = DSCostoObra(0)
       .PrintToPrinter(1, False, 0, 0)
    End With

    Espero ayude.

    JOSE LUIS


    Dios NO los llamo LAS DIEZ RECOMENDACIONES

    lunes, 5 de junio de 2017 17:20
  • Genial, super. sin problemas imprimió sin pasar por la vista ventana. 

    viernes, 2 de abril de 2021 20:37