none
USO DE PROCEDIMIENTOS ALMECENADOS, PARA GENERAR REPORTES VIA CRYSTAL REPORTS CON EL USO DE DATSETS. RRS feed

  • Pregunta

  • Buen día con todos, realice una app de escritorio con c# y sql server, el punto es que al momento de aplicarla en red, apareció (un problema ya conocido) al generar el reporte vía crystal reports, el reporte me pide usuario y contraseña. Entonces buscando en diversos foros encontré que la mejor solución seria usar datasets tipados, pero vi que solo se enviaban las tablas al dataset mas no los procedimientos almacenados que implemente inicialmente. Este es unos de los sp que cree para la impresion.

    CREATE PROC SPIMPRIMIR_COMPROBANTE
    (@ID_COMPROBANTE INT)
    AS
    SELECT TOP 100 COMPROBANTE.ID_COMPROBANTE,
    DETALLE_COMPROBANTE.ID_DETALLE_COMPROBANTE,
    ARTICULO.NOMBRE_ARTICULO DESCRIPCION,
    ARTICULO.DESCRIPCION DESCRIPCIONADICIONAL,
    PRESENTACION.NOMBRE_PRESENTACION AS UNIDAD,
    COMPROBANTE.SERIE,
    CLIENTE.TIPO_CLIENTE,
    CLIENTE.EMPRESA,
    CLIENTE.RAZON_SOCIAL,
    CLIENTE.DIRECCION,
    CLIENTE.RUC,
    COMPROBANTE.IGV1,
    COMPROBANTE.DESCUENTO AS DESCUENTO1,
    CAST(SUM(DETALLE_COMPROBANTE.PRECIO_VENTA_SOLES*DETALLE_COMPROBANTE.STOCK) AS DECIMAL(11,4)) AS VALOR_VENTA,
    CAST(SUM(DETALLE_COMPROBANTE.PRECIO_VENTA_SOLES*DETALLE_COMPROBANTE.STOCK)*(COMPROBANTE.DESCUENTO/100) AS DECIMAL (11,4)) AS DESCUENTO,
    CAST((SUM(DETALLE_COMPROBANTE.PRECIO_VENTA_SOLES*DETALLE_COMPROBANTE.STOCK) * ((100-COMPROBANTE.DESCUENTO)/100)) AS DECIMAL (11,4)) SUB_TOTAL,
    CAST(((SUM(DETALLE_COMPROBANTE.PRECIO_VENTA_SOLES*DETALLE_COMPROBANTE.STOCK)*((100-COMPROBANTE.DESCUENTO)/100))*(COMPROBANTE.IGV/100))AS DECIMAL(11,4))AS IGV,
    CAST((CAST((SUM(DETALLE_COMPROBANTE.PRECIO_VENTA_SOLES*DETALLE_COMPROBANTE.STOCK) * ((100-COMPROBANTE.DESCUENTO)/100)) AS DECIMAL (11,4))+CAST(((SUM(DETALLE_COMPROBANTE.PRECIO_VENTA_SOLES*DETALLE_COMPROBANTE.STOCK)*((100-COMPROBANTE.DESCUENTO)/100))*(COMPROBANTE.IGV/100))AS DECIMAL(11,4)))AS DECIMAL (11,4)) AS TOTAL,
    DETALLE_COMPROBANTE.PRECIO_VENTA_SOLES,DETALLE_COMPROBANTE.STOCK
    FROM COMPROBANTE INNER JOIN CLIENTE ON COMPROBANTE.ID_CLIENTE=CLIENTE.ID_CLIENTE INNER JOIN ATENCION ON COMPROBANTE.ID_ATENCION=ATENCION.ID_ATENCION INNER JOIN 
    DETALLE_COMPROBANTE ON COMPROBANTE.ID_COMPROBANTE=DETALLE_COMPROBANTE.ID_COMPROBANTE INNER JOIN ARTICULO ON DETALLE_COMPROBANTE.ID_ARTICULO=ARTICULO.ID_ARTICULO INNER JOIN
    PRESENTACION ON ARTICULO.ID_PRESENTACION=PRESENTACION.ID_PRESENTACION
    GROUP BY 
    COMPROBANTE.ID_COMPROBANTE,COMPROBANTE.SERIE,CLIENTE.TIPO_CLIENTE,CLIENTE.RAZON_SOCIAL,CLIENTE.DIRECCION, CLIENTE.APELLIDO_PATERNO,CLIENTE.APELLIDO_MATERNO,
    CLIENTE.PRIMER_NOMBRE,CLIENTE.SEGUNDO_NOMBRE, CLIENTE.RUC,
    ATENCION.GENTIL,ATENCION.PRIMER_NOMBRE,ATENCION.SEGUNDO_NOMBRE,ATENCION.APELLIDO_PATERNO,ATENCION.APELLIDO_MATERNO,ATENCION.CEL_1,ATENCION.CEL_2,
    ATENCION.FIJO, COMPROBANTE.MONEDA,COMPROBANTE.TIPO_CAMBIO_COMPROBANTE,CLIENTE.EMPRESA,
    COMPROBANTE.FECHA,COMPROBANTE.TIEMPO_ENTREGA,COMPROBANTE.CONDICION,COMPROBANTE.VALIDEZ_OFERTA,COMPROBANTEPRECIO,
    COMPROBANTE.MONEDA,COMPROBANTE.DESCUENTO,COMPROBANTE.IGV,DETALLE_COMPROBANTE.PRECIO_VENTA_SOLES,DETALLE_COMPROBANTE.STOCK,DETALLE_COMPROBANTE.ID_DETALLE_COMPROBANTE,
    ARTICULO.NOMBRE_ARTICULO,
    PRESENTACION.NOMBRE_PRESENTACION,
    ARTICULO.DESCRIPCION
    HAVING COMPROBANTE.ID_COMPROBANTE = @ID_COMPROBANTE
    ORDER BY DETALLE_COMPROBANTE.ID_DETALLE_COMPROBANTE ASC
    GO

    No sé como usar ese sp en un dataset y luego mostrarlo vía crystal reports, gracias de antemano.

    domingo, 31 de marzo de 2019 22:27

