none
como filtrar datos de una tabla de acces en visual studio 2012? RRS feed

  • Pregunta

  • hola tengo  un formulario donde muestro una tabla de acces con 8 campos(catalogo, marca , modelo , descripcion , numeroSerie , destino , estado , ubicacion ) con un datagridview, estoy filtrando de la siguiente manera(es para que tengan una idea de lo que estoy haciendo, se que esto tiraría 100 errores):

            Dim catalogo As String
            Dim marca As String
            Dim modelo As String
            Dim descripcion As String
            Dim numeroSerie As String
            Dim destino As String
            Dim estado As String
            Dim ubicacion As String
            catalogo = txtFiltrarCatalogo.Text
            marca = txtFiltrarMarca.Text
            modelo = txtFiltrarModelo.Text
            descripcion = txtFiltrarDescripcion.Text
            numeroSerie = txtFiltrarNumSerie.Text
            destino = txtFiltrarDestino.Text
            estado = txtFiltrarEstado.Text
            ubicacion = txtFiltrarUbicacion.Text

    si el usuario no carga nada en los campos

    If catalogo = "" And marca = "" And descripcion = "" And estado = "" And modelo = "" And numeroSerie = "" And destino = "" And ubicacion = "" Then

           "SELECT * FROM inventario"

    por ejemplo si el usuario solo carga el numero de catalogo y el destino:

                

    ElseIf catalogo <> "" And marca = "" And modelo = "" And descripcion <> "" And numeroSerie = "" And destino <> "" And estado = "" And ubicacion = "" Then

           "SELECT catalogo, marca , modelo , descripcion , numeroSerie , destino , estado , ubicacion FROM inventario WHERE catalogo = " & catalogo & " and destino = " & destino & ""

    End if

    mi duda es si hay una manera mas eficiente de realizar estos filtro porque sino tengo que pensar todas las combinaciones posibles y son mas de 50 y me va a quedar un código super largo. Desde ya muchas gracias


    • Editado paul221296 sábado, 20 de julio de 2019 15:24
    sábado, 20 de julio de 2019 15:23

Todas las respuestas

  • Hay un truco que es este:

    "Select * from inventario where (catalogo=@catalogo or @catalogo='') and (marca=@marca or @marca='') and ..."

    Después en los parámetros @catalog, @marca, etc le pasas todos los valores de los filtros. De esta manera, con una única sentencia logras aplicar todos los campos que estén rellenos, a la vez que ignora los que estén vacíos porque se cumple la segunda parte del correspondiente "or".

    sábado, 20 de julio de 2019 19:03
  • Hola paul221296, 

    Déjeme comentarle que puede hacer su código utilizando los métodos que usted quiera como lo está haciendo y como se hacia en la antigüedad con sólo operaciones lógicas, pero si usted se está introduciendo a la programación MVC o algún otro modelo en el cual usted va a utilizar SQL Server, SQL Server ya cuenta desde su primera versión con las instrucciones Join, Inner Join, Left Join, Group By, Exists Any, Insert into, etc.

    Le dejo el enlace a un tutorial sobre las instrucciones de SQL 

    https://www.w3schools.com/sql/default.asp

    Y además de las funciones de SQL Server

    https://www.w3schools.com/sql/sql_ref_sqlserver.asp

    Adicional le dejo la documentación para SQL Server 2017

    https://docs.microsoft.com/en-us/sql/sql-server/sql-server-technical-documentation?view=sql-server-2017

    Ahora realmente yo le recomendaría usar procedimientos almacenados o usar un vector o lista para almacenar los strings y recorrerlos usando un ciclo.

    Gracias por usar los foros de MSDN.
    Erick Rivera
     ____
    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.
    Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft. 
    Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.

    • Editado eRiver1 lunes, 22 de julio de 2019 3:06 Grámatica
    lunes, 22 de julio de 2019 3:02