Informes vReport - Plural en sección detalle no muestra más que un registro


([N2] basesoft) #1

Tengo un informe en vReport Maestro/líneas. Se usar el editor del vReport y sé lanzar su impresión/vista previa.
Cargo las líneas que asigno al detalle mediante un proceso rutinario de Cargar plurales + añadir lista a la salida
Si la lista plural tiene, p.el., 3 registros
sólo aparece uno en la sección de detalle
Me sucede siempre, tenga o no tenga marcado el check “altura automática” y sea cualquiera el número de registros del plural
Por lo demás todo está correcto

Podéis sugerirme cuál es el origen del problema.
en soporte sólo me dirigen a la OA vReport, pero para mí eso es un embrollo
que estudiaré cuando resuelva el tema de los plurales


([N4] eic) #2

Hola, Cuco.

A diferencia de los informes nativos, hay dos maneras de definir un informe de maestro-detalle con vReport:

  • Informe basado en lineas, que se agrupan para mostrar datos del maestro (típico de los informes nativos, que también es posible en vReport)
  • Informe basado en el maestro, en el que luego defines detalles (incluso más de una tabla de detalle) mediante procesos (esto sólo se puede hacer con vReport).

Yo uso el primer tipo cuando tengo informes sencillos maestro-detalle con una sola tabla de detalle (típico informe de factura con sus líneas). Basas el informe en las líneas, y luego agrupas por el ID de la cabecera. Es cómodo y simple.

Para el segundo tipo, la clave está en definir bien los orígenes de datos (y no sólo la tabla, sino también las otras propiedades que hay en ese apartado de la definición del informe) y las secciones del informe (que definen cómo se relaciona cada sección con los orígenes de datos). Por eso te redirigen a la OpenApp, para que veas cómo están definidos los informes que se muestran allí. Además, las opciones que hay que escoger son bastante poco intuitivas.

vReport permite hacer informes de bastante complejidad. Para que te hagas una idea, siguiendo el ejemplo de facturas-líneas, con un informe con sólo esos dos orígenes de datos, puedo definir un informe que sea: 1) una primera página con datos del cliente, 2) una segunda página con la cabecera de la factura, 3) otra página dedicada a las observaciones de la factura, 4) otra con las líneas, 5) otra con un resumen final de la factura… y todo a base de definir adecuadamente las secciones del informe. Y podría mezclar información de más tablas. Por eso… te aconsejaría que miraras esa Open App y te fijes en la definición del informe que se ajuste a tus necesidades (tienen bastantes ejemplos). Y eso pasa, como diría Paco Satué, porque no hay una documentación CLARA de los tipos de informes que se pueden definir y de las posibilidades de vReport (en mi humilde opinión).

No sé si te he aclarado algo o no… Ya comentarás.


([N2] basesoft) #3

Muchas gracias, Fran, siempre es bueno tener un amigo que venga en tu ayuda.

Quizá no me expliqué bien:
Estoy haciendo mis primeros informes sencillos en vReport y lo entiendo perfectamente, edito e imprimo perfectamente.
Empezé por un Maestro y un Plural, definidos cabalmente ambos en los orígenes de datos, el origen de datos de líneas definido con su padre (el maestro) y el proceso correspondiente que es, como sabes, un proceso elemental de carga de plurales y un “añadir lista a la salida” v. archivo adjunto:

Lo realizo basado en maestro (no cómo en el editor de informes nativo de V7) con sección de detalle de líneas de composición convenientemente definido en diálogo “configuración de detalle” .
Con sus cabeceras y pies de página, en los que incluyo datos del maestro directamente, y
en el detalle, las del plural
Pues bien, se imprime perfectamente, cada cosa en su sitio, y sólo la primera línea del plural de detalle, cuando, con los datos que uso en ejecución, deberían ser tres líneas.
He revisado todo cientos de veces y la única opción que creo que pudiera influir es la del check “Alto automático” en las propiedades de la sección “Detalle”, pero es indiferente, icluso con la altura automática se ve peor.
Con el debugger y con mensajes, la lista tiene 3 registros, pero siempre sale sólo el primero.
Sólo quiero saber qué más hay que hacer para que se realice la iteración de la sección de detalle.

He descargado la Open App de vReport, pero me parece un bosque y yo sólo quiero un árbol, sólo necesito (por lo de ahora) la solución más simple, como se describe en el manual, que debería funcionar. Quizá haya que hacer algo más en el proceso de carga del plural, no lo sé.
Tengo prisa porque ya tenía resuelta, y bien resuelta, la inclusión de 5 plurales a base de HTML, un proceso de sustitución y un visor HTML, que en la 7.16 se imprimía de cine, pero, con la 7.17, se descabala todo, especialmente la etiqueta <hr> y los bordes de las tablas que los coloca donde le apetece (por no decir una grosería), Esto es un error del nuevo WebKit de QT5, por lo que me veo avocado a hacerlo en vReport, con el que no había trabajado nunca.

