none
Mostrar Información de tabla de otra manera RRS feed

  • Pregunta

  • Hola Buenas tardes, disculpen lo que pasa es que necesito mostrar la información que ya tengo almacenada en una tabla de SQL Server en mi aplicación, de tal manera que se pueda representar de la forma que esta en la imagen de la derecha, me explico:
    * En la tabla tenemos en (cada) Registro:
    - Puesto
    - Tipo de Curso
    - Curso
    - Status
    * En la vista de la información se debe ver:
    - Puesto (Tipo Header de una columna)
    - Tipo Curso (Al inicio de cada ves que inicien los cursos que corresponden a ese tipo)
    - Curso (Mostrados en forma de registro)
    - Status (En relación al Puesto y Curso).

    Los Colores denotan como se relacionan los datos entre si, espero y me puedan orientar, muchas gracias.

    Representacion


    Desarrollo de Tecnologias COMputacionales: http://dtcom91.blogspot.com/

    jueves, 4 de diciembre de 2014 22:10

Respuestas

  • Primero que nada lo felicito por presentar su pregunta tan claramente.  Ojalá todos en el foro tuvieran esa claridad a la hora de exponer su problema.

    Luego al problema:  Si no desea buscar controles de paga y quiere hacerlo usted, lo que necesita son varias consultas.  Esto no me parece PIVOT porque no está calculando ningún agregado por ninguna parte, al menos no me parece que lo sea.

    Una de las consultas sería SELECT Distinct Puesto From tabla WHERE ....  Guarde los resultados en un List<string>.  Por cierto, esta pregunta debería ir en uno de los foros de ASP.net.  Asumiré que usa MVC.  Este List<string> lo almacena en el modelo para el View en una propiedad llamada Puestos o algo similar.

    Luego hace la consulta primaria de los datos ordenada para mayor facilidad:  Select * From tabla WHERE... Order By TipoCurso, Curso ASC.  Esto lo almacena en un List<Tipo> donde Tipo es una clase de su creación que se ajusta a la tabla.

    Ahora tiene dos opciones:  Procesar aún más la lista en el controlador o dejar que la vista incluya el código para procesarla.  La lógica del bucle sería en esencia la misma sin importar donde esté, pero el controlador no generaría el HTML directamente como sí lo haría el bucle en la vista; el controlador tendría que generar otra colección de clases jerárquica que agrupe por tipo de curso.  En lo personal pienso que como no debe calcular agrupados tal vez es mejor hacer el bucle en la vista para que genere HTML directamente.

    Y básicamente así resolvería su problema.

    Ah, y olvidé decir que la lista de Puestos la usaría la vista en un bucle para agregar las columnas necesarias a la tabla.

    Ah, y finalmente puede aplicar paginación de forma opcional como haría con resultados de tablas tradicionales.  Aquí se muestra un método.


    Jose R. MCP
    Code Samples


    viernes, 5 de diciembre de 2014 16:04

