Es conocido que las base de datos son importantes hoy en día,sin embargo también es fundamental que nuestra aplicación funcione de manera dinámica y fluida por ello debemos evitar toda costa procesos que entorpezcan la generación de informes o reportes en nuestra aplicación, una practica sana es el uso de archivos XML como archivos que contienen información temporal para mostrarlos en Informes ya sea usando CrystalReport u otra tecnología que nos ayude a mostrar informes, esta es una pequeña clase que les ayudara y mucho.
usaremos una clase DataSet para llevar a cabo nuestro objetivo.
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.IO;
class clsXML
{
public static void guardar_xml(ref DataTable tbTemp,string archivo)
{
DataSet ds = new DataSet();
ds.Tables.Add(tbTemp);
using (StreamWriter file = new StreamWriter(String.Format("{0}.xml", archivo)))
{
try
{
tbTemp.WriteXml(file, XmlWriteMode.WriteSchema);
tbTemp.WriteXmlSchema(String.Format("{0}.xsd", archivo));
}
finally
{
file.Close();
}
}
}
}
para usarla seria así suponiendo que hacemos una consulta usando ADO.NET y llenamos un DataTable con el resultado de la misma.
clsXML.guardar_xml(ref DataTable,@"C:\temp");
Se estará preguntando en este momento, "bueno y eso que ventajas tengo, si lo puedo hacer directamente con una conexión desde la base de datos".
Tiene toda la razón al hacerlo así pero pensemos en tiempo real seria algo lento suponiendo que usted tiene una consulta cuyos resultados arrojan miles de filas, ahora bien también nos ayuda a hacer nuestro diseño del Informe mismo mucho mas cómodo ya que un XML es un estándar que sera compatible con cualquier cosa que usted desee hacer.
usaremos una clase DataSet para llevar a cabo nuestro objetivo.
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.IO;
class clsXML
{
public static void guardar_xml(ref DataTable tbTemp,string archivo)
{
DataSet ds = new DataSet();
ds.Tables.Add(tbTemp);
using (StreamWriter file = new StreamWriter(String.Format("{0}.xml", archivo)))
{
try
{
tbTemp.WriteXml(file, XmlWriteMode.WriteSchema);
tbTemp.WriteXmlSchema(String.Format("{0}.xsd", archivo));
}
finally
{
file.Close();
}
}
}
}
para usarla seria así suponiendo que hacemos una consulta usando ADO.NET y llenamos un DataTable con el resultado de la misma.
clsXML.guardar_xml(ref DataTable,@"C:\temp");
Se estará preguntando en este momento, "bueno y eso que ventajas tengo, si lo puedo hacer directamente con una conexión desde la base de datos".
Tiene toda la razón al hacerlo así pero pensemos en tiempo real seria algo lento suponiendo que usted tiene una consulta cuyos resultados arrojan miles de filas, ahora bien también nos ayuda a hacer nuestro diseño del Informe mismo mucho mas cómodo ya que un XML es un estándar que sera compatible con cualquier cosa que usted desee hacer.
Comentarios
Publicar un comentario