Gracias, Fran, otra vez por lo que te has molestado con esa explicación tan prolija.

Juan Figueroa
“Cuco”



([N4] eic) #4

Hola, Cuco.

Como te decía, el problema no está en la definición del proceso (que, por supuesto, está correcto), sino en la definición del informe, especialmente de los orígenes de datos y de la sección de detalle. En concreto:

  • En orígenes de datos, cuando defines la tabla maestra, en la propiedad “Abriendo/ejecutando rol” debes poner “Iteración del subinforme”, y “Tipo de localización” como “Estático”.
  • Cuando defines la tabla de detalle (además de indicar la tabla padre y el proceso para obtener el detalle), en la propiedad “Abriendo/ejecutando rol” debes poner “Comienzo del informe”, y “Tipo de localización” como “Estático”.

Después, debes tener al menos una sección de Detalle ligada a la tabla de detalle… y en principio, con eso, te debería funcionar.

A esto es a lo que me refería: a mi entender, esa configuración que te indico es “poco intuitiva”, pero (creo) es la que funciona. Ya me comentas.


([N2] basesoft) #5

Fran, me has hecho un hombre feliz:
Era solo el detalle de “iteración de subinforme” en el maestro y en el plural, “comienzo en el informe”
funciona de cine.
La verdad, de intuitivo no tiene nada
ahora tengo un informe con 5 plurales, 2 construidos con detalles y otros tres pasados en html como parámetros, convertidos en “listas ordenadas” en el proceso de carga. Ya lo tenía todo preparado esperando la solución para los plurales.
Ahora ya puedo estudiar más a fondo los modelos que propone la OApp vReport. ahora ya vi el árbol.
¿Se podrán guardar los xml en un campo de una tabla? A ver si me entero.
Muchas gracias. Te regalaré una caja de puros y un lugar despejado para fumarlos
Y un abrazo monumental, claro


([N1] percyleoncio) #6

Hola amigos:
Tengo 3 origenes de datos el padre de todos ellos esta con “Iteración del subinforme” y el resto en “Comienzo del informe”
En configuracion de detalle: el detalle padre y el resto están con el mismo “Origen de datos” del primero.
Pero solo me aparece el último registro, cual será el problema?

Gracias por la ayuda.


([N4] eic) #7

Para Cuco: fue un placer.

Y una aclaración, porque me equivoqué de OpenApp:

  • La OpenApp vReport te proporciona un repositorio de informes, para que puedas almacenar en tablas esos XML, de forma sencilla. Yo la uso continuamente. Pero viene sin ejemplos de ningún tipo. Trae las tablas y objetos visuales necesarios para que puedas almacenar informes, nada más.
  • La OpenApp Tutor de vReport te muestra (esta sí) ejemplos de diversos tipos de informes, partiendo de unas tablas sencillas (clientes, facturas, lineas). Es ésta la que debía haberte aconsejado, y no la otra.

Para percyleoncio: no aclaras si esos 3 orígenes de datos tienen alguna relación maestro-plural, si tienes bien definidos los procesos que obtienen los plurales a partir del padre, si los detalles están enganchados a los orígenes adecuados… No es fácil contestarte sin más datos.


([N1] percyleoncio) #8

Gracias por contestar amigo Fran, por supuesto que el padre es maestro de cada uno, los procesos están correctos, en el plural 1 tengo 2 registros pero en el informe solo sale el registro 2, el otro plural solo tiene 1 registro que es el que aparece.


([N4] eic) #9

Entonces deberías tener, al menos, una sección de detalle enlazada como “Origen de datos” con uno de los plurales, y otra sección de detalle con el otro plural. ¿Es así?


([N1] percyleoncio) #10

Gracias por la respuesta.
Justo en la ventana de Configuración de detalle estaba el error ya que no estaba con su correspondiente origen de datos, estaban con el origen de datos padre, ahora si aparecen los 2 registros.
Ahora quiero añadir al maestro otro plural que a su vez tiene otro plural, a estos 2 los pongo sus respectivos origenes de datos pero no aparecen los 2 registros que tienen.


([N1] percyleoncio) #11

Leyendo el manual veo que existen las subconsultas donde se tiene que utilizar abriendo/ejecutando rol asignar el valor comienzo del informe, pero en este caso ya existe el rol a asignar a: Iteracion del subinforme en el maestro, si lo cambio aparece distorsionado el informe y en otros casos rompe el vClient, como se hace esto?


