"sql" visual basic 2008 con textbox y data grid

Estoy trabajando en un proyecto en visual basic 2008. Mi pregunta es al siguiente:
Tengo un campo de texto y un combobox, el combobox me permite escoger los diferentes campos de la tabla, mientras que el textbox me permite ingresar el valor a buscar. Entonces, quiero que al consultar esos datos aparezcan en un datagird que se encuentra en el mismo formulario... Yo trabajado mediante clases, dentro de la clase esta la cadena de conexión a la base de datos y la consulta correspondiente.
Dejo la clase que manejo, y espero recibir cualquier ayuda o consejo al respecto, de antemano muchas gracias.
Imports Microsoft. VisualBasic
Imports System
Imports System. Data
Imports System. Data. OleDb
Public Class base_usuario
    Inherits datos ' una clase donde se manejan los metodos set y get.
    Public Function consultar() As System.Data.DataSet
        Dim ObjConn As System.Data.OleDb.OleDbConnection '//Se referencia un objeto ObjConn
        ObjConn = New System.Data.OleDb.OleDbConnection() '//Se instancia un objeto ObjConn
        Dim consulta As String '// se define un String  para manejar la sentencia SQL
        ObjConn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:/archivos de programa/dominio urbano/dominurba.accdb;Persist Security Info=False;"
        consulta = "SELECT * FROM Usuarios WHERE apellidos='" & Me.getapellido & "'" '// se pasa a la variable string la Sentencia SQL para consulta
        Dim objSql As System.Data.OleDb.OleDbDataAdapter '// se referencia un objeto ObjSql de la clase OleDbDataAdapter se utilizan para rellenar DataSet y actualizar el origen de datos.
        objSql = New System.Data.OleDb.OleDbDataAdapter(consulta, ObjConn) '//se instancia el objeto ObjSql que recibe dos parametros el String con la sentencia SQL y el objeto OleDbConnection
        Dim datos As System.Data.DataSet '// se referencia el objeto datos  de la clase Dataset que Representa una cach de memoria interna de datos.
        datos = New System.Data.DataSet() '// se instancia el objeto datos  de la clase Dataset
        objSql.Fill(datos, "tabladatos") '//Agrega filas a DataSet o las actualiza para hacerlas coincidir con las filas del origen de datos utilizando una tabla "tabladatos"
        ObjConn.Close()
        Return datos  'retorna el Nmero de filas agregadas o actualizadas correctamente
    End Function
End Class

1 Respuesta

Respuesta
1
Si aun no tienes la conexión entre el dataset y el datagrid, debes conectarlos mediante una propiedad del datagrid llamada data source.
Datagrid.datasource=dataset
De esa manera pasas los datos. Y para la consulta, pues en donde tienes la propiedad y le asignas el valos a Apellido, pues le pasa la caja de texto.
Persona.Apellido=textbox.text
Gracias por la ayuda, bueno, ya agregue lo que me arroja el dataset al datagrid, pero ahora me arroja un error, y no se porque, porque hacia antes consultas y me funcionaba bien... el error es en la linea:
objSql.Fill(datos, "tabladatos") 'No coinciden los tipos de datos en la expresión de criterios.
Y con este error quede loco je je, espero me puedas colaborar.
Gracias
Escríbeme la linea de código que usaste para enlazar el grid con el dataset. ¿Y la pregunta también es si quitando esa linea de código te sigue funcionando como antes o solo te marca el error con el enlace?
If Me.TextBox1.Text = "" Then
            MessageBox.Show("Introduzca Un Numero Cedula", "Advertencia", MessageBoxButtons.OK, MessageBoxIcon.Warning)
        Else
            Dim seleccionados As Integer 'variable tipo entero
            Dim tablaconsultada As System.Data.DataRow
            Dim Objconsultar As base_usuario = New base_usuario()
            Objconsultar.setcedula(TextBox1.Text)
            Dim datos As System.Data.DataSet
            datos = New System.Data.DataSet()
            datos = Objconsultar.consultar()
            seleccionados = datos.Tables("tabladatos").Rows.Count
            If seleccionados = 0 Then
                MsgBox("esta busqueda no arroja resultados", MsgBoxStyle.Information, "Atencion")
                Dim obj As Object
                For Each obj In Controls
                    If TypeOf obj Is TextBox Then
                        CType(obj, TextBox).Text = ""
                        CType(obj, TextBox).ReadOnly = False
                    End If
                Next
            Else
                DataGridView1.DataSource = datos
                MsgBox("Los Datos Fueron Consultados Correctamente", MsgBoxStyle.Information, "Directorio Digital")       
            End If
        End If
    End Sub
Acá esta el código que pongo en el botón de consultas, acá esta modificado para buscar por cedula, porque estaba haciendo pruebas haber si por algún lado me salia...
Ya encontré el porque del error en la consulta, tenia mal el tipo de datos que manejaba en el campo de la base de datos, por eso me arrojaba ese error... bueno, pero volviendo a mi duda inicial, ya cargue el dataset, pero aun no logro que se se vea en el datagrid... el código que utilizo es :
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        If Me.TextBox1.Text = "" Then
            MessageBox.Show("Introduzca Un Numero Cedula", "Advertencia", MessageBoxButtons.OK, MessageBoxIcon.Warning)
        Else
            Dim seleccionados As Integer 'variable tipo entero
            Dim Objconsultar As base_usuario = New base_usuario()
            Objconsultar.setcedula(TextBox1.Text)
            Dim datos As System.Data.DataSet '
            datos = New System.Data.DataSet()
            datos = Objconsultar.consultar() ' este dataset, toma los datos arrojados por la consulta en sql
            seleccionados = datos.Tables("tabladatos").Rows.Count
            If seleccionados = 0 Then
                MsgBox("esta busqueda no arroja resultados", MsgBoxStyle.Information, "Atencion")
            Else
                DataGridView1.DataSource = datos
                MsgBox("Los Datos Fueron Consultados Correctamente", MsgBoxStyle.Information, "Directorio Digital")
                TextBox1.ReadOnly = True
            End If
        End If
    End Sub
Bueno, ya se que hace la consulta bien y todo, pero no eh podido con ese detallito, no se que estará mal, muchas gracias por la ayuda y paciencia, ah sido de gran utilidad todo.
Si Pitágoras no miente, tu conexión al datagrid debería quedar así:
 DataGridView1.DataSource =  datos.Tables("tabladatos")

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas