none
como puedo hacer que el datafridview muestre un contenido en especifico? (como un filtro) RRS feed

  • Pregunta

  • Buenas estoy haciendo un programa de biblioteca. en visual basic  2010 y access.

     tengo varios generos en una sola tabla deseo que mi datagrid solo muestre el conentido de genero terror o misterio dependiendo del form que se selecione (Seria como un filtro pero que estaria fijo en cada form), habra alguna forma que solo muestre este contenido ? o tengo que hacer tablas diferentes.

    lo otro es que tambien quiero poder eliminar un registro al momento que una persona devuelva un  libro... seria como en la tabla principal tengo el nombre de la persona el libro que escogio la fecha y la fecha en que es devuelto deseo al momento de selecionar la fecha en que fue devuelto esta informacion pase a otra tabla y que se borre de la primera e leido un poco pero en realidad el comando no me funciona.



    • Editado Tiernita sábado, 25 de febrero de 2017 18:42
    sábado, 25 de febrero de 2017 3:56

Respuestas

  • Sobre la primera cuestión (filtro): Hay dos alternativas. Una es traer a memoria en un dataset todos los registros una única vez, y luego en cada formulario aplicar un filtro sobre ese dataset para mostrar solo los registros que requiera ese formulario. La otra opción es que cada formulario tenga su propio dataset, en cuyo caso traerías desde la base de datos a ese dataset únicamente los registros que quieras mostrar.

    Si usas la primera opción, entonces primero carga el dataset con toda la tabla y luego extrae de él su DefaultView y aplícale el filtro al dataview, y finalmente enlaza ese dataview con el grid en pantalla. Te pongo el ejemplo en C# ya que no has especificado con qué lenguaje trabajas en Visual Studio:

    DataView dv = miDataSet.DefaultView;
    dv.RowFilter = "Genero='Terror'";
    miDtaGrid.DataSource = dv;

    Si optas por la segunda opción, entonces deja toda la carga de datos como ya la tienes, pero busca el sitio donde tienes la sentencia SQL que carga la información desde la base de datos y añádele una cláusula "Where":

    "Select lasColumnas from laTabla WHERE Genero='Terror'"

    • Marcado como respuesta Tiernita domingo, 26 de febrero de 2017 7:21
    sábado, 25 de febrero de 2017 8:41
  • Hola,

    No necesitas hacer la transferencia de filas. Por ejemplo, si tienes la tabla [Prestamos] con las columnas (Nombre, Libro, FechaPrestamo, FechaDevolucion), agrega una nueva columna -por ejemplo- [IsDevuelto] de tipo bit donde escribirás el valor 1 cuando el libro haya sido devuelto (el valor al realizar el préstamo será 0).

    --¿Qué libros han sido prestados y aún no han sido devueltos?
    SELECT * FROM Prestamos WHERE IsDevuelto = 0 AND FechaDevolucion > GETDATE();
    GO


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    • Marcado como respuesta Tiernita domingo, 26 de febrero de 2017 7:21
    sábado, 25 de febrero de 2017 21:14

Todas las respuestas

  • Sobre la primera cuestión (filtro): Hay dos alternativas. Una es traer a memoria en un dataset todos los registros una única vez, y luego en cada formulario aplicar un filtro sobre ese dataset para mostrar solo los registros que requiera ese formulario. La otra opción es que cada formulario tenga su propio dataset, en cuyo caso traerías desde la base de datos a ese dataset únicamente los registros que quieras mostrar.

    Si usas la primera opción, entonces primero carga el dataset con toda la tabla y luego extrae de él su DefaultView y aplícale el filtro al dataview, y finalmente enlaza ese dataview con el grid en pantalla. Te pongo el ejemplo en C# ya que no has especificado con qué lenguaje trabajas en Visual Studio:

    DataView dv = miDataSet.DefaultView;
    dv.RowFilter = "Genero='Terror'";
    miDtaGrid.DataSource = dv;

    Si optas por la segunda opción, entonces deja toda la carga de datos como ya la tienes, pero busca el sitio donde tienes la sentencia SQL que carga la información desde la base de datos y añádele una cláusula "Where":

    "Select lasColumnas from laTabla WHERE Genero='Terror'"

    • Marcado como respuesta Tiernita domingo, 26 de febrero de 2017 7:21
    sábado, 25 de febrero de 2017 8:41
  • Sobre la primera cuestión (filtro): Hay dos alternativas. Una es traer a memoria en un dataset todos los registros una única vez, y luego en cada formulario aplicar un filtro sobre ese dataset para mostrar solo los registros que requiera ese formulario. La otra opción es que cada formulario tenga su propio dataset, en cuyo caso traerías desde la base de datos a ese dataset únicamente los registros que quieras mostrar.

    Si usas la primera opción, entonces primero carga el dataset con toda la tabla y luego extrae de él su DefaultView y aplícale el filtro al dataview, y finalmente enlaza ese dataview con el grid en pantalla. Te pongo el ejemplo en C# ya que no has especificado con qué lenguaje trabajas en Visual Studio:

    DataView dv = miDataSet.DefaultView;
    dv.RowFilter = "Genero='Terror'";
    miDtaGrid.DataSource = dv;

    Si optas por la segunda opción, entonces deja toda la carga de datos como ya la tienes, pero busca el sitio donde tienes la sentencia SQL que carga la información desde la base de datos y añádele una cláusula "Where":

    "Select lasColumnas from laTabla WHERE Genero='Terror'"

    Muchisimas gracias me funcion tal como me dijiste (siento no haber puesto que lenguaje uso VB), me e estado rompiendo la cabeza y no encontraba solucion.. realmente muchisimas gracias

    Ahora solo me falta saber la segunda pregunta :D



    • Editado Tiernita sábado, 25 de febrero de 2017 18:50
    sábado, 25 de febrero de 2017 18:49
  • Hola,

    No necesitas hacer la transferencia de filas. Por ejemplo, si tienes la tabla [Prestamos] con las columnas (Nombre, Libro, FechaPrestamo, FechaDevolucion), agrega una nueva columna -por ejemplo- [IsDevuelto] de tipo bit donde escribirás el valor 1 cuando el libro haya sido devuelto (el valor al realizar el préstamo será 0).

    --¿Qué libros han sido prestados y aún no han sido devueltos?
    SELECT * FROM Prestamos WHERE IsDevuelto = 0 AND FechaDevolucion > GETDATE();
    GO


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    • Marcado como respuesta Tiernita domingo, 26 de febrero de 2017 7:21
    sábado, 25 de febrero de 2017 21:14
  • Muchas gracias me sirvio no sabia que podia ser facil... casi me complico la vida mas de lo debido ... Muchisimas gracias ;)
    domingo, 26 de febrero de 2017 7:22