none
Imprimir Subtotales por pagina y trasporte a la siguiente pagina de importes en Crystal Reports RRS feed

  • Pregunta

  • Hola a  todos, tengo que confeccionar un reporte del libro iva y tengo que calcular el total de las columnas que son importes por hoja y trasladar el importe a la siguiente pagina


    ejemplo:

    -------------------------------------------------------------------------------------------------------------------------
    pagina 1                 transporte:               0                                         0                               0
                        -----------------------------------------------------------------------------------------------------


                                                               neto grabado               neto no grabado              iva 21
    xxxxxxx                                                   100                                0                                        21
    cccccccc                                                   50                                   10                                     10.5

    --------------------------------------------------------------------------------------------------------------------------
                                       total                       150                              10                                      31.5
     



    -------------------------------------------------------------------------------------------------------------------------
    pagina 2                transporte:                  150                              10                                   31.50
                   -------------------------------------------------------------------------------------------------------------

    proveedor                                            neto grabado               neto no grabado              iva 21
    yyyyyyyyyyyyyyyyy                                200                               0                                        21
    ccccccccxxxx                                           50                                   0                                   10.5


    l--------------------------------------------------------------------------------------------------------------------------
                                       total                       400                           10                                      63


        




    desde ya muchas gracias


    programador
    • Cambiado Enrique M. Montejo lunes, 9 de mayo de 2011 17:44 crystal reports (De:Lenguaje VB.NET)
    martes, 3 de febrero de 2009 10:48

Todas las respuestas

  • Hola, Rodrigo:

    Dejando de lado los detalles de presentación, el método general de emisión de un reporte con un sólo nivel de totalización es más o menos el siguiente (se asume que hay al menos una linea de datos):

    VARIABLES:
        numeroLinea As Integer,
        numeroPagina As Integer

    Inicializacion:
        AbrirDispositivoSalida
        Se colocan todos los contadores y acumuladores en cero.
        numeroLinea = 0
        numeroPagina = 0
        Encabezado

    Para cada linea:
        Si numeroLinea >= LineasPagina Entonces
            Encabezado
        Fin Si
        ImprimirLinea
        AcumularTotales
        numeroLinea += 1

    Cierre:
        PasarTotalGeneral
        CerrarDispositivoSalida

    Encabezado:
        Si pagina > 0
            PasarAcumuladoVan
            SaltarPagina
        Fin Si
        pagina += 1
        EscribirDatosEncabezado
        Si pagina > 1 Then
           PasarAcumuladoVienen
        Fin Si
        numeroLinea = <lineas impresas en el encabezado>


    Lo único que tienes que hacer es "amoldar" tu código a este esquema.


    Salud!
    martes, 3 de febrero de 2009 13:24
  • Hola Rodrigo, tuve una situación similar hace unos días.

    Dejo la solución que encontré para este problema:

    En la sección Encabezado de página agregué lo siguiente:

    - Number2 (suprimir para que no se muestre)

    - @Transporte (Este es el transporte que se muestra en la parte superior, a partir de la segunda página en adelante)

    en Number2, botón derecho -> Editar fórmula. Ingresamos:

    if PageNumber>1 then
    (WHILEPRINTINGRECORDS;
    numberVar transp:=0;
    transp:= {@UnboundNumber1};)
    else
    (
    numberVar transp:=0;
    )
     

    en @Transporte, botón derecho -> Dar formato al objeto. En la pestaña 'Común', en el x-2 de Suprimir ingresamos: RecordNumber=1 para que no se muestre en la primera página. 

    en @Transporte, botón derecho -> Editar fórmula. Ingresamos:

    if PageNumber>1 then
    (WHILEPRINTINGRECORDS;
    numberVar transporte:=0;
    transporte:= {@UnboundNumber1};)
    else
    (
    numberVar transporte:=0;
    )

    En la sección Detalles agregué lo siguiente:

    - @sumaDetalles (suprimir para que no se muestre)

    En @sumaDetalles, botón derecho -> Editar fórmula. ingresamos:

    WHILEPRINTINGRECORDS;
    numberVar sumaysigue;
    sumaysigue:=sumaysigue+{Valor} ;

    donde {Valor} es el nombre de la columna donde se muestra el valor en $ de cada elemento de mi lista.

    En la sección Pie de página agregué:

    - Number1 (suprimir para que no se muestre)

    - @SumaySigue

    En Number1, botón derecho -> Editar fórmula. Ingresamos:

    WHILEPRINTINGRECORDS;
    numberVar sumaysigue;

    En @SumaySigue, botón derecho -> Dar formato al objeto. En la pestaña 'Común', en el x-2 de Suprimir ingresamos: PageNumber = TotalPageCount para que no se muestre en la última página. 

    En @SumaySigue, botón derecho -> Editar fórmula. Ingresamos:

    WHILEPRINTINGRECORDS;
    numberVar sumaysigue;
    sumaysigue;

    De esta forma logré sumar un total por página (transporte). El cual se muestra al final de cada hoja y al principio de la hoja siguiente.

    Espero le pueda servir a alguien más.

    Saludos!


    • Editado fescobares viernes, 18 de mayo de 2018 15:31
    viernes, 18 de mayo de 2018 15:12
  • Bom dia!

    Por gentileza poderia me informar a respeito a formula contida em @UnboundNumber1 usado em seu código? Obrigado!


    Dilson J. Hasselmann Desenvolvedor VB.NET

    miércoles, 15 de agosto de 2018 11:31
  • Estoy trancado en esta misma situación y no se como avanzar. Que es transporte:= {@UnboundNumber1};) que iría ahí?
    jueves, 5 de septiembre de 2019 21:38
  • Lo solucione después de 3 días

    en la sección detalles va esto, calcula los productos con iva y los sin iva (sumas)

    shared numbervar sumsiniva;
    shared numbervar sumconiva;
    shared numbervar iva; 
    if({Ventas.Iva}>0 and(iva = 0) ) then iva:= {Ventas.Iva};
    if({Ventas.Iva}>0)then sumconiva:=sumconiva+{Ventas.Total} else sumsiniva:=sumsiniva + {Ventas.Total}


    en el pie de página va esto en formula (auxsubtotalconiva)

    shared numbervar sumconiva;
    numbervar totconiva;
    totconiva:=sumconiva;
    sumconiva:=0;
    totconiva

    otra formula en pie de página con subtotal con iva va esto (subtotalconiva)

    shared numbervar iva;
    ({@auxsubtotalconiva}*100)/(100+iva)

    y lo mas importante donde estaba as de 3 días con esta falla, en la sección detalles se tiene que hacer grande para que las formulas puedan sumar bien o sino suman con valores de la siguiente hoja y causa inconsistencias.

    si necesitan mas ayuda me avisan.

    PostData: Como esta en la imagen no lo hagan, háganlo botón derecho en detalles y organizar lineas y ahí si ya funciona como debería ser.



    • Editado Ja1000_pu miércoles, 11 de septiembre de 2019 16:52 corrección de error futuro
    sábado, 7 de septiembre de 2019 17:21