none
Reportes financieros con ReportViewer RRS feed

  • Pregunta

  • Saludos y de antemano muchas gracias por la ayuda.

    Estoy desarrollando reportes de carácter financiero (contable) con report viewer y el problema se presenta dentro de las agrupaciones, deseo generar un reporte con cuentas contables de 14 dígitos como máximo, cada una de esas cuentas no necesariamente pueden llegar a ese límite, pueden llegar hasta 3, 4, 5, etc. dígitos de cuenta, cuando llega el momento de imprimir las cuentas y quebrar por el número de dígitos finales (digamos las cuentas 121 y 12201), el reportviewer muestra sólo los detalles de la cuenta  (12201) + no el de la cuenta (121), para esto estoy usando la etiqueta de visibilidad del grupo, ahi coloco la expresión para ocultar el grupo cuando no cubre todo el tamaño de la cuenta, cabe mencionar, que una cuenta puede tener como minimo 2 grupos y como máximo 7 grupos ejemplo: la cuenta 121 tiene los grupos (nivel 1: 12 y nivel 2:121, este sería el detalle) y la cuenta 12201 tiene los grupos (nivel 1: 12, nivel 2: 122, y nivel 3: 12201, este sería el detalle)

    Espero puedan haber comprendido mi problema.

    Desde ya muchas gracias!

    Juan Carlos
    jueves, 8 de octubre de 2009 18:48

Respuestas

  • hola

    la verdad siempre que trabaje con reportes localmente utilice dataset, pero calculo que con las listas tambien deberia funcionar

    la ida seria la siguiente, crea en la lista propiedades por nivel, algo asi


    public class DataReport
    {
       public string Nivel1{get; set;}
       public string Nivel2{get; set;}
       public string Nivel3{get; set;}
       public decimal valor{get; set;}
    }

    me imagino que tendrias una List<DataReport>

    la idea es que antes de cargar el reporte trabajes un poco con los datos y cargues un item por cada valor de mas bajo nivel, seria en este caso como tres "for" loop anidados

    o sea a cada propiedad de nivel le asignaras el valor de la cuenta a la que pertenece

    DataReport item = null;

    List<DataReport> col = new List<DataReport>();

    item = new DataReport();
    item.Nivel1 = "122";
    item.Nivel2 = "12202";
    item.Nivel3 = "";
    item.valor = "100";
    col.Add(item);

    item = new DataReport();
    item.Nivel1 = "122";
    item.Nivel2 = "12202";
    item.Nivel3 = "";
    item.valor = "200";
    col.Add(item);

    item = new DataReport();
    item.Nivel1 = "120";
    item.Nivel2 = "12033";
    item.Nivel3 = "";
    item.valor = "100";
    col.Add(item);

    y este item lo agregas a la lista

    la idea es ir recorriendo en tres loop y agregando items
    si luego bidneas esto deberias poder agrupar correctamente

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    viernes, 9 de octubre de 2009 20:38