([N3] pacosatu) #12

Hola a todos.

Es una pena que una Herramienta tan importante como VReport esté tan poco mimada por Velneo.

La última versión de VReport es la 1.6 que salió totalmente integrada en VDevelop con Velneo 7.16.
Tenemos 3 fuentes de información:

Como podréis comprobar hay un pupurri de fuentes de documentación, que como siempre necesita de un esfuerzo extra para darnos una idea de todos los detalles de la herramienta.

VReport necesita ya de una página independiente donde centralizar todo, igual que la tiene vDevelop. También con la nueva aplicación vTutor se podrá dar un buen repaso a la documentación.

Respecto al tema tratado en este hilo, me gustaría dejar claros algunos conceptos relacionados con el Origen de datos, que como me imagino les pasará a muchos, a mí me supuso en su día varias horas de prueba y error.

  • VReport necesita una Lista de Entrada como Origen de datos único del Informe.
  • Tenemos que definir en el Informe al menos un Origen de Datos que se corresponda con la tabla de la Lista de Entrada.
  • El primer Origen de Datos del Informe puede ser de 2 Tipos (propiedad Abriendo/ejecutando rol):
  • Comienzo del Informe - es el tipo por defecto, el informe se alimenta directamente de la Lista de Entrada
  • Iteracción del subinforme - la Lista de Entrada determina los SubInformes que se irán creando. La consecuencia inmediata es que dispondremos de tantas Cabeceras de Informe como registros tenga la Lista de Entrada.
  • El segundo y sucesivos Origenes de Datos pueden ser de 2 Tipos:
  • Origen de datos hijo (subconsulta) - la Lista se genera mediante un Proceso contra el Origen de Datos de tipo Comienzo del Informe.
  • Comienzo del Informe - la Lista se genera mediante un Proceso contra el Origen de Datos de tipo Iteracción del subinforme.

Un poco lioso y como habéis comentado poco intuitivo si no se explica muy bien, pero resumiendo:

  • Queremos un Informe con subconsultas Mestro/Detalle de varios niveles. El Maestro será la Lista de Entrada del Informe de tipo Comienzo del Informe. Además habrá tantos Origenes de tipo Origen de datos hijo (subconsulta) como Detalles queramos imprimir.
    IMPORTANTE.- El Origen de la sección Detalle será el Maestro, es decir, el tipo Comienzo del Informe.
    EJEMPLO DEL TUTOR.- CLIENTES_ALBARANES_LINEAS_SUBCONSULTAS
    La Lista de Entrada son Clientes y las Subconsultas son los Albaranes y las Líneas (Líneas es subconsulta de Albaranes).
  • Queremos un Informe compuesto de varios Subinformes con su cabecera de Informe independiente. Nuestro deseo es mostrar un Maestro con uno o varios Detalles seguidos o en paralelo. Lógicamente, solo puede haber un nivel de Subinformes. Habrá un Origen de Datos de tipo Iteracción del subinforme con la lista de Maestros para crear una Cabecera de Informe por cada uno de ellos. Además habrá tantos Origenes de datos de tipo Comienzo del Informe como Detalles queramos mostrar.
    IMPORTANTE.- El Origen de cada sección Detalle será la Lista del detalle, es decir, el tipo Comienzo del Informe.
    EJEMPLO DEL TUTOR.- CLIENTES_FACTURAS_ALBARANES
    Genera tantos subInformes como Clientes hay en la Lista de Entrada. Cada subinforme se compone de 2 detalles, Facturas y Albaranes. Observad que hay tantas Cabeceras de Informe como Clientes.

Lo importante es entender qué Origen de datos debemos asignar a cada sección Detalle para que el motor de vReport pueda recorrer correctamente la Lista de registros del Informe. Es el programador quien debe usar los punteros a maestro existentes en las tablas para pintar cualquier dato que necesita. También podemos acceder a cualquier Origen de datos desde cualquier objeto del Informe.

Espero que este mini resumen sobre los Origenes de datos haya dado un poco más de luz al tema.
Queda pendiente iluminar los siguientes temas (muchas más horas de prueba y error):

  • Formato condicional
  • Opciones HTML
  • Zonas

Saludos
Paco Satué


([N1] OscarBarea) #13

Hola Paco, gracias por las aclaraciones.
Falta comentar un detalle super importante, poder ordenar un informe de vReport según las agrupaciones. Ahora es un caos.
No sirve de nada darle al cliente una herramienta para poder personalizar informes, si cuando los lanza no los agrupa correctamente.
Saludos


