logo
small logo
  • Producto
  • Comprar
  • Ayuda
  • Blogs
  • Consola de usarios Ayuda
    • en
    • pt
    • es
    • de
    • pl
    • JP
    • ZH
  • Página principal
  • /
  • Blogs
  • /
  • Cómo copiar las bandas de un informe a otro con todo el contenido
  • Informes y documentos PDF en Blazor

    5 de abril de 2021

    Microsoft ha lanzado recientemente una plataforma web llamada Blazor. Este marco permite crear una interfaz

    read more
  • Paquetes FastReport .NET y .NET 5.0

    17 de diciembre de 2020

    UPD: Se aplica a las versiones de FastReport. NET anteriores a 2022.2. Los paquetes de

    read more
  • How to create a Swiss QR bill in .NET application

    19 de mayo de 2020

    Recently many countries digitize payments. In other words, they convert existing payments to digital format.

    read more
  • Personalización de la barra de herramientas y configuración de exportación en FastReport.Web para Core

    6 de septiembre de 2021

    Nuestros usuarios a menudo necesitan cambiar la apariencia de la barra de herramientas o personalizar

    read more
  • Working with NuGet packages in FastReport

    22 de noviembre de 2021

    UPD: Applies to the versions of FastReport .NET before 2022.2. License packages are now available

    read more

Cómo copiar las bandas de un informe a otro con todo el contenido

31 de marzo de 2021

A veces tiene que utilizar partes de un informe en otro. En casos simples, puede usar la herencia de informes para hacer esto.

Por ejemplo, hay un caso en el que todos los informes tienen elementos comunes (logotipo de la empresa, firma, etc.). Luego, estos objetos se pueden mover a un informe principal y, al crear informes secundarios, se copiarán automáticamente. Por lo tanto, no es necesario copiarlos manualmente cada vez, lo que simplifica y acelera enormemente la creación de nuevos informes. Además, si cambia algo en el informe principal, estos cambios también se reflejarán en todos los informes secundarios.

Sin embargo, la herencia de informes tiene varias limitaciones. Hay casos en los que un informe tenía un "padre" y se hizo necesario hacer que un "padre" fuera un informe completamente diferente. Puede parecer suficiente cambiar la propiedad BaseReport, pero, desafortunadamente, no funcionará.

Sin embargo, este problema se puede resolver de una manera elegante, reemplazando las bandas de un código de informe por bandas de otro.
Supongamos que hay un informe de referencia (base.frx) y sus bandas deben copiarse en un informe secundario (child.frx). Debe reemplazar PageHeader, PageFooter y DataBand con el nombre "Data1". Los siguientes ejemplos de código asumen que ambos informes se encuentran en la carpeta raíz de la unidad C.

Primero, debe descargar ambos informes:

Report base = new Report();
base.Load(@"C:\base.frx");
Report child = new Report();
child.Load(@"C:\child.frx");

El siguiente paso es obtener las páginas de ambos informes. Es importante conocer los nombres de las páginas. El siguiente ejemplo asume que el nombre de la página en ambos informes es "Página1":

ReportPage basePage = base.FindObject("Page1") as ReportPage;
ReportPage childPage = child.FindObject("Page1") as ReportPage;

Si no conoce los nombres de las páginas, puede obtenerlos del índice. Por ejemplo, además obtenemos acceso a las primeras páginas de ambos informes:

ReportPage basePage = baseReport.Pages[0] as ReportPage;
ReportPage childPage = childReport.Pages[0] as ReportPage;

Ambas opciones son apropiadas y conducen al mismo resultado.

Ahora puede reemplazar PageHeader y PageFooter. Es bastante simple:

childPage.PageHeader = basePage.PageHeader;
childPage.PageFooter = basePage.PageFooter;

Estas líneas copian las dos bandas con todas las propiedades y configuraciones. Además, todos los objetos ubicados en ellos se duplican y las propiedades no se pierden.

A continuación, reemplace DataBand con el nombre "Data1":

DataBand baseBand = basePage.FindObject("Data1") as DataBand;
DataBand childBand = childPage.FindObject("Data1") as DataBand;
// you need to get the Data1 index in the child report
int childBandIndex = childPage.Bands.IndexOf(childBand);
// you can now delete it
childPage.Bands.Remove(childBand);
// and insert the band from the base report in its place
childPage.Bands.Insert(bandIndex, baseBand);

Al final, se copia la banda con todas las propiedades y los objetos secundarios, y también se transfiere el enlace a la fuente de datos que es responsable de la propiedad DataSource. Sin este enlace, la banda no funcionará correctamente y no generará datos de la base de datos.

Solo necesitamos copiar las fuentes de datos. Esto se hace con el siguiente fragmento de código:

for (int i = 0; i < baseReport.Dictionary.DataSources.Count; i++)
{
 childReport.Dictionary.DataSources.Add(baseReport.Dictionary.DataSources[i]);
}

Por tanto, se han copiado todas las fuentes de datos. Si no es necesario, puede clonar solo aquellos que desee.

Eso es. Un par de docenas de líneas de código hicieron posible copiar las bandas y los objetos de un informe a otro. Si tiene muchos objetos en las bandas, es bastante largo y aburrido duplicarlos con un diseñador, e incluso lleva más tiempo crearlos desde cero.

Por supuesto, si el informe de línea de base solo tenía las bandas copiadas en este ejemplo, entonces esta tarea se puede realizar aún más fácilmente: copiando y pegando trivialmente el archivo del informe. Dejando a un lado las bromas, puede usar este método para copiar una o más bandas de un conjunto cuando no las necesite todas en un nuevo informe. O puede tomar un encabezado de página de un informe, una banda de datos de otro y un pie de página de un tercero.

about product descargar comprar
avatar
Oleg Kojnikov
.NET Development
Fast Reports Team: Oleg Kojnikov - NET Development at Fast Reports
.NET FastReport C#

Add comment
logo
  • 800-985-8986 (English, US)
  • +4930568373928 (German)
  • +55 19 98147-8148 (Portuguese)
  • info@fast-report.com
  • 901 N Pitt Str #325 Alexandria VA 22314
  • Comprar
  • Descargar
  • Documentación
  • Opiniones de usuarios
  • Cómo desinstalar nuestros productos
  • Enviar mensaje
  • FAQ
  • Toturial en vídeo
  • Foro
  • Documentación técnica
  • Nuestras noticias
  • Quiénes somos
  • Socios
  • Contactos

© 1998-2022 by Fast Reports Inc.

  • Privacidad