Continuando con los remix, un antiguo pero recurrente ejemplo solicitado a menudo para enlazar datos a través de binding.
' Respondiendo a como añadir o modificar registros ' de una tabla de SQL con bindings y al viejo estilo ' ' Utilizaremos las columnas de Nombre y Teléfono ' de la tabla ‘Shippers’ ' Después de insertar un nuevo registro, usaremos el ' botón de actualizar para actualizar la BD. Imports System.Data Imports System.Data.SqlClient Public Class miContenedor ' 'Constructores para tabla ‘Shippers’ ' ...con su correspondiente BindingSource Private MiConexion As New SqlConnection(“Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Temp\Northwind\NORTHWND.MDF” + “;Integrated Security=True;Connect Timeout=30;User Instance=True”) Private MiDataSet As New DataSet() Private MiAdaptador As New SqlDataAdapter(“SELECT * FROM Shippers”, MiConexion) Private MiEnlazador As New BindingSource Private Sub Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load ' ' Panel con los textbox para la entrada/modificación Dim Nombre As New TextBox Dim Telefono As New TextBox Dim marcoDatos = New FlowLayoutPanel marcoDatos.Dock = DockStyle.Top marcoDatos.Controls.AddRange(New Control() {Nombre, Telefono}) Me.Controls.AddRange(New Control() {marcoDatos}) ' ' Panel conteniendo los botones de control Dim Avanza As New Button Dim Retrocede As New Button Dim Insertar As New Button Dim Actualizar As New Button Dim Controles As New FlowLayoutPanel Controles.Dock = DockStyle.Bottom Retrocede.Text = “<- Re” Avanza.Text = “Av ->” Insertar.Text = “Insertar” Actualizar.Text = “Actualizar” Controles.Controls.AddRange(New Control() {Retrocede, Avanza, Insertar, Actualizar}) Me.Controls.AddRange(New Control() {Controles}) ' ' Asignar el eventos a las funciones AddHandler Retrocede.Click, AddressOf retroceder AddHandler Avanza.Click, AddressOf Avanzar AddHandler Insertar.Click, AddressOf Nuevo AddHandler Actualizar.Click, AddressOf Actualizacion ' ' Conexión,relleno y asignacion del enlace al datos MiConexion.Open() MiAdaptador.Fill(MiDataSet) MiEnlazador.DataSource = MiDataSet.Tables(0) Dim Micommandbuilder As New SqlCommandBuilder(Me.MiAdaptador) ' ' Enlace de los TextBox a sus omologos en la tabla Dim EnlaceNombre As New Binding(“Text”, MiEnlazador, “CompanyName”) Nombre.DataBindings.Add(EnlaceNombre) Dim EnlaceDireccion As New Binding(“Text”, MiEnlazador, “Phone”) Telefono.DataBindings.Add(EnlaceDireccion) End Sub ' Avanzar un registro dentro del ‘recordset’ :-) Sub Avanzar() MiEnlazador.MoveNext() End Sub ' Retroceder un registro Sub retroceder() MiEnlazador.MovePrevious() End Sub 'Añadir un registro Sub Nuevo() MiEnlazador.AddNew() End Sub ' Actualizar el registro en curso o el recien creado Sub Actualizacion() MiEnlazador.EndEdit() MiAdaptador.Update(CType(Me.MiEnlazador.DataSource, DataTable)) End Sub
Saludos, Pep Lluis,