none
Parametros en ReportView .... RRS feed

  • Pregunta

  • Buenos días ;

    Tengo un reporte con un subreporte que trabaja muy bien con un solo resultado, es decir, el código y los parámetros me arrojan una sola factura con su respectivo detalle. la pregunta es : como puedo ver varias facturas, es decir, como puedo ver un rango de facturas ... 

    El codigo que uso es:

    ----------------------------------

     Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            If Not IsPostBack Then
                ReportViewer1.ProcessingMode = ProcessingMode.Local
                ReportViewer1.LocalReport.ReportPath = Server.MapPath("~/ReportesFacturas/ReportFact2018.rdlc")
                Dim dsCustomers As DSEncabFactura = GetCustomers("SELECT * FROM Facturas Where Documento = '179' ")
                Dim datasource As ReportDataSource = New ReportDataSource("DataSet1", dsCustomers.Tables(0))
                ReportViewer1.LocalReport.DataSources.Clear()
                ReportViewer1.LocalReport.DataSources.Add(datasource)
                AddHandler ReportViewer1.LocalReport.SubreportProcessing, AddressOf SetSubDataSource
                Me.ReportViewer1.LocalReport.Refresh()
            End If
        End Sub
        Public Sub SetSubDataSource(ByVal sender As Object, ByVal e As SubreportProcessingEventArgs)
            Dim dsOrders As DSDetalleFactu = GetOrders("SELECT * FROM Detalle_Facturas WHERE Pedido = '" & (CType(e.Parameters(0), ReportParameterInfo)).Values(0) & "'")
            Dim datasource As ReportDataSource = New ReportDataSource("DataSet1", dsOrders.Tables(0))
            e.DataSources.Add(datasource)
        End Sub

        Private Function GetCustomers(ByVal query As String) As DSEncabFactura
            Dim conString As String = ConfigurationManager.ConnectionStrings("constr").ConnectionString
            Dim cmd As SqlCommand = New SqlCommand(query)
            Using con As SqlConnection = New SqlConnection(conString)
                Using sda As SqlDataAdapter = New SqlDataAdapter()
                    cmd.Connection = con
                    sda.SelectCommand = cmd
                    Using dsCustomers As DSEncabFactura = New DSEncabFactura()
                        sda.Fill(dsCustomers, "EncabFactu")
                        Return dsCustomers
                    End Using
                End Using
            End Using
        End Function

        Private Function GetOrders(ByVal query As String) As DSDetalleFactu
            Dim conString As String = ConfigurationManager.ConnectionStrings("constr").ConnectionString
            Dim cmd As SqlCommand = New SqlCommand(query)
            Using con As SqlConnection = New SqlConnection(conString)
                Using sda As SqlDataAdapter = New SqlDataAdapter()
                    cmd.Connection = con
                    sda.SelectCommand = cmd
                    Using dsOrders As DSDetalleFactu = New DSDetalleFactu()
                        sda.Fill(dsOrders, "DetalleFactu")
                        Return dsOrders
                    End Using
                End Using
            End Using
        End Function

    ---------------------------------

    Mil gracias por la ayuda....

    martes, 6 de febrero de 2018 14:17

Respuestas

  • Gracias de antemano:

    Estoy entrando en el fantástico mundo de los reportes y he conseguido pasar un parametro al reporte que tiene un subreporte y todo sale bien... lo que pretendo ahora es saber como puedo generar varios registros ? actualmente el reporte me muestra una factura únicamente con su respectivo detalle... como puedo hacer para que me muestre varias facturas con su respectivo detalle..., es decir, imprimir un rango de facturas ....

    Trabajo con Visual Studio 2015, SQL, en Asp.net VB.NET

    Mi código es:

    ------

     Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            If Not IsPostBack Then
                ReportViewer1.ProcessingMode = ProcessingMode.Local
                ReportViewer1.LocalReport.ReportPath = Server.MapPath("~/ReportesFacturas/ReportFact2018.rdlc")
                Dim dsCustomers As DSEncabFactura = GetCustomers("SELECT * FROM Facturas Where Documento = '179' ")
                Dim datasource As ReportDataSource = New ReportDataSource("DataSet1", dsCustomers.Tables(0))
                ReportViewer1.LocalReport.DataSources.Clear()
                ReportViewer1.LocalReport.DataSources.Add(datasource)
                AddHandler ReportViewer1.LocalReport.SubreportProcessing, AddressOf SetSubDataSource
                Me.ReportViewer1.LocalReport.Refresh()
            End If
        End Sub
        Public Sub SetSubDataSource(ByVal sender As Object, ByVal e As SubreportProcessingEventArgs)
            Dim dsOrders As DSDetalleFactu = GetOrders("SELECT * FROM Detalle_Facturas WHERE Pedido = '" & (CType(e.Parameters(0), ReportParameterInfo)).Values(0) & "'")
            Dim datasource As ReportDataSource = New ReportDataSource("DataSet1", dsOrders.Tables(0))
            e.DataSources.Add(datasource)
        End Sub

        Private Function GetCustomers(ByVal query As String) As DSEncabFactura
            Dim conString As String = ConfigurationManager.ConnectionStrings("constr").ConnectionString
            Dim cmd As SqlCommand = New SqlCommand(query)
            Using con As SqlConnection = New SqlConnection(conString)
                Using sda As SqlDataAdapter = New SqlDataAdapter()
                    cmd.Connection = con
                    sda.SelectCommand = cmd
                    Using dsCustomers As DSEncabFactura = New DSEncabFactura()
                        sda.Fill(dsCustomers, "EncabFactu")
                        Return dsCustomers
                    End Using
                End Using
            End Using
        End Function

        Private Function GetOrders(ByVal query As String) As DSDetalleFactu
            Dim conString As String = ConfigurationManager.ConnectionStrings("constr").ConnectionString
            Dim cmd As SqlCommand = New SqlCommand(query)
            Using con As SqlConnection = New SqlConnection(conString)
                Using sda As SqlDataAdapter = New SqlDataAdapter()
                    cmd.Connection = con
                    sda.SelectCommand = cmd
                    Using dsOrders As DSDetalleFactu = New DSDetalleFactu()
                        sda.Fill(dsOrders, "DetalleFactu")
                        Return dsOrders
                    End Using
                End Using
            End Using
        End Function

    -----

    Gracias por la ayuda.

    martes, 6 de febrero de 2018 16:53

