none
Como realizar un boton de buscar en Visual Studio con Access para varios datos RRS feed

  • Pregunta

  • ME PODRÍAN AYUDAR POR FAVOR 

    Buena tarde estimados compañeros,

    tengo una duda, necesito hacer una búsqueda avanzada en Access, tengo por separada el día, mes y año. Para hacer esto desde Visul Studio 2012 tengo el siguiente código

                consulta = "SELECT * FROM Invetario Where Día = '" & TextD.Text & "' WHERE Mes = '" & TextM.Text & "' WHERE Año = '" & TextA.Text & "'"
                adeptor = New OleDbDataAdapter(consulta, conexion)
                unit.Tables.Add("Invetario")
                adeptor.Fill(unit.Tables("Invetario"))
                DataBuscar.DataSource = unit.Tables("Invetario")

    Pero no me funciona, quisiera saber cuál es el error en la primera línea de código 

    jueves, 3 de diciembre de 2015 22:18

Respuestas

  • Por un lado la consulta no es correcta, entre las diferentes condiciones de la WHERE deberías utilizar el operador AND.

    También conviene evitar caracteres especiales como acentos y ñ en los nombres de los campos. Si aún así decides utilizarlos encierra los nombres de campos entre corchetes.

    Por otro lado conviene que te acostumbres siempre a usar parámetros en tus consultas. Las ventajas son múltiples (rendimiento, seguridad, claridad de código)

            consulta = "SELECT * FROM Invetario Where [Día] = ? AND Mes = ? AND [Año] = ?"
            Dim command As New OleDbCommand(consulta, conexion)
            command.Parameters.AddWithValue("Dia", TextD.Text)
            command.Parameters.AddWithValue("Mes", TextM.Text)
            command.Parameters.AddWithValue("Anio", TextA.Text)
            adeptor = New OleDbDataAdapter(consulta, conexion)
            unit.Tables.Add("Invetario")
            adeptor.Fill(unit.Tables("Invetario"))
            DataBuscar.DataSource = unit.Tables("Invetario")
    

    Tampoco es conveniente realizar consultas con SELECT *, procura siempre especificar los campos que deseas recuperar.


    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...

    • Marcado como respuesta luismizaba viernes, 4 de diciembre de 2015 0:11
    jueves, 3 de diciembre de 2015 23:19
  • Lo acabo de solucionar de esta manera:

    consulta = "SELECT * FROM Invetario Where Día = '" & TextD.Text & "' AND Mes = '" & TextM.Text & "' AND Año = '" & TextA.Text & "'"
                adeptor = New OleDbDataAdapter(consulta, conexion)
                unit.Tables.Add("Invetario")
                adeptor.Fill(unit.Tables("Invetario"))
                DataBuscar.DataSource = unit.Tables("Invetario")

    Muchas gracias por su ayuda


    • Marcado como respuesta luismizaba viernes, 4 de diciembre de 2015 0:11
    jueves, 3 de diciembre de 2015 23:51

Todas las respuestas

  • Por un lado la consulta no es correcta, entre las diferentes condiciones de la WHERE deberías utilizar el operador AND.

    También conviene evitar caracteres especiales como acentos y ñ en los nombres de los campos. Si aún así decides utilizarlos encierra los nombres de campos entre corchetes.

    Por otro lado conviene que te acostumbres siempre a usar parámetros en tus consultas. Las ventajas son múltiples (rendimiento, seguridad, claridad de código)

            consulta = "SELECT * FROM Invetario Where [Día] = ? AND Mes = ? AND [Año] = ?"
            Dim command As New OleDbCommand(consulta, conexion)
            command.Parameters.AddWithValue("Dia", TextD.Text)
            command.Parameters.AddWithValue("Mes", TextM.Text)
            command.Parameters.AddWithValue("Anio", TextA.Text)
            adeptor = New OleDbDataAdapter(consulta, conexion)
            unit.Tables.Add("Invetario")
            adeptor.Fill(unit.Tables("Invetario"))
            DataBuscar.DataSource = unit.Tables("Invetario")
    

    Tampoco es conveniente realizar consultas con SELECT *, procura siempre especificar los campos que deseas recuperar.


    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...

    • Marcado como respuesta luismizaba viernes, 4 de diciembre de 2015 0:11
    jueves, 3 de diciembre de 2015 23:19
  • Hombre muchas gracias por su sugerencia, acabo de copiarlo tal cual me lo dices y me sale el siguiente error

    An unhandled exception of type 'System.Data.OleDb.OleDbException' occurred in System.Data.dll

    Additional information: No se han especificado valores para algunos de los parámetros requeridos.

    En la línea 

    adeptor.Fill(unit.Tables("Invetario"))

    Muchas gracias compañero, espero que me sigas colaborando. :D

    jueves, 3 de diciembre de 2015 23:46
  • Lo acabo de solucionar de esta manera:

    consulta = "SELECT * FROM Invetario Where Día = '" & TextD.Text & "' AND Mes = '" & TextM.Text & "' AND Año = '" & TextA.Text & "'"
                adeptor = New OleDbDataAdapter(consulta, conexion)
                unit.Tables.Add("Invetario")
                adeptor.Fill(unit.Tables("Invetario"))
                DataBuscar.DataSource = unit.Tables("Invetario")

    Muchas gracias por su ayuda


    • Marcado como respuesta luismizaba viernes, 4 de diciembre de 2015 0:11
    jueves, 3 de diciembre de 2015 23:51