none
Informe en Crystal Report y VB.Net sale mal RRS feed

  • Pregunta

  • Hola,

    Tengo un informe que saca Facturas, tengo que sacar un listado entre fechas y sacar las que se hicieron entre esas fechas.

    El problema lo tengo cuando en el concepto tengo varios productos, por ejemplo... Una caja de X producto y otra caja de Z producto. Me lo duplica y me sale X producto abajo Z producto y otra vez, X producto y Z producto.

    Si es solo uno me sale perfecto.

    Tengo un grupo creado por el número de factura. Adjunto imagen para que lo veais, esta en plan cutre por que son pruebas.

    martes, 14 de junio de 2016 11:04

Todas las respuestas

  • Hola:
    Si en el datatable se te duplican los registros, la consulta tiene algun error.

    ¿Puedes poner la consulta y la(s) estructra(s) de la(s) tabla(s)?

    Un saludo desde Bilbo
    Carlos
    martes, 14 de junio de 2016 11:46
  • GA:

    GAB:

    GC:

    GC7:


    • Editado RamonAZ miércoles, 15 de junio de 2016 9:00 AS
    miércoles, 15 de junio de 2016 8:56
  • SELECT        GC7.EMPRESA, GC7.CLIENTE, GC7.VENDEDOR, GC7.NFACTURA, GC7.NFACTURA2, GC7.FECHA, GC7.BASEIMPO, GC7.DESCUENTOS, GC7.IVA, GC7.PTSIVA, GC7.RECARGO, GC7.PTSREC, GC7.TOTALFRA, 
                             GC7.COMISION, GC7.BASEIMPO2, GC7.IVA2, GC7.PTSIVA2, GC7.RECARGO2, GC7.PTSREC2, GC7.BASEIMPO3, GC7.IVA3, GC7.PTSIVA3, GC7.RECARGO3, GC7.PTSREC3, GC7.CONTABILI, GC7.BASEIMPO0, 
                             GC7.SUMIVA, GC7.CLAPAGO, GC7.ide, GC.EMPRESA AS Expr1, GC.CLIENTE AS Expr2, GC.AGENCIA, GC.BULTOS, GC.LINEA, GC.ALBARAN, GC.FACTCODE, GC.FECHA AS Expr3, GC.CODIGO, GC.DESCRIPCIO, 
                             GC.DESCRIPCI2, GC.CANTIDAD, GC.PRECIO, GC.DESCUENTOC, GC.DESCUENTO, GC.IVA AS Expr4, GC.RECARGO AS Expr5, GC.FACTURADO, GC.TIPOFRA, GC.ENTREGADO, GC.PEDIDO, GC.PROTESIS, GC.AREA, 
                             GC.L_COMMENT, GC.IVALUIS, GC.FECFAC, GC.FACTCODE2, GC.ide AS Expr6, GA.EMPRESA AS Expr7, GA.CODIGO AS Expr8, GA.NOMBRE, GA.DOMICILIO, GA.POBLACION, GA.PROVINCIA, GA.TELEFONO, GA.FAX, 
                             GA.DNI_NIF, GA.VENDEDOR AS Expr9, GA.CLAVEIVA, GA.CLAPAGO AS Expr10, GA.NUMPLAZOS, GA.PRIMERGIRO, GA.DIASPLAZOS, GA.PRIMPLAZO, GA.DESCUENTO AS Expr11, GA.RIESGO, GA.FACALBAR, 
                             GA.VENTAS, GA.TOTDTOS, GA.PENDFACTUR, GA.IMPAGADOS, GA.ULTFACTURA, GA.COPIASFRA, GA.COPIASALB, GA.TIPOFRA AS Expr12, GA.CLAVE, GA.TIPO, GA.ide AS Expr13, GAB.EMPRESA AS Expr14, 
                             GAB.CODIGO AS Expr15, GAB.ENTIDAD, GAB.DOMICILIO AS Expr16, GAB.CLAUSULAS, GAB.CUENTA, GAB.CCC1, GAB.CCC2, GAB.DC, GAB.ide AS Expr17
    
    FROM            GC7 LEFT JOIN GC ON GC7.NFACTURA = GC.FACTCODE
                           LEFT JOIN GA  ON GA.CODIGO=GC7.CLIENTE LEFT JOIN GAB  ON GAB.CODIGO=GC7.CLIENTE
    
    WHERE GC7.FECHA BETWEEN @fecmin and @fecmax
    
    ORDER BY GC7.NFACTURA DESC

    miércoles, 15 de junio de 2016 9:01
  • Hola:
    He hecho la siguiente prueba
    He creado 4 tablas con la siguiente estructura
    CREATE TABLE [GC7] (
     [ID] [smallint] NOT NULL ,
     [NFACTURA] [varchar] (12) COLLATE Modern_Spanish_CI_AS NULL ,
     [CLIENTE] [varchar] (6) COLLATE Modern_Spanish_CI_AS NULL ,
     CONSTRAINT [PK_GC7] PRIMARY KEY  CLUSTERED
     (
      [ID]
     )  ON [PRIMARY]
    ) ON [PRIMARY]
    Insert Into GC7 (ID, NFACTURA, CLIENTE) Values (1, '000001', '111')
    Insert Into GC7 (ID, NFACTURA, CLIENTE) Values (2, '000002', '222')
    Insert Into GC7 (ID, NFACTURA, CLIENTE) Values (3, '000003', '333')
    -------------------------------------------------------
    CREATE TABLE [GC] (
     [ID] [smallint] NOT NULL ,
     [FACTCODE] [varchar] (6) COLLATE Modern_Spanish_CI_AS NULL ,
     CONSTRAINT [PK_GC] PRIMARY KEY  CLUSTERED
     (
      [ID]
     )  ON [PRIMARY]
    ) ON [PRIMARY]
    Insert Into GC (ID, FACTCODE) Values (1, '000001')
    Insert Into GC (ID, FACTCODE) Values (2, '000002')
    Insert Into GC (ID, FACTCODE) Values (3, '000003')
    Insert Into GC (ID, FACTCODE) Values (4, '000004')
    -------------------------------------------------------
    CREATE TABLE [GA] (
     [ID] [smallint] NOT NULL ,
     [CODIGO] [varchar] (6) COLLATE Modern_Spanish_CI_AS NULL ,
     CONSTRAINT [PK_GA] PRIMARY KEY  CLUSTERED
     (
      [ID]
     )  ON [PRIMARY]
    ) ON [PRIMARY]
    Insert Into GA (ID, CODIGO) Values (1, '111')
    Insert Into GA (ID, CODIGO) Values (2, '222')
    Insert Into GA (ID, CODIGO) Values (3, '333')
    Insert Into GA (ID, CODIGO) Values (4, '444')
    Insert Into GA (ID, CODIGO) Values (5, '555')
    -------------------------------------------------------
    CREATE TABLE [GAB] (
     [ID] [smallint] NOT NULL ,
     [CODIGO] [varchar] (6) COLLATE Modern_Spanish_CI_AS NULL ,
     CONSTRAINT [PK_GAB] PRIMARY KEY  CLUSTERED
     (
      [ID]
     )  ON [PRIMARY]
    ) ON [PRIMARY]
    Insert Into GAB (ID, CODIGO) Values (1, '111')
    Insert Into GAB (ID, CODIGO) Values (2, '222')
    Insert Into GAB (ID, CODIGO) Values (3, '333')
    Insert Into GAB (ID, CODIGO) Values (4, '444')
    Insert Into GAB (ID, CODIGO) Values (5, '555')
    Insert Into GAB (ID, CODIGO) Values (6, '666')
    -------------------------------------------------------
    Ejecutando la siguiente consulta
    SELECT GC7.CLIENTE, GC7.NFACTURA, GC.FACTCODE, GA.CODIGO AS Expr8, GAB.CODIGO AS Expr15
    FROM GC7
    LEFT JOIN GC ON GC7.NFACTURA = GC.FACTCODE
    LEFT JOIN GA  ON GA.CODIGO=GC7.CLIENTE
    LEFT JOIN GAB  ON GAB.CODIGO=GC7.CLIENTE
    El resultado es:
    CLIENTE NFACTURA FACTCODE Expr8  Expr15
    =======================================
    111 000001  000001   111  111
    222 000002  000002   222  222
    333 000003  000003   333  333
    Yo NO veo ningun error en la consulta.
    ¿Si ejecutas la consulta desde el MSMSE de SQL te sale con los valores duplicados?

    P.D.
    Me llama mucho la atencion de que no tengas Primary Key, Foreign Key, etc

    Un saludo desde Bilbo
    Carlos
    miércoles, 15 de junio de 2016 10:51
  • Cuando ejecuto la consulta creo que me sale bien...
    El problema es cuando lo saco con Crystal Report, creo vaya...

    No tengo primery key ni nada por que las tablas me las pasaron de un programa antiguo y ya venían así, puede que esté ahí el error?

    Relleno así el Dataset:

                'TODO: esta línea de código carga datos en la tabla 'ZZcontaDataSetListadoFactFechas.GC7' Puede moverla o quitarla según sea necesario.
                Me.GC7TableAdapter.FillByListFact(Me.ZZcontaDataSetListadoFactFechas.GC7, Facturas_entre_fechas.txtfechadesde.Text, Facturas_entre_fechas.txtfechahasta.Text)
                'TODO: esta línea de código carga datos en la tabla 'ZZcontaDataSetListadoFactFechas.GC' Puede moverla o quitarla según sea necesario.
                Me.GCTableAdapter.Fill(Me.ZZcontaDataSetListadoFactFechas.GC)
                'TODO: esta línea de código carga datos en la tabla 'ZZcontaDataSetListadoFactFechas.GAB' Puede moverla o quitarla según sea necesario.
                Me.GABTableAdapter.Fill(Me.ZZcontaDataSetListadoFactFechas.GAB)
                'TODO: esta línea de código carga datos en la tabla 'ZZcontaDataSetListadoFactFechas.GA' Puede moverla o quitarla según sea necesario.
                Me.GATableAdapter.Fill(Me.ZZcontaDataSetListadoFactFechas.GA)

    miércoles, 15 de junio de 2016 11:30
  • Hola:
    Pautas para "VISUALIZAR" un fichero RPT
    En un Form con 1 ReportDocument (rdInforme) y 1 CrystalReportViewer (crvInforme)
        Private Sub FrmXXX_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            Try
                Me.rdInforme.Load(PATH_FICHERO_RPT)
            Catch Exp As Exception
                MessageBox.Show(Exp.Message, "FrmXXX_Load", MessageBoxButtons.OK, MessageBoxIcon.Information)
                Me.Close()
            End Try
            Me.rdInforme.SetDataSource(EL_DATATABLE_DE_TU_CONSULTA)
            Me.crvInforme.ReportSource = Me.rdInforme
        End Sub

    P.D.
    Espero que te sirva

    Un saludo desde Bilbo
    Carlos
    miércoles, 15 de junio de 2016 21:41
  • Hola J.Carlos Herrero, si no me equiboco me estas poniendo como cargar el datatable en mi reporte, sin embargo eso ya lo tengo, lo imprimo en PDF o si lo necesito en la impresora sin problemas... He creado varios y me funcionan todos bien, pero no se por que aquí me duplica los conceptos cuando hay mas de 1 concepto por factura.
    jueves, 16 de junio de 2016 9:04
  • Saludos

    RamonAz lo que yo hago es crear un tabla llamada fecha la cual contiene 2 campos

    1 fecha inicial

    2 fecha final

    Hay guardo la fecha  luego llevo esta tabla al reporte crystal report con las demas tablas en crystal lo que hago es una formula para los registro que se van a mostrar esa formula es la siguiente

    if {fecha.GC7}>={fecha.fechainicial} and {fecha.GC7}<={fecha.final} then

    {nfactura.GC7}

    else

    ""

    end if

    y asi hago para todo los campos que quiero mostrar con ese rango de fecha

    jueves, 16 de junio de 2016 11:57
  • Hola:
    No has puesto como cargas de datos el fichero RPT.
    Lo que te quiero decir que si despues de ejecutar la consulta, el datatable tiene 3 registros, al visualizar el fichero RPT (segun las pautas que te puesto antes) se veran 3 lineas de detalle.
    ¿Porque no expones como visualizas el fichero RPT?
    Solo has puesto algunas lineas acerca de algun dataset

    Un saludo desde Bilbo
    Carlos
    viernes, 17 de junio de 2016 5:29