none
Imprimir Factura directamente sin mostrar la preview en vb 2017. RRS feed

  • Pregunta

  • Buenas tardes a todos,

    Estoy trabajando en un sistema de facturación y me tope con un obstáculo y es que no logro imprimir la factura a la hora que se genera una venta sin tener que mostrar la vista previa de la factura, necesito enviar la factura a la impresora directamente.

    Estoy trabajando con la herramienta CrystalReport que trae visual studio 2017.

    les dejo el código que tengo hasta ahora.

    En un form llamado FormMostrarFacturasVentas, tengo lo siguiente,

    Imports CrystalDecisions.CrystalReports
    Imports CrystalDecisions.CrystalReports.Engine
    Imports CrystalDecisions.Shared
    Public Class FormMostrarFacturasVentas
        Private CrptDocument As ReportDocument
        Dim RutaReporte As String
        Private Sub CargarDocumento()
            Try
    
                Dim RutaReporte As String
                Dim crDatabase As Database
                Dim crTables As Tables
                Dim crTable As Table
                Dim crTableLogOnInfo As TableLogOnInfo
                Dim crConnectioninfo As ConnectionInfo
                Dim userbd As String = "sa"
                crConnectioninfo = New ConnectionInfo
    
                With crConnectioninfo
                    .ServerName = My.Settings.server
                    .DatabaseName = My.Settings.bd
                    .UserID = userbd
                    .Password = My.Settings.pass
                End With
    
                CrptDocument = New ReportDocument
                RutaReporte = reportpath & nombrereporte
                CrptDocument.Load(RutaReporte)
                CrptDocument.SetDatabaseLogon(userbd, My.Settings.pass, My.Settings.server, My.Settings.bd, False)
                crDatabase = CrptDocument.Database
                crTables = crDatabase.Tables
    
                For Each crTable In crTables
                    crTableLogOnInfo = crTable.LogOnInfo
                    crTableLogOnInfo.ConnectionInfo = crConnectioninfo
                    crTable.ApplyLogOnInfo(crTableLogOnInfo)
                Next
                'CrptDocument.SetParameterValue("fecha_inicio", fecha_inicio)
                Select Case tipo_reporte
                    Case 1
    
                        CrptDocument.SetParameterValue("@numero_factura", idreportes)
                        Me.CrystalReportViewer1.ReportSource = CrptDocument
    
                    Case 2
    
                    Case 3
                End Select
    
            Catch expSQL As Exception
                MsgBox(expSQL.ToString, MsgBoxStyle.OkOnly, "SQL Exception")
            End Try
        End Sub
        Private Sub FormMostrarFacturasVentas_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            CargarDocumento()
        End Sub
    End Class

    Y con este código paso los parámetros .

     Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            tipo_reporte = 1
            nombrereporte = "FacturaVentas.rpt"
            idreportes = TextBox1.Text
            FormMostrarFacturasVentas.ShowDialog()
    
        End Sub

    De ante manos muchas gracias....

     

    lunes, 4 de febrero de 2019 20:05

