none
Como agregar los resultados de varios DataGridView a un DataSet para presentarlos en un reporte con CrystalReports? RRS feed

  • Pregunta

  • Hola he estado trabajando en mi sistema y me encuentro con un problema; en el que deseo que los resultados de una compra se muestren en un reporte. Para ello en mi projecto de vb he creado varios DGV, un DataSet con varios DataTable ya que son varias consultas las que hago a la base de datos, estas consultas las muestro en los DGV y los resultados que se muestran en los DGV los cargo a los DataTable y asi poder presentarlos en un reporte con CrystalReports.

    Ya he intentado que se muestre la información en el reporte pero cuando ejecuto mi aplicación hago las compras y hago el reporte, el reporte no me muestra nada de la información que deberia mostrar, este es el codigo que utilizo para cargar los datos de los DGV a los DataTable;

    Private Function GenerarMen() As dtCompra
            Dim facturacion As New dtCompra()
    
    
            ' Agrego el registro con la info 
            '
            Dim mensual As dtCompra.DatosMensualRow = facturacion.DatosMensual.NewDatosMensualRow()
            mensual.Fechadesde = DateTimePicker4.Text
            mensual.Fechahasta = DateTimePicker5.Text
            mensual.ReciboCancel = TextBox5.Text
            mensual.SaldoAnterior = TextBox6.Text
    
    
            facturacion.DatosMensual.AddDatosMensualRow(mensual)
            '
            ' Itero por cada fila del DataGridView creando el registro 
            ' en el DataTable 
    
            For Each row As DataGridViewRow In DataGridView1.Rows
                Dim rowCompra As dtCompra.ComprasRow = facturacion.Compras.NewComprasRow()
                rowCompra.PartidaSel = Convert.ToString(row.Cells(0).Value)
                rowCompra.DescripcionSel = Convert.ToString(row.Cells(1).Value)
                rowCompra.PrecioSel = Convert.ToDecimal(row.Cells(2).Value)
                rowCompra.TextoSel = Convert.ToString(row.Cells(3).Value)
                rowCompra.TotalSel = Convert.ToDecimal(row.Cells(4).Value)
                rowCompra.PartidaGeSel = Convert.ToString(row.Cells(5).Value)
                rowCompra.ServiciosSel = Convert.ToString(row.Cells(6).Value)
    
                facturacion.Compras.AddComprasRow(rowCompra)
            Next
    
            For Each row As DataGridViewRow In DataGridView2.Rows
                Dim rowCompra As dtCompra.Compras1Row = facturacion.Compras1.NewCompras1Row()
                rowCompra.PartidaSel = Convert.ToString(row.Cells(0).Value)
                rowCompra.DescripcionSel = Convert.ToString(row.Cells(1).Value)
                rowCompra.PrecioSel = Convert.ToDecimal(row.Cells(2).Value)
                rowCompra.TextoSel = Convert.ToString(row.Cells(3).Value)
                rowCompra.TotalSel = Convert.ToDecimal(row.Cells(4).Value)
                rowCompra.PartidaGeSel = Convert.ToString(row.Cells(5).Value)
                rowCompra.ServiciosSel = Convert.ToString(row.Cells(6).Value)
    
                facturacion.Compras1.AddCompras1Row(rowCompra)
            Next
    
            For Each row As DataGridViewRow In DataGridView3.Rows
                Dim rowCompra As dtCompra.Compras2Row = facturacion.Compras2.NewCompras2Row()
                rowCompra.PartidaSel = Convert.ToString(row.Cells(0).Value)
                rowCompra.DescripcionSel = Convert.ToString(row.Cells(1).Value)
                rowCompra.PrecioSel = Convert.ToDecimal(row.Cells(2).Value)
                rowCompra.TextoSel = Convert.ToString(row.Cells(3).Value)
                rowCompra.TotalSel = Convert.ToDecimal(row.Cells(4).Value)
                rowCompra.PartidaGeSel = Convert.ToString(row.Cells(5).Value)
                rowCompra.ServiciosSel = Convert.ToString(row.Cells(6).Value)
    
                facturacion.Compras2.AddCompras2Row(rowCompra)
            Next
    
            For Each row As DataGridViewRow In DataGridView4.Rows
                Dim rowCompra As dtCompra.Compras3Row = facturacion.Compras3.NewCompras3Row()
                rowCompra.PartidaSel = Convert.ToString(row.Cells(0).Value)
                rowCompra.DescripcionSel = Convert.ToString(row.Cells(1).Value)
                rowCompra.PrecioSel = Convert.ToDecimal(row.Cells(2).Value)
                rowCompra.TextoSel = Convert.ToString(row.Cells(3).Value)
                rowCompra.TotalSel = Convert.ToDecimal(row.Cells(4).Value)
                rowCompra.PartidaGeSel = Convert.ToString(row.Cells(5).Value)
                rowCompra.ServiciosSel = Convert.ToString(row.Cells(6).Value)
    
                facturacion.Compras3.AddCompras3Row(rowCompra)
            Next
    
            For Each row As DataGridViewRow In DataGridView5.Rows
                Dim rowCompra As dtCompra.Compras4Row = facturacion.Compras4.NewCompras4Row()
                
                rowCompra.PartidaGeSel = Convert.ToString(row.Cells(5).Value)
                rowCompra.ServiciosSel = Convert.ToString(row.Cells(6).Value)
    
                facturacion.Compras4.AddCompras4Row(rowCompra)
            Next
    
            For Each row As DataGridViewRow In DataGridView6.Rows
                Dim rowCompra As dtCompra.Compras5Row = facturacion.Compras5.NewCompras5Row()
                
                rowCompra.PartidaGeSel = Convert.ToString(row.Cells(5).Value)
                rowCompra.ServiciosSel = Convert.ToString(row.Cells(6).Value)
    
                facturacion.Compras5.AddCompras5Row(rowCompra)
            Next
    
            For Each row As DataGridViewRow In DataGridView7.Rows
                Dim rowCompra As dtCompra.Compras6Row = facturacion.Compras6.NewCompras6Row()
               
                rowCompra.PartidaGeSel = Convert.ToString(row.Cells(5).Value)
                rowCompra.ServiciosSel = Convert.ToString(row.Cells(6).Value)
    
                facturacion.Compras6.AddCompras6Row(rowCompra)
            Next
    
            Return facturacion
    
        End Function

    Como ejemplo así mas o menos es lo que el reporte deberia mostrarse:

    Cada concepto pertenece a un servicio es decir; Inscripcion pertenece a Tesoreria, Expedición de titulos pertenece a Servicios escolares, total que al final del mes se tiene que generar un reporte de lo que se ha pago durante este periodo por dicho servicio. En el reporte tiene que aparecer con este formato:

               Tesoreria                                                           $100

               Inscripción                                         $50

               Inscripción                                         $50

      

              Servicios escolares                                            $150

              Expedición de titulo                            $150

                                                            TOTAL                   $250

    • Cambiado Eder Costa miércoles, 5 de septiembre de 2012 16:28 (De:Lenguaje VB.NET)
    jueves, 2 de agosto de 2012 16:38