Todas las respuestas

  • Saludos y muchas gracias por la ayuda.

    Estoy desarrollando reportes de carácter financiero (contable) con report viewer y el problema se presenta dentro de las agrupaciones, deseo generar un reporte con cuentas contables de 14 dígitos como máximo, cada una de esas cuentas no necesariamente pueden llegar a ese límite, pueden llegar hasta 3, 4, 5, etc. dígitos de cuenta, cuando llega el momento de imprimir las cuentas y quebrar por el número de dígitos finales (digamos las cuentas 121 y 12201), el reportviewer muestra sólo los detalles de la cuenta  (12201) + no el de la cuenta (121), para esto estoy usando la etiqueta de visibilidad del grupo, ahi coloco la expresión para ocultar el grupo cuando no cubre todo el tamaño de la cuenta, cabe mencionar, que una cuenta puede tener como minimo 2 grupos y como máximo 7 grupos ejemplo: la cuenta 121 tiene los grupos (nivel 1: 12 y nivel 2:121, este sería el detalle) y la cuenta 12201 tiene los grupos (nivel 1: 12, nivel 2: 122, y nivel 3: 12201, este sería el detalle)

    Espero puedan comprender mi problema y ayudarme en la solución.

    Desde ya muchas gracias!
    jueves, 8 de octubre de 2009 19:12
  • hola

    solo una duda note que hay dos preguntas identicas pero posteadas por distintas personas

    la verdad esta algo complicado el dominio como para dar una respuesta puntual, puedo entender que trabajan con niveles, y que debes agrupar en abse a estos.

    los reportes que crean esta alojados en reporting service, o sea en sql server, o corren en modo local, por ahi usando un dataset tipado como origen de datos ?


    saludos





    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    viernes, 9 de octubre de 2009 4:17
  • hola

    no que este post fue realizado de forma idéntica, pero por otro usuario

    bueno respondi en el otro post

    saludos





    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    viernes, 9 de octubre de 2009 4:18
  • Saludos Leandro y gracias por tu tiempo.

    Efectivamente hay 2 consultas similares, te comento un poco,  somos un equipo de trabajo que nos tompamos con un problema en los reportes con Report Viewer, los reportes son rdlc (corren localmente) y para efectos de trabajar con la data estamos usando una lista de objetos (List of) en base a una entidad (clase), la cual tiene una estructura particular como cualquier tabla o cursor.

    El problema se presente con los quiebre en el reporte, tenemos una estructura de cuentas contables y de proyectos con un máximo de 14 dígitos, las cuentas no necesariamente llegan a ese nivel máximo, por ejemplo tengo una cuenta a nivel de 3 dígitos (123), eso quiere decir que dicha cuenta no cree más, por ende el report viewer deberá mostrar los detalles ha ese nivel, sin embargo de haber una cuenta mayor, digamos una 12325, el report viewer quiebra y muestra los detalles de esta última cuenta (la 12325), pero retira los detalles de la cuenta anterior (la 123), te muestro un ejemplo concreto:

    cuenta 12        (nivel 1)
    cuenta 121      (nivel 2)

    detalle del nivel 2      (este detalle no se muestra)                                  (este es el problema)
                                    total numérico del nivel 2    (121 si se muestra)

    cuenta 122      (nivel 2)
    cuenta 12202  (nivel 3)
    detalle del nivel 3      (este detalle si se muestra)
                                   
                                    total numérico del nivel 3    (12202 si se muestra)
                                    total numérico del nivel 2    (122 si se muestra)
                                    total numérico del nivel 1    (12 si se muestra)

    Por cierto, estamos condicionando en la etiqueta de visibildad de grupo.

    Espero puedas ayudarnos.

    Una brazo y gracias.


     

    viernes, 9 de octubre de 2009 19:53
  • hola

    la verdad siempre que trabaje con reportes localmente utilice dataset, pero calculo que con las listas tambien deberia funcionar

    la ida seria la siguiente, crea en la lista propiedades por nivel, algo asi


    public class DataReport
    {
       public string Nivel1{get; set;}
       public string Nivel2{get; set;}
       public string Nivel3{get; set;}
       public decimal valor{get; set;}
    }

    me imagino que tendrias una List<DataReport>

    la idea es que antes de cargar el reporte trabajes un poco con los datos y cargues un item por cada valor de mas bajo nivel, seria en este caso como tres "for" loop anidados

    o sea a cada propiedad de nivel le asignaras el valor de la cuenta a la que pertenece

    DataReport item = null;

    List<DataReport> col = new List<DataReport>();

    item = new DataReport();
    item.Nivel1 = "122";
    item.Nivel2 = "12202";
    item.Nivel3 = "";
    item.valor = "100";
    col.Add(item);

    item = new DataReport();
    item.Nivel1 = "122";
    item.Nivel2 = "12202";
    item.Nivel3 = "";
    item.valor = "200";
    col.Add(item);

    item = new DataReport();
    item.Nivel1 = "120";
    item.Nivel2 = "12033";
    item.Nivel3 = "";
    item.valor = "100";
    col.Add(item);

    y este item lo agregas a la lista

    la idea es ir recorriendo en tres loop y agregando items
    si luego bidneas esto deberias poder agrupar correctamente

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    viernes, 9 de octubre de 2009 20:38
  • Saludos Leandro

    Estuve revisando el código y analizando un poco las cosas, definitivamente tu sugerencia coincide con algo que hemos visto en la oficina, preparar la data, sin embargo el problema de los quiebres persistía, toda vez que la data que teníamos hasta entonces tenía ya un grado de preparación y lo que se perseguía era que el reporteador haga su trabajo, en este caso manejar los quiebres.

    Afortunadamente, estuvimos inmersos todo el fin de semana en ello y elaboramos una salida, dar un grado más de preparación a la data y trabajar con listas anidadas y tablas......... y resultó.

    Fue experimentar un poco, no fue fácil, lo de la preparación de la data fue mínimo, lo complicado fue experimentar con las listas, tablas y condicionando la visibilidad de algunos objetos del reporte, fue tedioso pero dio resultado.

    Agradezco tu ayuda y si tienes interés en ver nuestra salida, evíame tu correo y te haré llegar el reporte.

    Saludos.
    martes, 13 de octubre de 2009 1:42
  • Hola, Ando buscando una solucion para un problema identico al que plantearon al inicio, espero que me puedas ayudar enviandome tu solicion pues tengo mucho interes.

    Muchas Gracias.

    miércoles, 4 de junio de 2014 17:59