Todas las respuestas

  • Me suena a PIVOT.


    DBA SQL Server Santiago/Chile

    viernes, 5 de diciembre de 2014 1:23
  • Jesús Perez... que tipo de aplicación tienes? WEB, Escritorio?

    Si es web tienes infinidad de formas, incluso si no es mucha información puedes crearte esa estructura con tablas y ahí tienes todo el poder de diseñar como organizarás tu información, filas, columnas, span de filas y columnas, etc, el diseño de como organizarás la información está en tu creatividad.

    Si es desktop pues se me ocurre algo así: Un combo para filtrar por el puesto y dependiendo del puesto se crean grupos y items en un listview.

    viernes, 5 de diciembre de 2014 5:05
  • Me suena a PIVOT.


    DBA SQL Server Santiago/Chile

    Ok investigare acerca del concepto. Gracias.

    Desarrollo de Tecnologias COMputacionales: http://dtcom91.blogspot.com/


    • Editado Jesus.Perez viernes, 5 de diciembre de 2014 15:28 Update
    viernes, 5 de diciembre de 2014 15:28
  • Jesús Perez... que tipo de aplicación tienes? WEB, Escritorio?

    Si es web tienes infinidad de formas, incluso si no es mucha información puedes crearte esa estructura con tablas y ahí tienes todo el poder de diseñar como organizarás tu información, filas, columnas, span de filas y columnas, etc, el diseño de como organizarás la información está en tu creatividad.

    Si es desktop pues se me ocurre algo así: Un combo para filtrar por el puesto y dependiendo del puesto se crean grupos y items en un listview.

    willams.mp la aplicacion que se esta desarrollando es en Web, y en cuanto al tamaño de la información estamos hablando de aproximadamente unos 1000 registros por tabla. Gracias.


    Desarrollo de Tecnologias COMputacionales: http://dtcom91.blogspot.com/


    • Editado Jesus.Perez viernes, 5 de diciembre de 2014 15:38 Update
    viernes, 5 de diciembre de 2014 15:31
  • Jesús, si es web tienes amplia libertad para realizar lo que mencionas. Depende si ocupas ASP NET o MVC. Hago la diferencia ya que en MVC no tienes controles disponibles como en ASP NET trabajas con elementos HTML y por ahí controles JQuery. 

    Ahora, existen controles de terceros que permiten hacer lo que mencionas Telerik, DevExpress, etc. He visto grillas que permiten crear grupos y subgrupos hacer drill down, etc. claro, cuestan.

    Si no hay para las licencias de controles de terceros y sólo es mostrar información y entendiendo que 1000 registros no son muchos y si no tienen un crecimiento alto puedes tomar la opción de tablas, claro, bien paginado. Si te das cuenta, lo que has hecho en tu gráfico es organizar la información en tablas, has creado tus filas, columnas, grupos etc.  has lo mismo, sólo que utiliza tus tag <table><td><th><...>

    Suerte.



    viernes, 5 de diciembre de 2014 15:43
  • Primero que nada lo felicito por presentar su pregunta tan claramente.  Ojalá todos en el foro tuvieran esa claridad a la hora de exponer su problema.

    Luego al problema:  Si no desea buscar controles de paga y quiere hacerlo usted, lo que necesita son varias consultas.  Esto no me parece PIVOT porque no está calculando ningún agregado por ninguna parte, al menos no me parece que lo sea.

    Una de las consultas sería SELECT Distinct Puesto From tabla WHERE ....  Guarde los resultados en un List<string>.  Por cierto, esta pregunta debería ir en uno de los foros de ASP.net.  Asumiré que usa MVC.  Este List<string> lo almacena en el modelo para el View en una propiedad llamada Puestos o algo similar.

    Luego hace la consulta primaria de los datos ordenada para mayor facilidad:  Select * From tabla WHERE... Order By TipoCurso, Curso ASC.  Esto lo almacena en un List<Tipo> donde Tipo es una clase de su creación que se ajusta a la tabla.

    Ahora tiene dos opciones:  Procesar aún más la lista en el controlador o dejar que la vista incluya el código para procesarla.  La lógica del bucle sería en esencia la misma sin importar donde esté, pero el controlador no generaría el HTML directamente como sí lo haría el bucle en la vista; el controlador tendría que generar otra colección de clases jerárquica que agrupe por tipo de curso.  En lo personal pienso que como no debe calcular agrupados tal vez es mejor hacer el bucle en la vista para que genere HTML directamente.

    Y básicamente así resolvería su problema.

    Ah, y olvidé decir que la lista de Puestos la usaría la vista en un bucle para agregar las columnas necesarias a la tabla.

    Ah, y finalmente puede aplicar paginación de forma opcional como haría con resultados de tablas tradicionales.  Aquí se muestra un método.


    Jose R. MCP
    Code Samples


    viernes, 5 de diciembre de 2014 16:04
  • Jesús, si es web tienes amplia libertad para realizar lo que mencionas. Depende si ocupas ASP NET o MVC. Hago la diferencia ya que en MVC no tienes controles disponibles como en ASP NET trabajas con elementos HTML y por ahí controles JQuery. 

    Ahora, existen controles de terceros que permiten hacer lo que mencionas Telerik, DevExpress, etc. He visto grillas que permiten crear grupos y subgrupos hacer drill down, etc. claro, cuestan.

    Si no hay para las licencias de controles de terceros y sólo es mostrar información y entendiendo que 1000 registros no son muchos y si no tienen un crecimiento alto puedes tomar la opción de tablas, claro, bien paginado. Si te das cuenta, lo que has hecho en tu gráfico es organizar la información en tablas, has creado tus filas, columnas, grupos etc.  has lo mismo, sólo que utiliza tus tag <table><td><th><...>

    Suerte.



    willams.mp Disculpa me falto aclarar ese punto, para confirmarte que la aplicacion web es en ASP.NET, checare lo de los controles. 

    Gracias


    Desarrollo de Tecnologias COMputacionales: http://dtcom91.blogspot.com/

    viernes, 5 de diciembre de 2014 17:23
  • Primero que nada lo felicito por presentar su pregunta tan claramente.  Ojalá todos en el foro tuvieran esa claridad a la hora de exponer su problema.

    Luego al problema:  Si no desea buscar controles de paga y quiere hacerlo usted, lo que necesita son varias consultas.  Esto no me parece PIVOT porque no está calculando ningún agregado por ninguna parte, al menos no me parece que lo sea.

    Una de las consultas sería SELECT Distinct Puesto From tabla WHERE ....  Guarde los resultados en un List<string>.  Por cierto, esta pregunta debería ir en uno de los foros de ASP.net.  Asumiré que usa MVC.  Este List<string> lo almacena en el modelo para el View en una propiedad llamada Puestos o algo similar.

    Luego hace la consulta primaria de los datos ordenada para mayor facilidad:  Select * From tabla WHERE... Order By TipoCurso, Curso ASC.  Esto lo almacena en un List<Tipo> donde Tipo es una clase de su creación que se ajusta a la tabla.

    Ahora tiene dos opciones:  Procesar aún más la lista en el controlador o dejar que la vista incluya el código para procesarla.  La lógica del bucle sería en esencia la misma sin importar donde esté, pero el controlador no generaría el HTML directamente como sí lo haría el bucle en la vista; el controlador tendría que generar otra colección de clases jerárquica que agrupe por tipo de curso.  En lo personal pienso que como no debe calcular agrupados tal vez es mejor hacer el bucle en la vista para que genere HTML directamente.

    Y básicamente así resolvería su problema.

    Ah, y olvidé decir que la lista de Puestos la usaría la vista en un bucle para agregar las columnas necesarias a la tabla.

    Ah, y finalmente puede aplicar paginación de forma opcional como haría con resultados de tablas tradicionales.  Aquí se muestra un método.


    Jose R. MCP
    Code Samples


    Hola webJose, gracias por su ayuda y una disculpa por no especificar, la aplicación web es en ASP.NET, Saludos.

    Gracias.


    Desarrollo de Tecnologias COMputacionales: http://dtcom91.blogspot.com/

    viernes, 5 de diciembre de 2014 17:26