‘ En respuesta a la pregunta de como añadir o modificar registros
‘ a una tabla de SQL con bindings sin DGV y al viejo estilo ADO.
‘
‘ Utilizaremos solo las columnas de Nombre y Telefono de la tabla ‘Shippers’
‘ Despues de insertar un nuevo registro, deberemos utilizar el boton
‘ de actualizar para que dichos cambios sean actualizados a la BD.
‘ En caso de modificacion solo necesitaremos llamar a la ‘actualizacion’
Imports System.Data
Imports System.Data.SqlClient
Public Class Form1
‘
‘Constructores para el acceso a la tabla ‘Shippers’ y 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 Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
‘
‘ Panel conteniendo los textbox para la entrada/modificacion
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 evento a las funciones de cada boton de control
AddHandler Retrocede.Click, AddressOf retroceder
AddHandler Avanza.Click, AddressOf Avanzar
AddHandler Insertar.Click, AddressOf Nuevo
AddHandler Actualizar.Click, AddressOf Actualizacion
‘
‘ Conexion, relleno y asignacion del enlace a 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
‘Crear un nuevo 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
End Class
Saludos,
Pep Lluis,