Todas las respuestas

  • Hola, dale una checada a este enlace ,por ahi que ayuda

    Reportes Continuos


    Votar es agradecer.
    Saludos.
    Lima-Perú

    martes, 6 de febrero de 2018 14:26
  • Gracias de antemano:

    Estoy entrando en el fantástico mundo de los reportes y he conseguido pasar un parametro al reporte que tiene un subreporte y todo sale bien... lo que pretendo ahora es saber como puedo generar varios registros ? actualmente el reporte me muestra una factura únicamente con su respectivo detalle... como puedo hacer para que me muestre varias facturas con su respectivo detalle..., es decir, imprimir un rango de facturas ....

    Trabajo con Visual Studio 2015, SQL, en Asp.net VB.NET

    Mi código es:

    ------

     Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            If Not IsPostBack Then
                ReportViewer1.ProcessingMode = ProcessingMode.Local
                ReportViewer1.LocalReport.ReportPath = Server.MapPath("~/ReportesFacturas/ReportFact2018.rdlc")
                Dim dsCustomers As DSEncabFactura = GetCustomers("SELECT * FROM Facturas Where Documento = '179' ")
                Dim datasource As ReportDataSource = New ReportDataSource("DataSet1", dsCustomers.Tables(0))
                ReportViewer1.LocalReport.DataSources.Clear()
                ReportViewer1.LocalReport.DataSources.Add(datasource)
                AddHandler ReportViewer1.LocalReport.SubreportProcessing, AddressOf SetSubDataSource
                Me.ReportViewer1.LocalReport.Refresh()
            End If
        End Sub
        Public Sub SetSubDataSource(ByVal sender As Object, ByVal e As SubreportProcessingEventArgs)
            Dim dsOrders As DSDetalleFactu = GetOrders("SELECT * FROM Detalle_Facturas WHERE Pedido = '" & (CType(e.Parameters(0), ReportParameterInfo)).Values(0) & "'")
            Dim datasource As ReportDataSource = New ReportDataSource("DataSet1", dsOrders.Tables(0))
            e.DataSources.Add(datasource)
        End Sub

        Private Function GetCustomers(ByVal query As String) As DSEncabFactura
            Dim conString As String = ConfigurationManager.ConnectionStrings("constr").ConnectionString
            Dim cmd As SqlCommand = New SqlCommand(query)
            Using con As SqlConnection = New SqlConnection(conString)
                Using sda As SqlDataAdapter = New SqlDataAdapter()
                    cmd.Connection = con
                    sda.SelectCommand = cmd
                    Using dsCustomers As DSEncabFactura = New DSEncabFactura()
                        sda.Fill(dsCustomers, "EncabFactu")
                        Return dsCustomers
                    End Using
                End Using
            End Using
        End Function

        Private Function GetOrders(ByVal query As String) As DSDetalleFactu
            Dim conString As String = ConfigurationManager.ConnectionStrings("constr").ConnectionString
            Dim cmd As SqlCommand = New SqlCommand(query)
            Using con As SqlConnection = New SqlConnection(conString)
                Using sda As SqlDataAdapter = New SqlDataAdapter()
                    cmd.Connection = con
                    sda.SelectCommand = cmd
                    Using dsOrders As DSDetalleFactu = New DSDetalleFactu()
                        sda.Fill(dsOrders, "DetalleFactu")
                        Return dsOrders
                    End Using
                End Using
            End Using
        End Function

    -----

    Gracias por la ayuda.

    martes, 6 de febrero de 2018 16:53
  • Gracias por responder ... pero disculpa el link muestra como se adicionan listas al reporte ... pero no se como puedo enviar varios valores por código... me explico, como enviar por código varios números de facturas para que el reporte los muestre en distintas paginas con su respectivo detalle  y se puedan imprimir...

    Te agradezco cualquier idea al respecto.

    miércoles, 7 de febrero de 2018 4:10