Enlazar un DataGridView a una Base de Datos (con Asistente)

Nota Vista 24.726 Veces

En ocasiones podemos usar e lasistente para enlazar nuestro DataGridView con una base de datos, para esto vamos a usar una forma y arrastrar un DatagridView.

 

Ahora que tenemos nuestro datagrid hacemos clic en la esquina superior derecha y desplegamos las funciones rápidas,y hacemos clic en elegir origen de datos y hacemos clic en Agregar origen de datos al proyecto.

Ahora seleccionamos Base de Datos.

Seleccionamos una cadena de conexión o creamos una nueva en este ejemplo se conecta a una BD MySQL.

Salvamos la cadena de conexión.

Una vez terminamos el proceso del connectionstring podremos seleccionar la tabla que queremos enlazar a nuestro datagrid.

Damos clic en finalizar y automáticamente nos generara un table adapter, un binding Source y un dataset que nos cargara el datagridview.

En el evento load de la forma generara el siguiente código.

Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load 'TODO: esta línea de código carga datos en la tabla 'HmsDataSet.countries' Puede moverla o quitarla según sea necesario. Me.CountriesTableAdapter.Fill(Me.HmsDataSet.countries) End Sub

Por ultimo ejecutamos el proyecto y obtendremos nuestra grilla con los datos.

   
Seleccionamos una cadena de conexion o creamos una nueva.
Rolyn Gamez Rolyn Gamez (9 Posts)

Gerente Propietario de DataTech Solutions S. de R.L. con los siguientes servicios: * Venta y Reparación de Computadoras de todo tipo (portátiles, escritorio, servidores). * Venta de Impresoras de todo tipo (Laser, Inyeccion de Tinta, Matriciales, Multifuncionales). * Venta de Copiadoras segun el presupuesto del cliente (optando a adquirirla a plazos directamente con el proveedor). * Trabajos Secretariales * Diseño Gráfico * Creación y Mantenimiento de Redes Informáticas * Desarrollo de Software a su medida. * Implementación de Software Empresarial, Administrativo, Contable, etc.