Todas las respuestas

  • Hola, no necesariamente los dataset están compuestos de tablas, debes contruirlo con los campos que quieres mostrar y se los asignas al reporte con ado.net

        Private Sub btnConsultas_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnConsultas.Click
            Dim dtDatos As New DataTable
            dtDatos = LLenarDataset(10249) 'acá se envía el código
            Dim CrReport As New CrystalDecisions.CrystalReports.Engine.ReportDocument
            ' Asigno el reporte 
            CrReport = New CrystalDecisions.CrystalReports.Engine.ReportDocument()
            CrReport.Load(Application.StartupPath & "\CrystalReport1.rpt")
            CrReport.SetDataSource(dtDatos)
            CrystalReportViewer1.ReportSource = CrReport
        End Sub
    
        Public Function LLenarDataset(ByVal ID_COMPROBANTE As Int32) As DataTable
            'Dim conString As String = ConfigurationManager.ConnectionStrings("conexion").ConnectionString
            Dim ds As New dsBoleta
            Dim conString As String = "Server=.\miservidor; database=midatabase; uid=sa; pwd=clave"
            Using con As New SqlConnection(conString)
                Dim cmd As New SqlCommand("SPIMPRIMIR_COMPROBANTE", con)
                cmd.CommandType = CommandType.StoredProcedure
                cmd.Parameters.AddWithValue("@ID_COMPROBANTE", ID_COMPROBANTE)
                Dim da As New SqlDataAdapter(cmd)
                da.Fill(ds, "dtPrueba")
                Return ds.Tables(0)
            End Using
        End Function


    puedes revisar

    Creación de Reportes con Crystal Reports en Visual Studio 2005/2008


    Votar y marcar respuestas es agradecer.
    Saludos.
    Lima-Perú

    lunes, 1 de abril de 2019 2:58