none
Situación con DataSet RRS feed

  • Pregunta

  • Tengo un código para generar un reporte para lo cual creo 5 tablas dentro de un DataSet, en la primera tabla tengo todas las lineas que necesito se impriman en el reporte y en las demás tablas tengo datos que necesito llenar en el mismo, la situación es que al generar el reporte me pone únicamente los productos que encuentra en las 5 tablas, y yo necesito que se impriman todos los de la primera y los datos que encuentre en las demás tablas, mi código es el siguiente:

    Dim entradasinicial As New FbDataAdapter("SELECT MULT" & bdempresa & ".CVE_ART AS CLAVE, SUM(MINVE" & bdempresa & ".CANT * MINVE" & bdempresa & ".SIGNO) AS CANT, SUM(MINVE" & bdempresa & ".CANT * MINVE" & bdempresa & ".COSTO * MINVE" & bdempresa & ".SIGNO) AS COST FROM(MULT" & bdempresa & " INNER JOIN MINVE" & bdempresa & " On MULT" & bdempresa & ".CVE_ART = MINVE" & bdempresa & ".CVE_ART) WHERE MULT" & bdempresa & ".CVE_ALM = " & almo & " AND MINVE" & bdempresa & ".FECHA_DOCU < '" & fechainicial & "' GROUP BY MULT" & bdempresa & ".CVE_ART", conexion)
                    entradasinicial.Fill(inicial, "INICIAL")
    
                    Dim entradas As New FbDataAdapter("SELECT MULT" & bdempresa & ".CVE_ART AS CLAVE, SUM(MINVE" & bdempresa & ".CANT) AS CANT, SUM(MINVE" & bdempresa & ".CANT * MINVE" & bdempresa & ".COSTO) AS COST FROM(MULT" & bdempresa & " INNER JOIN MINVE" & bdempresa & " On MULT" & bdempresa & ".CVE_ART = MINVE" & bdempresa & ".CVE_ART) WHERE MULT" & bdempresa & ".CVE_ALM = " & almo & " AND MINVE" & bdempresa & ".FECHA_DOCU BETWEEN DATE '" & fechainicial & "' AND DATE '" & fechafinal & "' AND MINVE" & bdempresa & ".SIGNO = 1 GROUP BY MULT" & bdempresa & ".CVE_ART", conexion)
                    entradas.Fill(inicial, "ENTRADAS")
    
                    Dim salidas As New FbDataAdapter("SELECT MULT" & bdempresa & ".CVE_ART AS CLAVE, SUM(MINVE" & bdempresa & ".CANT) AS CANT, SUM(MINVE" & bdempresa & ".CANT * MINVE" & bdempresa & ".COSTO) AS COST FROM(MULT" & bdempresa & " INNER JOIN MINVE" & bdempresa & " On MULT" & bdempresa & ".CVE_ART = MINVE" & bdempresa & ".CVE_ART) WHERE MULT" & bdempresa & ".CVE_ALM = " & almo & " AND MINVE" & bdempresa & ".FECHA_DOCU BETWEEN DATE '" & fechainicial & "' AND DATE '" & fechafinal & "' AND MINVE" & bdempresa & ".SIGNO = -1 GROUP BY MULT" & bdempresa & ".CVE_ART", conexion)
                    salidas.Fill(inicial, "SALIDAS")
    
                    Dim final As New FbDataAdapter("SELECT MULT" & bdempresa & ".CVE_ART AS CLAVE, SUM(MINVE" & bdempresa & ".CANT * MINVE" & bdempresa & ".SIGNO) AS CANT, SUM(MINVE" & bdempresa & ".CANT * MINVE" & bdempresa & ".COSTO * MINVE" & bdempresa & ".SIGNO) AS COST FROM(MULT" & bdempresa & " INNER JOIN MINVE" & bdempresa & " On MULT" & bdempresa & ".CVE_ART = MINVE" & bdempresa & ".CVE_ART) WHERE MULT" & bdempresa & ".CVE_ALM = " & almo & " AND MINVE" & bdempresa & ".FECHA_DOCU <= '" & fechafinal & "' GROUP BY MULT" & bdempresa & ".CVE_ART", conexion)
                    final.Fill(inicial, "FINAL")
    
    
                    Dim relation As DataRelation = inicial.Relations.Add("Relacion1", inicial.Tables("PRODUCTOS").Columns("CLAVE"), inicial.Tables("INICIAL").Columns("CLAVE"))
                    Dim relation2 As DataRelation = inicial.Relations.Add("Relacion2", inicial.Tables("PRODUCTOS").Columns("CLAVE"), inicial.Tables("ENTRADAS").Columns("CLAVE"))
                    Dim relation3 As DataRelation = inicial.Relations.Add("Relacion3", inicial.Tables("PRODUCTOS").Columns("CLAVE"), inicial.Tables("SALIDAS").Columns("CLAVE"))
                    Dim relation4 As DataRelation = inicial.Relations.Add("Relacion4", inicial.Tables("PRODUCTOS").Columns("CLAVE"), inicial.Tables("FINAL").Columns("CLAVE"))
    
                    verif.DataSource = inicial.Tables("INICIAL")
    
                    Dim myColArray(1) As DataColumn
                    myColArray(0) = inicial.Tables("PRODUCTOS").Columns("CLAVE")
                    inicial.Tables("PRODUCTOS").PrimaryKey = myColArray
    
                    Dim reporteview As CrystalDecisions.CrystalReports.Engine.ReportDocument
                    reporteview = New balanceprodrep
                    reporteview.SetDataSource(inicial)

    El resultado es el siguiente

    TABLA PRODUCTOS

    CLAVE1  DESCRIPCION 1
    CLAVE2  DESCRIPCION 2
    CLAVE3  DESCRIPCION 3
    CLAVE4  DESCRIPCION 4
    CLAVE5  DESCRIPCION 5

    TABLA INICIAL

    CLAVE1    10      1500
    CLAVE2    3       300

    TABLA ENTRADAS

    CLAVE1   5        750
    CLAVE3   8       1120

    TABLA SALIDAS

    CLAVE1    9      1350
    CLAVE4    8        750

    TABLA FINAL

    CLAVE1    6      900
    CLAVE2    3      300
    CLAVE3    8     1120
    CLAVE4   -8     -750

    EL REPORTE QUEDA

    CLAVE1      10    1500     5    750    9   1350    6   900

    y ya ignora el resto de las claves

    Agradezco toda la ayuda que puedan darme.

    Saludos :)


    DESDE EL FORO DE MSDN

    lunes, 30 de noviembre de 2015 3:39