none
Como realizo una búsqueda de registros en Visual Studio 2010 con Access 2010 bien hecha??

    Question

  • Hola, he intentado hacer una búsqueda de registros con visual studio 2010 y access 2010 y he visto algunos ejemplos en otras versiones sin embargo están un poco incompletos y no manejan algunas excepciones o son muy limitadas a la búsqueda, les dejo un poco del código que hice para ver en que se puede mejorar en cuanto a las excepciones como cuando no se encuentra o no existe el registro, o que vayan apareciendo los registros conforme se vaya escribiendo la palabra... O algunas mejoras que consideren adecuadas :S

      Shared Function selectSucursales(ByVal criterio As String, ByVal valor As String, ByVal con As OleDbConnection)
            Dim query As New StringBuilder
            query.Append("SELECT * FROM SUCURSAL WHERE ")

            Select Case criterio
                Case "ESTADO"
                    query.Append("SUCURSAL.ESTADO = '" + valor + "';")
                    '...
                Case "NOMBRE"
                    query.Append("SUCURSAL.NOMBRE = '" + valor + "';")
                    '...
            End Select
            MsgBox(query.ToString)
            Dim dA As New OleDbDataAdapter(query.ToString, con)
            Dim myDs As New DataTable
            dA.Fill(myDs)
            Return myDs

        End Function

    ''' Botón de busqueda

    Private Sub ToolStripButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsBtnBuscar.Click
            Try
                Dim dt As New DataTable
                dt = ClienteManager1.selectSucursales(tsCbxCriterio.Text, tsTxtValor.Text, con)
                CLIENTEDataGridView.DataSource = dt
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
        End Sub 

     
    Friday, August 03, 2012 2:22 AM

Answers

  • Hola Amigo:

    Te dejo un ejemplo de como realizar una consulta de selección a una Bd acces espero te sirva de guia:

    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
             Try
                Using cnx As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Ruta)
                    cnx.Open()
                    Dim SQlbuscar As String
                    SQlbuscar = "Select Campo1, Campo2 FROM Tu_tabla WHERE Campor_ID = @param_id"
                    Dim cmd As New OleDbCommand(SQlbuscar, cnx)
                    cmd.CommandType = CommandType.Text
                    cmd.Parameters.AddWithValue("@param_id", TextBoxid.Text)
                    Dim lectura As OleDbDataReader = cmd.ExecuteReader()
                    If lectura.Read = True Then
                        Textbox1.Text = CStr(lectura(0))
                        Textbox2.Text = CStr(lectura(1))
                    End If
                    cnx.Close()
                End Using
            Catch ex As Exception
                MessageBox.Show("Error : " + ex.Message + "", "¡Ocurrio el siguiente Error!", MessageBoxButtons.OK, MessageBoxIcon.Error)
            End Try
        End Sub

    Observa como se controla si llegase a ocurrir alguna excepcion por medio del bloque Try, Catch End Try...

    Suerte!


    Saludos desde Monterrey, N.L. México

    Luis Escobar :D


    Friday, August 03, 2012 2:54 AM
  • Hola amigo:

    Antes que nada, si las respuestas te son utiles te recomiendo que las votes como tal, y si la respuesta satisface tus necesidades te invito a Marcarla como respuesta, ya que esa misma respuesta podrias servirles a muchos otros mas...:D

    Ahora! si lo que quieres es mostrar el resultado de una busqueda en un control DataGridView  tendras que llenar un DataSet y establecer el Datasource del DataGridview con el DataSet....

    Te dejo un ejemplo de como deberia de ser tu codificacion:

    Using cnx As New OleDbConnection ("Tu cadena de conexion")
      Dim query As String = "Select * From Tu_tabla"
      Dim cmd As New OleDbCommand (query, cnx)
      Dim da As New OleDbDataAdapter(cmd)
      Dim dt As New DataTable()
      da.Fill(dt)
      DataGridView1.DataSource = dt
    End Usign

    Esto es para un DataGridView que no tiene definido sus columnas en tiempo de diseño...


    Saludos desde Monterrey, N.L. México

    Luis Escobar :D



    Wednesday, August 15, 2012 10:22 PM

All replies

  • Hola Amigo:

    Te dejo un ejemplo de como realizar una consulta de selección a una Bd acces espero te sirva de guia:

    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
             Try
                Using cnx As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Ruta)
                    cnx.Open()
                    Dim SQlbuscar As String
                    SQlbuscar = "Select Campo1, Campo2 FROM Tu_tabla WHERE Campor_ID = @param_id"
                    Dim cmd As New OleDbCommand(SQlbuscar, cnx)
                    cmd.CommandType = CommandType.Text
                    cmd.Parameters.AddWithValue("@param_id", TextBoxid.Text)
                    Dim lectura As OleDbDataReader = cmd.ExecuteReader()
                    If lectura.Read = True Then
                        Textbox1.Text = CStr(lectura(0))
                        Textbox2.Text = CStr(lectura(1))
                    End If
                    cnx.Close()
                End Using
            Catch ex As Exception
                MessageBox.Show("Error : " + ex.Message + "", "¡Ocurrio el siguiente Error!", MessageBoxButtons.OK, MessageBoxIcon.Error)
            End Try
        End Sub

    Observa como se controla si llegase a ocurrir alguna excepcion por medio del bloque Try, Catch End Try...

    Suerte!


    Saludos desde Monterrey, N.L. México

    Luis Escobar :D


    Friday, August 03, 2012 2:54 AM
  • y si la quiero que se muestre en un grid??

    :P

    Wednesday, August 15, 2012 10:05 PM
  • Hola amigo:

    Antes que nada, si las respuestas te son utiles te recomiendo que las votes como tal, y si la respuesta satisface tus necesidades te invito a Marcarla como respuesta, ya que esa misma respuesta podrias servirles a muchos otros mas...:D

    Ahora! si lo que quieres es mostrar el resultado de una busqueda en un control DataGridView  tendras que llenar un DataSet y establecer el Datasource del DataGridview con el DataSet....

    Te dejo un ejemplo de como deberia de ser tu codificacion:

    Using cnx As New OleDbConnection ("Tu cadena de conexion")
      Dim query As String = "Select * From Tu_tabla"
      Dim cmd As New OleDbCommand (query, cnx)
      Dim da As New OleDbDataAdapter(cmd)
      Dim dt As New DataTable()
      da.Fill(dt)
      DataGridView1.DataSource = dt
    End Usign

    Esto es para un DataGridView que no tiene definido sus columnas en tiempo de diseño...


    Saludos desde Monterrey, N.L. México

    Luis Escobar :D



    Wednesday, August 15, 2012 10:22 PM
  • Ahh Gracias, es que como la propusiste intente hacerla pero con la diferencia que se muestre en el DataGrid y no me queda, no se si puedas ser un poco más especifico ya que la respuesta anterior a esta es para que se muestre en 2 textbox y si la quisiera en el DataGrid, y si  uso Catch ex As Exception MessageBox.Show(ex.Message)sin embargo quería evitar usarlo poniendo una búsqueda más completa.

    :P

    Wednesday, August 15, 2012 10:43 PM
  • Hola:

    Aque te refieres con una busqueda mas completa?

    Te arrojo algun error?

    si la quisiera en el DataGrid

    Precisamente la respuesta anterior es para que te muestre el resultado en una control DataGridView, solo que la consulta es muy generica "Select * From", osea que no define campos especificos de la tabla, pero esto esta muy lejos  a lo que preguntas en un principio...

    Si lo que quieres es filtar por medio de parametros tendras que adaptar este codigo a lo que te proporcione en la primer respuesta que seria unicamente rediseñar la consulta "Select * From tabla Where campo = @param"

    y luego estableces el parametro:

    cmd.Parameters.AddWithValue("@param", TextBox1.Text)

    Aunque sigo conservando la duda de que es una busque mas completa?


    Saludos desde Monterrey, N.L. México

    Luis Escobar :D


    • Edited by Luis_Escobar Wednesday, August 15, 2012 10:59 PM
    Wednesday, August 15, 2012 10:58 PM
  • Antes que nada gracias por tu paciencia  y disculpa XD, por ejemplo tengo un combobox donde el usuario seleccionara el criterio de búsqueda, es decir, por nombre, estado, id, etc.. y textbox donde el usuario debería ingresar ya sea el nombre de la persona, estado, entre otros, como se muestra en mi codigo anterior. La búsqueda se puede hacer más general con un SELECT Count(*) FROM, te comentaba que lo hice como lo habías mostrado sustituyendo por completo mi código, y si me arroja un error en da.Fill(dt) y en cuanto a más completa pudiere ser que aunque el usuario escriba mal el nombre o el estado ya que a veces están escritos diferentes a lo común, la búsqueda te pueda mostrar un opcional similar a lo que escribiste en la búsqueda.

    :P

    Wednesday, August 15, 2012 11:22 PM