Introducir datos desde un textbox a una base access en vb.net

La idea basica es utilizar un 'bindingsource' y un commandbuilder para tu adataptador de datos, a partir de este concepto es tan simple como añadir un 'datarow' o registro a tu tabla de datos 'datatable' cada vez que pulsamos 'enter' y la longitud de los datos introducidos es mayor de cero. Posteriormente para actualizar o añadir los registros del 'datatable' a la BD de access utilizaremos el mandato 'update' (al pulsar un boton en nuestro caso), o asociado al momento que consideres oportuno.

Puedes descargarte este ejemplo haciendo click en 'attachments'

Imports System.Data.OleDb
Imports System.Data.DataRow

Public Class Form1
 
Private MiConexion As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\bd1.mdb")
 
Private MiAdaptador As New OleDbDataAdapter("SELECT * FROM Nombres", MiConexion)
 
Private MiDataSet As New DataSet()
 
Private MiEnlazador As New BindingSource

  Private Sub Form1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Me.KeyPress
   
If (e.KeyChar = Chr(Keys.Enter)) And (Me.TextBox1.Text.Length > 0) Then
     
Dim nombre As DataRow
      nombre = MiDataSet.Tables(0).NewRow()
      nombre(
"Nombre") = TextBox1.Text
      MiDataSet.Tables(0).Rows.Add(nombre)
     
Me.TextBox1.Text = ""
     
Me.ComboBox1.SelectedIndex = Me.ComboBox1.Items.Count – 1
   
End If
 
End Sub

  Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
   
Dim commandbuilder As New OleDb.OleDbCommandBuilder(Me.MiAdaptador)
    MiConexion.Open()
    MiAdaptador.Fill(MiDataSet)
    MiEnlazador.DataSource = MiDataSet.Tables(0)
   
Me.ComboBox1.DataSource = MiEnlazador
   
Me.ComboBox1.DisplayMember = "Nombre"
   
Me.ComboBox1.ValueMember = "Id"
   
Me.TextBox1.Select()
 
End Sub

  Private Sub Guardar(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
   
Me.MiAdaptador.Update(CType(Me.MiEnlazador.DataSource, DataTable))
 
End Sub

Espero que sea de tu utilidad.
Pep Lluis,

7 Replies to “Introducir datos desde un textbox a una base access en vb.net”

  1. Me fue de gran ayuda para unas cosas q tenia pensado ojala me puedas ayudar en algunas otras cosas mas vere que mas puedo ver jejeje y tomar para un proyecto

  2. Me fue de mucha ayuda… lo unico es que estoy teniendo problemass para agregar otro textbox.. son textos en 3 textbox, 1 datetimepicker y 1 combobox….
    pero ya probe con solo 2 textbox.. y me agrega 2 rows en el access.. en vez de solo una.
    pero gracias!
    logre ya mucho! de lo que no podia

  3. Hola tengo el siquiente codigo que lo armé basandome en el ejemplo de este post y la verdad que no me tira ningún error pero tampoco me graba la base de datos.
    Alguien me podría decir que es lo que tengo mal o lo que me falta para que me grabe los datos en la base de datos.
    Desde ya muchas gracias.
    Aca les dejo el código

    Public cn As New OleDbConnection(String.Format(“Provider=Microsoft.jet.OLEDB.4.0; Data Source=” + My.Application.Info.DirectoryPath + “\Sueldos y Jornales.mdb;”))

    Private da As New OleDbDataAdapter(“SELECT * FROM EMPLEO”, cn)
    Private bs As New BindingSource

    Private Sub BotonGrabarEmpleo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BotonGrabarEmpleo.Click
    Dim ds As New DataSet
    da.Fill(ds)
    bs.DataSource = ds.Tables(0)
    Dim dr As DataRow
    dr = ds.Tables(0).NewRow()
    dr(“APELLIDO”) = Nuevo_Empleado.TextBoxApellidoEmpleado.Text
    dr(“NOMBRE”) = Nuevo_Empleado.TextBoxNombreEmpleado.Text
    dr(“CONVENIO”) = ComboBoxConvenioEmpleado.Text
    dr(“CATEGORIA”) = ComboBoxCategoriaEmpleado.Text
    dr(“FECHA_INGRESO”) = DateTimePicker1.Text
    If DateTimePicker2.Text < "31/12/3000" Then dr("FECHA_EGRESO") = DateTimePicker2.Text End If Dim Tipo_de_Liquidacion As String If RaBotonJoranlizadoEmpleado.Checked = True Then Tipo_de_Liquidacion = "Jornalizado" Else Tipo_de_Liquidacion = "Mensualizado" End If dr("TIPO_DE_LIQUIDACION") = Tipo_de_Liquidacion Dim Legajo_Interno As String Legajo_Interno = Nuevo_Empleado.TextBoxLegajoEmpleado.Text + " / " + Trim(Str(Val(ComboBoxConsorcioEmpleado.Text))) dr("LEGAJO_INTERNO") = Legajo_Interno dr("CONSORCIO") = ComboBoxConsorcioEmpleado.Text dr("FUNCION") = ComboBoxFuncionEmpleado.Text ds.Tables(0).Rows.Add(dr) Me.da.Update(CType(Me.bs.DataSource, DataTable)) If DateTimePicker2.Text < "31/12/3000" And ComboBoxConvenioEmpleado.SelectedIndex = 1 Then If MsgBox("Desea Imprimir la Carta de Aviso de Suplencia para el Consorcio", MsgBoxStyle.YesNo, "Cartas Suplencia") = MsgBoxResult.Yes Then Cartas_Suplencia.Show() End If End If Me.Close() End Sub

Leave a Reply to juanmtrejog@gmail.com Cancel reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.