Todas las respuestas

  • Hola  Reynaldo Sanchez

    Gracias por levantar tu consulta en los foros de MSDN. Con respecto a la misma, te comento que estaremos realizando una revisión a profundidad acerca del inconveniente que se te está presentando.

    Proporcionaremos una respuesta lo más pronto posible.

    Gracias por usar los foros de MSDN.

    Pedro Alfaro
     ____

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde. 

    Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft.  

    Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.
    lunes, 4 de febrero de 2019 21:02
    Moderador
  • Hola Reynaldo:

    Puedes utilizar para enviar directamente los informes a la impresora, lo siguiente:

     CrReport.PrintToPrinter(1, False, 0, 0)

    Por otro lado, si quieres no tener problemas cuando cambies de ordenador o de servidor, tendrías que acostumbrarte a utilizar datasets tipados, a los cuales les es indiferente la conexion, ya que la misma se realiza a través del dataset.

    Un saludo.

    Gemma

    martes, 5 de febrero de 2019 6:13
  • Hola Gema:

    Gracias por tu aporte, ya he logrado que me imprima directamente, pero a hora el detalle es que no puedo lograr enviarles el parametro de impresion que en mi caso necesito enviarle el numero de factura que desea imprimir.

    me puedes ayudar a resolver esto.

    Desde ya muchas gracias.

    Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click

            If CheckBox1.Checked = True Then
                Dim rpt As New FacturaVentasEnGrande
                CrptDocument.SetParameterValue("@numero_factura", Me.TextBox1.Text)
                rpt.SetDataSource(CrptDocument)

                rpt.PrintToPrinter(1, False, 0, 0)
            Else
                Dim rpt As New FacturaVentasEnGrande

                rpt.SetDataSource(CrptDocument)

                rpt.PrintToPrinter(2, False, 0, 0)
            End If
        End Sub
    martes, 5 de febrero de 2019 14:45
  • Hola Reynaldo:

    Me imagino que el parámetro también lo tienes en el rpt.

    De cualquier manera, haz un breakpoint a ver que valor te lleva al pasar por aquí:

    CrptDocument.SetParameterValue("@numero_factura", Me.TextBox1.Text) 'Mira si tiene valor el text.

    Ya dirás alguna cosa.

    Un saludo.

    Gemma

    martes, 5 de febrero de 2019 15:23
  • Lo he hecho y si tiene valor el textbox1 

    he chale un vistazo  al error que me da:

    martes, 5 de febrero de 2019 15:31
  • Este es el procedimiento almacenado que estoy usando para mostrar las facturas.

    USE [AlmacenGloval]
    GO
    /****** Object:  StoredProcedure [dbo].[P_FacturaVentas]    Script Date: 05/02/2019 09:32:34 a.m. ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    ALTER procedure [dbo].[P_FacturaVentas]
    @numero_factura int
    as
    SELECT        dbo.DetalleVenta.numero_factura, dbo.Productos.producto, dbo.DetalleVenta.cantidad, dbo.DetalleVenta.precio, dbo.DetalleVenta.sub_total, 
                             dbo.DetalleVenta.fecha_solicitada, dbo.DetalleVenta.fecha_contabilizada,dbo.CLientes.idcliente, dbo.CLientes.razon_social,dbo.CLientes.direccion, dbo.Zonas.zona, 
                             dbo.Empleados.nombres + ' ' + dbo.Empleados.apellidos AS Vendero, dbo.Usuarios.usuario,SUM(DBO.DetalleVenta.sub_total) AS SUB_TOTAL
    FROM            dbo.Venta INNER JOIN
                             dbo.DetalleVenta ON dbo.Venta.idventa = dbo.DetalleVenta.idventa INNER JOIN
                             dbo.Productos ON dbo.DetalleVenta.idproducto = dbo.Productos.idproducto INNER JOIN
                             dbo.Usuarios ON dbo.Venta.idusuario = dbo.Usuarios.idusuario INNER JOIN
                             dbo.Empleados ON dbo.Usuarios.idusuario = dbo.Empleados.idempleado INNER JOIN
                             dbo.CLientes ON dbo.Venta.idcliente = dbo.CLientes.idcliente INNER JOIN
                             dbo.Zonas ON dbo.CLientes.idcliente = dbo.Zonas.idcliente
    						 where numero_factura = @numero_factura
    GROUP BY dbo.DetalleVenta.numero_factura, dbo.Productos.producto, dbo.DetalleVenta.cantidad, dbo.DetalleVenta.precio, dbo.DetalleVenta.sub_total, 
                             dbo.DetalleVenta.fecha_solicitada, dbo.DetalleVenta.fecha_contabilizada,dbo.CLientes.idcliente, dbo.CLientes.razon_social,dbo.CLientes.direccion, dbo.Zonas.zona, dbo.Empleados.nombres, 
                             dbo.Empleados.apellidos, dbo.Empleados.idempleado,dbo.Usuarios.usuario,DBO.DetalleVenta.sub_total

    martes, 5 de febrero de 2019 15:33
  • Hola Reynaldo:

    Comprueba bien la conexión, ya que el problema parece ser de conexión.

    Gemma

    martes, 5 de febrero de 2019 17:22
  • la conexión esta bien ya la revise también revise la ubicación del archivo y todo esta bien.

    si la conexión estuviera mal, no me permitiera imprimir con la opción de mostrar la vista previa.

    lo raro es que si muestro el visor no me da problema.

    Que puedo hacer?

    ya me tiene cabezón jejeje...


    martes, 5 de febrero de 2019 18:23