none
Crear informe con Report View con origen de una base de datos SQLITE RRS feed

  • Pregunta

  • Hola a todos!

    Quiero hacer un informe con Visual Studio Ultimate y los datos los tengo en una base de datos de SQlite.

    Siguiendo las instrucciones que Leandro Tuttini enlazó en una respuesta anterior:

    Walkthrough: Using a Business Object Data Source with the ReportViewer Windows Forms Control in Local Processing Mode
    http://msdn.microsoft.com/en-us/library/ms251784(v=vs.80).aspx

    he conseguido crear el informe creando un LIST desde la base de datos SQlite tal como dicen en el "Walkthrough ..."

    El codigo es el siguiente:

    -----------------------------------------------------------------------------------------------------------------------

    CODIGO

    -----------------------------------------------------------------------------------------------------------------------

    //    GetProducts method that returns a collection of 
    //    Product objects.

    public class Zonas
    {
        private List<Vias> via;
        private DataTable DTable;

        public Zonas()
        {
            string origenBD = @"Data Source =escalada.sqlite";
            //string stringSQlite = "SELECT nombre_via, grado, nombre_zona, nombre_sector FROM vias, sector, zonas WHERE zonas.id_zona=sector.id_zona AND sector.id_sector=vias.id_sector";
            string stringSQlite = "SELECT nombre_via, grado, nombre_zona, nombre_sector FROM vias, sector, zonas WHERE zonas.id_zona=sector.id_zona AND sector.id_sector=vias.id_sector";
            SQLiteConnection conexion = new SQLiteConnection(origenBD);
            conexion.Open();
            SQLiteDataAdapter DAdapter = new SQLiteDataAdapter(stringSQlite, conexion);
            DTable = new DataTable();
            DAdapter.Fill(DTable);
            conexion.Close();

            via = new List<Vias>();
            foreach (DataRow dr in DTable.Rows)
            {
                Vias itemVia = new Vias();
                itemVia.Nombre = Convert.ToString(dr["nombre_via"]);
                itemVia.Grado = Convert.ToString(dr["grado"]);
                itemVia.Sector = Convert.ToString(dr["nombre_sector"]);
                itemVia.Zona = Convert.ToString(dr["nombre_zona"]);

                via.Add(itemVia);
            }
        }
        public List<Vias> GetVias()
        {        
            return via;
        }
    }

    -----------------------------------------------------------------------------------------------------------------------

    FIN CODIGO

    -----------------------------------------------------------------------------------------------------------------------

    Mi pregunta es:

    ¿es posible hacer esto mas directo tomando como origen una DataTable y no generando una LIST?

    Tengo Windows 8 PROFESIONAL

    sábado, 8 de noviembre de 2014 16:38

Respuestas

  • Hola:

     Si es posible pero el tema es que los DataSet y por lo consiguiente los DataTables estan dejando de usarse poco a poco ya que la tendencia es migrarse a la POO (Programación  Orientada a Objetos), digo poco a poco con temor a equivocarme...

     El tema es que deberías de utilizar listas genéricas para enlazar a tus reportes, esto por la facilidad que te ofrecen para cambiar algún tipo, nombre, agregar una nueva propiedad etc.

    Te dejo un articulo en donde menciono como crear un LocalReport usando listas genéricas y usando datos enviados desde un formulario:

    ReportViewer y Rdlc, ejemplo Factura (datos fijos)

    Y te dejo este otro en donde muestro como enlazar este reporte a una Base de datos, SQlCompact (de iguales características el el SQlLite):

    ReportViewer y Rdlc, ejemplo Factura (Base de datos)

    Ahí menciono un punto muy importante, "El origen de los datos no importa lo importante es como enlazas tu LocalReport".

     Con eso quiero decirte que te olvides si la base de datos que uso en el ejemplo es SqlCompact y tu tienes Sqllite y en cambio te concentres en ver como se enlazan los objetos y despliegan los datos.


    Saludos desde Monterrey, Nuevo León, México!!!

    sábado, 8 de noviembre de 2014 17:09

Todas las respuestas

  • Hola:

     Si es posible pero el tema es que los DataSet y por lo consiguiente los DataTables estan dejando de usarse poco a poco ya que la tendencia es migrarse a la POO (Programación  Orientada a Objetos), digo poco a poco con temor a equivocarme...

     El tema es que deberías de utilizar listas genéricas para enlazar a tus reportes, esto por la facilidad que te ofrecen para cambiar algún tipo, nombre, agregar una nueva propiedad etc.

    Te dejo un articulo en donde menciono como crear un LocalReport usando listas genéricas y usando datos enviados desde un formulario:

    ReportViewer y Rdlc, ejemplo Factura (datos fijos)

    Y te dejo este otro en donde muestro como enlazar este reporte a una Base de datos, SQlCompact (de iguales características el el SQlLite):

    ReportViewer y Rdlc, ejemplo Factura (Base de datos)

    Ahí menciono un punto muy importante, "El origen de los datos no importa lo importante es como enlazas tu LocalReport".

     Con eso quiero decirte que te olvides si la base de datos que uso en el ejemplo es SqlCompact y tu tienes Sqllite y en cambio te concentres en ver como se enlazan los objetos y despliegan los datos.


    Saludos desde Monterrey, Nuevo León, México!!!

    sábado, 8 de noviembre de 2014 17:09
  • Estimado Luis Escobar,

    Muchas gracias por su prontitud en la respuesta. Me ha quedado muy claro, tomaré nota en lo que dice sobre la importancia y eficacia de las listas genéricas.

    He aprendido mucho con los enlaces que ha compartido. Le agradezco el tiempo que emplea creando las entradas en su blog.

    Un saludo desde Zaragoza, España

    Carlos Roy

    sábado, 8 de noviembre de 2014 22:38