15 Responses

  1. gustavo radas dice:

    hola, me parece muy clara la explicación, me salió todo bien, ahora no se si por aqui sea el medio correcto pero necesito mucho conseguir esta función:

    Lo que quiero hacer es un buscador que efectúe una búsqueda dentro de una tabla de mi base de datos que utilice un TEXTBOX y un DATAGRID, pero que busque conforme voy escribiendo, sin necesidad de hacer clic en el botón buscar. (ejemplo: quiero buscar el registro “ADMISION” pero basta con que escriba “ADM” para que me aparezcan todos los registros que contengan esas tres letras.)

    espero me puedan ayudar. llevo dias buscando la forma y no la encuentro. saludos y muchas gracias.

  2. Rolyn Gamez Rolyn Gamez dice:

    Buen dia gustavo, gracias por tu comentario. Mira hoy o mañana subo un post con lo que deseas. Saludos.

  3. yeymi dice:

    me quedo clara la explicacion pero tengo un inconveniente no puedo ver las tablas de mi base de datos.. me podrias decir porque utilizo mysql pero a la hora de crear la nueva conexion utilizo Origen de datos de Microsoft ODBC (ODBC) porque no me aparece el conecto

  4. José dice:

    Es muy clara tu explicación y ya pude ver la información en el data grid, sin embargo cuando realizo un alta y posteriormente consulto la tabla esta no se actualiza en automatico, me podrías decir como puedo hacer que se actualice??? este grid esta en otra form y me sirve para hacer consulta de los registros dados de alta.

    Saludos y muchas gracias

  5. José dice:

    Las alta y actualizaciones las hago directamente con código en sql:

    conexion.ConnectionString = SC
    conexion.Open()

    Cve = ComboBox1.SelectedValue.ToString.Trim +
    TextBox1.Text.Trim + “0″ + TextBox2.Text.Trim

    consulta = “Insert Into TGrupo (CveGrupo, CvePE, Semestre, Seccion) Values (‘” & Cve & “‘, ‘” & ComboBox1.SelectedValue.ToString.Trim & “‘,’” & TextBox1.Text.Trim & “‘, ‘” & TextBox2.Text.Trim & “‘)”

    cmd.CommandType = CommandType.Text
    cmd.CommandText = consulta
    cmd.Connection = conexion
    cmd.ExecuteNonQuery()

    Pero tengo otra form en la cual uso un datagrid para mostrar los grupos dados de alta, esto lo hago enlazando la base de datos directamente con el datagrid como tu lo haces en esta publicación, pero claro como inserto con instrucción en sql no se si deba actualizar algo para que se pueda actualizar la información del datagrid ya que solo aparece la información hasta antes de actualizar o agregar.

    Saludos y muchas gracias

    • Rolyn Gamez Rolyn Gamez dice:

      Buen día, si al parecer el Alta esta bien no veo ningún problema. EL problema puede ser en el DataGrid, prueba lo siguiente, da de Alta un registro, pero sin antes abrir el formulario donde consultas una vez que lo agregas consultas el formulario y mira si agrego si te lo muestra si puede ser problema de actualización. Y seria recomendable que llenaras el Datagrid Manual.

  6. José dice:

    Negativo, realice el alta sin consultar la forma donde esta el datagrid, y cuando consulte para ver si se había dado de alta me mostró la información, pero sin el registro que había dado de alta, ves que en automático nos carga un table adapter, un binding Source y un dataset, hay la posibilidad de actualizarlos a ellos porque ya actualice el datagrid, pero nada de eso me ha funcionado.

    Si no hay forma lo haré manualmente, saludos y muchas gracias

  7. José dice:

    Hola Rolyn, te comento que ya solucione mi problema, cuando agredo a la base de datos le agrege la siguiente linea:

    FCG.TGrupoTableAdapter.Insert(cve, ComboBox1.SelectedValue.ToString.Trim, TextBox1.Text.Trim, TextBox2.Text.Trim)

    yo pensé que me iba a duplicar el registro en la base de datos pero no, solo lo agrega temporalmente y con esto logre que se pudiera ver en el grid.

    Muchas gracias de todos modos y este muy bien la información de esta pagina saludos.

  8. graciela dice:

    Hola tengo un problema con los datagriew y la DB que no me aparece la informacion cuando presiono el boton buscar quisiera saber si me puedes ayudar

  9. graciela dice:

    Hola aqui temando los codigos haber si me puedes ayudar, no encuentro la falla o lo que me falte.

    este es el form de dar de alta a un producto
    Imports System.Text.RegularExpressions
    Imports Entity
    Imports Domain

    Public Class FrmAltaProducto
    Implements IModificarProducto
    Private d_Producto As Producto

    Private Sub LimpiarCampos()

    TbNombre.Clear()
    TbDescripcion.Clear()
    TbMarca.Clear()
    TbPrecio.Clear()
    TbStock.Clear()
    TbTipo.Clear()
    TbCantidad.Clear()
    End Sub

    Private Sub HabilitarCampos()

    TbNombre.Enabled = True
    TbDescripcion.Enabled = True
    TbMarca.Enabled = True
    TbPrecio.Enabled = True
    TbStock.Enabled = True
    TbTipo.Enabled = True
    TbCantidad.Enabled = True

    BtnGuardar.Enabled = True
    BtnCancelar.Enabled = True

    End Sub

    Public Sub Desactivar()

    TbNombre.Enabled = False
    TbDescripcion.Enabled = False
    TbMarca.Enabled = False
    TbNombre.Enabled = False
    TbPrecio.Enabled = False
    TbTipo.Enabled = False
    TbCantidad.Enabled = False
    TbStock.Enabled = False
    BtnGuardar.Enabled = False
    BtnCancelar.Enabled = False

    End Sub

    Private Function ValidarCampos() As Boolean
    If TbDescripcion.Text.Trim = “” Then
    MessageBox.Show(“Por favor, Ingrese la descripcion.”)
    TbDescripcion.Focus()
    Exit Function
    End If
    If TbNombre.Text.Trim = “” Then
    MessageBox.Show(“Por favor, Ingrese el Nombre.”)
    TbNombre.Focus()
    Exit Function
    End If
    If TbMarca.Text.Trim = “” Then
    MessageBox.Show(“Por favor, Ingrese la marca del producto.”)
    TbMarca.Focus()
    Exit Function
    End If
    If TbPrecio.Text.Trim = “” Then
    MessageBox.Show(“Por favor, Ingrese el precio del producto.”)
    TbPrecio.Focus()
    Exit Function
    End If
    If TbTipo.Text.Trim = “” Then
    MessageBox.Show(“Por favor, Ingrese tipo de producto.”)
    TbTipo.Focus()
    Exit Function
    End If
    If TbCantidad.Text.Trim = “” Then
    MessageBox.Show(“Por favor, Ingrese la cantidad de producto.”)
    TbCantidad.Focus()
    Exit Function
    End If
    If TbStock.Text.Trim = “” Then
    MessageBox.Show(“Por favor, Ingrese el stock del producto.”)
    TbStock.Focus()
    Exit Function
    End If

    Return True
    End Function

    Public Sub ValidarLetras(ByVal e As System.Windows.Forms.KeyPressEventArgs)
    If Char.IsLetter(e.KeyChar) Then
    e.Handled = False
    ElseIf Char.IsControl(e.KeyChar) Then
    e.Handled = False
    ElseIf Char.IsSeparator(e.KeyChar) Then
    e.Handled = False
    Else
    e.Handled = True
    End If
    End Sub

    Public Sub ValidarNumeros(ByVal e As System.Windows.Forms.KeyPressEventArgs)
    If Char.IsDigit(e.KeyChar) Then
    e.Handled = False
    ElseIf Char.IsControl(e.KeyChar) Then
    e.Handled = False
    Else
    e.Handled = True
    End If

    End Sub

    Public Sub Changeproducto(ByVal p_Producto As Producto) Implements IModificarProducto.ChangeProducto

    TbNombre.Text = p_Producto.nombre
    TbMarca.Text = p_Producto.Marca
    TbDescripcion.Text = p_Producto.Descripcion
    TbTipo.Text = p_Producto.Tipo
    TbPrecio.Text = p_Producto.Precio
    TbStock.Text = p_Producto.Stock
    TbCantidad.Text = p_Producto.Cantidad

    End Sub

    Private Sub BtnCancelar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnCancelar.Click
    If MsgBox(“Esta seguro que desea salir? Se perderan los Datos”, MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then
    Me.Close()
    End If
    End Sub

    Public Sub BtnGuardar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnGuardar.Click
    If ValidarCampos() = True Then

    Dim DomainProductos As New DomianProductos

    d_Producto = New Producto
    d_Producto.nombre = TbNombre.Text.ToString()
    d_Producto.Marca = TbMarca.Text.ToString()
    d_Producto.Descripcion = TbDescripcion.Text.ToString()
    d_Producto.Tipo = TbTipo.Text.ToString()
    d_Producto.Precio = Int32.Parse(TbPrecio.Text.ToString())
    d_Producto.Stock = Int32.Parse(TbStock.Text.ToString())
    d_Producto.Cantidad = Int32.Parse(TbCantidad.Text.ToString())
    d_Producto.PActivo = 1

    DomainProductos.usp_altaproducto(d_Producto)

    MsgBox(“El producto ingresado se ha guardado correctamente”)
    Me.Close()

    End If

    End Sub

    Private Sub TbNombre__KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TbNombre.KeyPress
    ValidarLetras(e)
    If Asc(e.KeyChar) = 13 Then
    TbMarca.Focus()
    End If
    End Sub

    Private Sub TbMarca__KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TbMarca.KeyPress
    ValidarLetras(e)
    If Asc(e.KeyChar) = 13 Then
    TbDescripcion.Focus()
    End If
    End Sub

    Private Sub TbDescripcion__KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TbDescripcion.KeyPress
    ValidarLetras(e)
    If Asc(e.KeyChar) = 13 Then
    TbTipo.Focus()
    End If
    End Sub
    Private Sub TbTipo__KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TbTipo.KeyPress
    ValidarLetras(e)
    If Asc(e.KeyChar) = 13 Then
    TbPrecio.Focus()
    End If
    End Sub
    Private Sub TbPrecio__KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TbPrecio.KeyPress
    ValidarNumeros(e)
    If Asc(e.KeyChar) = 13 Then
    TbStock.Focus()
    End If
    End Sub
    Private Sub TbStock__KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TbStock.KeyPress
    ValidarNumeros(e)
    If Asc(e.KeyChar) = 13 Then
    TbCantidad.Focus()
    End If
    End Sub
    Private Sub TbCantidad__KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TbCantidad.KeyPress
    ValidarNumeros(e)
    If Asc(e.KeyChar) = 13 Then
    BtnGuardar.Focus()
    End If
    End Sub

    Private Sub FrmAltaProducto_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    End Sub
    End Class

  10. graciela dice:

    Hola aqui te mando los codigos de modificar que es donde no me aparece los datos en la grilla.

    Imports System.Data.SqlClient
    Imports Entity
    Imports Domain

    Public Class FrmModificarProducto

    Private Alta As FrmAltaProducto
    Private producto As Producto

    Private Sub Habilitar()
    TbIdProd.ReadOnly = True
    TBNombreProducto.ReadOnly = True
    End Sub

    Private Sub Limpiar()
    TbIdProd.Clear()
    TBNombreProducto.Clear()
    End Sub

    Private Sub Buscar()

    Dim lstProducto As New List(Of Producto)
    Dim pProducto As New Producto
    Dim DomaninProducto As New DomianProductos

    pProducto.ID = IIf(Me.TbIdProd.Text = “”, 0, TbIdProd.Text)
    pProducto.nombre = Trim(Me.TBNombreProducto.Text)
    lstProducto = DomaninProducto.usp_obtenerProducto(pProducto)

    DtProducto.DataSource = lstProducto
    DtProducto.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells

    End Sub

    Public Sub Datos()

    For Each fila As DataRowView In DtProducto.Rows
    FrmAltaProducto.TbDescripcion.Text = fila.Item(1).ToString
    FrmAltaProducto.TbMarca.Text = fila.Item(2).ToString
    FrmAltaProducto.TbNombre.Text = fila.Item(3).ToString
    FrmAltaProducto.TbPrecio.Text = fila.Item(4).ToString
    FrmAltaProducto.TbTipo.Text = fila.Item(5).ToString
    FrmAltaProducto.TbCantidad.Text = fila.Item(6).ToString
    FrmAltaProducto.TbStock.Text = fila.Item(7).ToString

    Next

    End Sub

    Private Sub OrdenarCol()

    With DtProducto
    .Columns(“ID”).DisplayIndex = 0
    .Columns(“Descripcion”).DisplayIndex = 1
    .Columns(“Marca”).DisplayIndex = 2
    .Columns(“Nombre”).DisplayIndex = 3
    .Columns(“Precio”).DisplayIndex = 5
    .Columns(“Tipo”).DisplayIndex = 6
    .Columns(“Cantidad”).DisplayIndex = 7
    .Columns(“Stock”).DisplayIndex = 8
    End With

    End Sub

    Private Sub Modificar()

    If DtProducto.Rows.Count = 0 Then
    MsgBox(“Por Favor Seleccione un Producto”)
    Exit Sub
    End If

    Dim modificarProducto As IModificarProducto = CType(FrmAltaProducto, IModificarProducto)

    Dim pProducto As New Producto
    Dim row As DataGridViewRow

    row = DtProducto.CurrentRow
    producto = TryCast(row.DataBoundItem, Producto)

    pProducto = (producto)
    modificarProducto.ChangeProducto(pProducto)
    FrmAltaProducto.Show()
    End Sub

    Private Sub Modificar(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnModificar.Click
    Modificar()
    End Sub

    Private Sub BtnBuscar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnBuscar.Click
    Buscar()
    End Sub

    Private Sub btnEliminar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnEliminar.Click

    If DtProducto.Rows.Count = 0 Then
    MsgBox(“Por Favor Seleccione un producto”)
    Exit Sub
    End If

    Dim row As DataGridViewRow
    row = DtProducto.CurrentRow
    eliminarproducto(TryCast(row.DataBoundItem, Producto))
    MsgBox(“El producto se ha Eliminado”)
    Me.Close()

    End Sub

    Private Sub eliminarproducto(ByVal pProducto As Producto)
    Dim ProductoDomain As New DomianProductos

    pProducto.PActivo = 0
    ProductoDomain.usp_altaproducto(pProducto)

    End Sub

    Private Sub FrmModificarCli_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    End Sub
    End Class

  11. jorge alfredo perez ruiz dice:

    me ayudo mucho bro gracias por postearlo

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

*

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

© VB-MUNDO – Visual Basic y mucho más
CyberChimps