En ocasion
es 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. | |














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.
Buen dia gustavo, gracias por tu comentario. Mira hoy o mañana subo un post con lo que deseas. Saludos.
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
Hola yeymi, que version de OBDC estas usando?
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
Gracias por tu comentario. Puedes pasar el codigo con el que muestras en el formulario? Para asi poderte guiar.
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
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.
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
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.
Hola Jose, que bien que hayas solucionado tu problema.
Saludos.
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
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
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