([N3] pacosatu) #14

Hola OscarBarea.

En este tema, y por experiencia con otros generadores de Informes, mi opinión es la sigueinte:

  • El motor de Informes normalmente no Ordena los registros ni tampoco es su misión.
  • El motor de Informes se limita a recorrer el Origen de Datos desde el primer registro hasta el último. Buscará los Agrupamientos por el campo que hayamos especificado, irá haciendo las Agregaciones que hayamos programado en las Variables definidas, irá generando saltos de página cuando se cumplan determinadas condiciones y poco más.
  • A veces habrá subConsultas y subInformes que mediante Procesos generan nuevos Orígenes de datos, y éstos serán recorridos igualmente de forma secuencial, paralelamente o uno detrás de otro.

Yo imagino a VReport como una impresora antigua de líneas de papel contínuo. Lo que entra sale impreso en el mismo orden.

Si Velneo no es capaz de entregar un Origen de datos debidamente ordenado, eso ya no es culpa de VReport.

Saludos
Paco Satué


([N2] basesoft) #15

Me alegra haber puesto esta cuestión en el Foro V7 porque he resuelto un problema y he despertado algo que estaba dormido: ¿cómo manejar vReport con todos esas opciones crípticas? (da la impresión de ser un aditamento de terceros mal traducido)
Fue como si ahora se hubiera perdido el miedo a preguntar sobre esto, es decir “todo lo que usted quería saber del sexo de vReport y no se había atrevido a preguntar”

Gracias a todos por vuestras preguntas adicionales y, claro, a las que las contestaron con tanta exactitud,
A ver si podemos construir entre todos un pequeño manual de uso con explicaciones como las de Fran Varona o las de Paco Satué, que incluya las que éste último ha apuntado como pendientes de dilucidar.

Gracias a a todos, repito

Juan Figueroa
“Cuco”


([N1] percyleoncio) #16

Bueno despues de 2 dias al fin resolví el problema en el primer Maestro el rol es iteracion del informe, en los plurales el rol son comienzo del informe y si hay un plural que tiene otro plural pues igual a este primer plural el rol es iteración del informe y este ultimo plural mencionado el rol es comienzo del informe.

Gracias a todos por haberme encendido la luz, ya estaba por abandonar el vReport.


([N2] basesoft) #17

Una pregunta, por el mismo precio:

1-Tengo una tabla de configuración ( Maestra del maestro del informe)
que tiene un campo dibujo para el logotipo de la empresa
2-Quiero incluir el logotipo en la cabecera de página
3-Tengo configuradas las propiedades de la imagen personalizada como se ve en el archivo adjunto.
4-No me funciona:

¿Cómo tengo que configurar las propiedades del control dibujo?

Pago con las gracias y, si son de Gijón, una caña o un purito, si fuman



([N3] pacosatu) #18

Hola Juan.

Estás usando un control de Informe incorrecto. Usa en su lugar el control Imagen a secas.

Como ves en el adjunto.

  • HISTORIAL es el Origen de datos
  • #CENTRO_TRABAJO es el puntero a Maestro
  • FOTO es el campo de Tipo Dibujo

Saludos
Paco Satué



([N1] percyleoncio) #19

Cosas raras me pasa con vReport en la mañana dije que habia conseguido que funcionara como quería, ahora resulta que ni el ultimo plural y su plural aparece en el informe sin embargo en el diseño veo que alli están la cabecera como su detalle y repase los origenes de datos y sus detalles y todo está normal???
Y estoy utilizando el mismo registro y sus plurales que me salía bien, tambien revise los datos alli están.


([N3] pacosatu) #20

Hola percyleoncia.

Nos tienes que explicar muy detallado la relación que tienen tus Orígenes de datos.

Si es una relación Maestro->Detalle1->Detalle2 como por ejemplo Clientes->Facturas->Líneas entonces los Orígenes serán del siguiente tipo:

  • El Maestro será la Lista de Entrada del Informe de tipo “Comienzo del Informe”.
  • El Detalle1 se obtiene por Proceso1 del Maestro y será de tipo “Origen de datos hijo (subconsulta)”.
  • El Detalle2 se obtiene por Proceso2 del Detalle1 y será de tipo “Origen de datos hijo (subconsulta)”.

Hay una sección de Detalle asociando el Origen del Maestro.
Se definen los agrupamientos según convenga.

El Motor de Vreport recorre el Maestro y por cada registro ejecuta el Proceso1 para obtener el Detalle1. A su vez por cada registro de Detalle1 se ejecuta el Proceso2 para obtener el Detalle2.

Saludos
Paco Satué