Cargar campos de BD Access en ComboBox
Un saludo programadores, creo me ausentado un poco con mis publicaciones. Sin embargo regreso con el mismo aliento para entregarles proyectos en VB2010 y es posible algunos en VB2012 que sean útiles en la creación de aplicaciones por Uds.
Como, dice el tema en esta entrada vamos a cargar los campos o columnas de una tabla en base de datos Access, primeramente les muestro una captura del diseño de mi proyecto:
Para ello haremos una clase para conectar la base de datos Access:
Clase:Conectar
Imports System.Data
Imports System.Data.OleDb
Public Class Conectar
Public Class ConectarBase
Public dt As DataTable
Public da As OleDbDataAdapter
Public fila As Integer
Public ds As New DataSet
Public Function Conectar(ByVal dirPath As String, ByVal tabla As String) As String
Dim sCnn As String = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & dirPath
' La cadena de selección
Dim sSel As String = tabla
' Comprobar si hay algún error
Try
' Crear un nuevo objeto del tipo DataAdapter
da = New OleDbDataAdapter(sSel, sCnn)
' Crear los comandos de insertar, actualizar y eliminar
Dim cb As New OleDbCommandBuilder(da)
' Como hay campos con caracteres especiales,
' al usarlos incluirlos entre corchetes.
cb.QuotePrefix = "["
cb.QuoteSuffix = "]"
' Asignar los comandos al DataAdapter
' (se supone que lo hace automáticamente, pero...)
' da.UpdateCommand = cb.GetUpdateCommand
da.InsertCommand = cb.GetInsertCommand
' da.DeleteCommand = cb.GetDeleteCommand
' Esta base de datos usa el ID con valores automáticos
' da.MissingSchemaAction = MissingSchemaAction.AddWithKey
dt = New DataTable
' Llenar la tabla con los datos indicados
da.Fill(dt)
Catch ex As Exception
MessageBox.Show("ERROR al conectar o recuperar los datos:" & vbCrLf & _
ex.Message, "Conectar con la base", _
MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
Return Conectar
End Function
End Class
Muy bien ahora la rutina cargar Combo:
Sub Cargarcombo()
Try
Dim contador As Integer = grid1.Rows.Count - 1
Dim ruta As String
Dim tab As String = "SELECT * FROM Tdata ORDER BY n"
ruta = System.AppDomain.CurrentDomain.BaseDirectory
ruta &= "\datac.mdb"
conex.Conectar(ruta, tab) 'direccion de la base de datos
' tabla = connex.dt
grid1.DataSource = conex.dt ' muestra la grid cargada
Dim i As Integer ' carga lo campos de la tabla de BDAccess en el combo
For i = 1 To conex.dt.Columns.Count - 1
ComboBox1.Items.Add(conex.dt.Columns(i).ColumnName.ToString)
Next
Catch ex As Exception
MessageBox.Show("ERROR al conectar o recuperar los datos:" & vbCrLf & _
ex.Message, "Conectar con la base", _
MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
Y por ultimo la codificacion en el form
Public conex As New Conectar.ConectarBase 'llama la clase Conectar
Dim datafila As DataRow
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Cargarcombo()
End Sub
Y mi captura:
Mi proyecto: https://docs.google.com/open?id=0B-UGWA03tc5ZMGVwOHk4VlNFZEE
Como, dice el tema en esta entrada vamos a cargar los campos o columnas de una tabla en base de datos Access, primeramente les muestro una captura del diseño de mi proyecto:
Para ello haremos una clase para conectar la base de datos Access:
Clase:Conectar
Imports System.Data
Imports System.Data.OleDb
Public Class Conectar
Public Class ConectarBase
Public dt As DataTable
Public da As OleDbDataAdapter
Public fila As Integer
Public ds As New DataSet
Public Function Conectar(ByVal dirPath As String, ByVal tabla As String) As String
Dim sCnn As String = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & dirPath
' La cadena de selección
Dim sSel As String = tabla
' Comprobar si hay algún error
Try
' Crear un nuevo objeto del tipo DataAdapter
da = New OleDbDataAdapter(sSel, sCnn)
' Crear los comandos de insertar, actualizar y eliminar
Dim cb As New OleDbCommandBuilder(da)
' Como hay campos con caracteres especiales,
' al usarlos incluirlos entre corchetes.
cb.QuotePrefix = "["
cb.QuoteSuffix = "]"
' Asignar los comandos al DataAdapter
' (se supone que lo hace automáticamente, pero...)
' da.UpdateCommand = cb.GetUpdateCommand
da.InsertCommand = cb.GetInsertCommand
' da.DeleteCommand = cb.GetDeleteCommand
' Esta base de datos usa el ID con valores automáticos
' da.MissingSchemaAction = MissingSchemaAction.AddWithKey
dt = New DataTable
' Llenar la tabla con los datos indicados
da.Fill(dt)
Catch ex As Exception
MessageBox.Show("ERROR al conectar o recuperar los datos:" & vbCrLf & _
ex.Message, "Conectar con la base", _
MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
Return Conectar
End Function
End Class
Muy bien ahora la rutina cargar Combo:
Sub Cargarcombo()
Try
Dim contador As Integer = grid1.Rows.Count - 1
Dim ruta As String
Dim tab As String = "SELECT * FROM Tdata ORDER BY n"
ruta = System.AppDomain.CurrentDomain.BaseDirectory
ruta &= "\datac.mdb"
conex.Conectar(ruta, tab) 'direccion de la base de datos
' tabla = connex.dt
grid1.DataSource = conex.dt ' muestra la grid cargada
Dim i As Integer ' carga lo campos de la tabla de BDAccess en el combo
For i = 1 To conex.dt.Columns.Count - 1
ComboBox1.Items.Add(conex.dt.Columns(i).ColumnName.ToString)
Next
Catch ex As Exception
MessageBox.Show("ERROR al conectar o recuperar los datos:" & vbCrLf & _
ex.Message, "Conectar con la base", _
MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
Y por ultimo la codificacion en el form
Public conex As New Conectar.ConectarBase 'llama la clase Conectar
Dim datafila As DataRow
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Cargarcombo()
End Sub
Y mi captura:
Mi proyecto: https://docs.google.com/open?id=0B-UGWA03tc5ZMGVwOHk4VlNFZEE
Comentarios
Publicar un comentario