Todas las respuestas

  • Hola:
    Para generar un listado con crystal en el Form tienes que tener 1 ReportDocument (rdInforme) y 1 CrystalReportViewer (crvInforme).
    El codigo a ejecutar seria algo como esto:

            Try
                'Cargar fichero de crystal en ReportDocument
                Me.rdInforme.Load(TUFICHEROCRYSTAL.RPT)
            Catch Exp As Exception
                MessageBox.Show(Exp.Message, "", MessageBoxButtons.OK, MessageBoxIcon.Information)
           End Try
            'Cargar el ReportDocument con un DataTable con los datos filtrados de las n Tablas de tu base de datos.
            Me.rdInforme.SetDataSource(TUDATATABLE)
            'Cargar el CrystalReportViewer con el ReportDocument
            Me.crvInforme.ReportSource = Me.rdInforme

    Por lo tanto lo que tienes que conseguir es el DataTable con los datos filtrados.
    ¿ Puedes poner las estructuras de las tablas implicadas y los campos que aparecen en el fichero TUFICHEROCRYSTAL.RPT ?

    Un saludo desde Bilbo
    Carlos

    viernes, 3 de agosto de 2012 7:45
  • Hola radx182!

    Tu post se moverán a un foro más adecuado para tu pregunta.

    Saludos.


    Eder Costa
    LATAM Forum Support Engineer
    Microsoft Corporation 

    • Editado Eder Costa miércoles, 5 de septiembre de 2012 16:28
    miércoles, 5 de septiembre de 2012 16:28