Imports System.Data.OleDb
Public Class BaseDatos
' Tabla a la que asignaremos los datos de la tabla de la base de datos
Private dt As DataTable
' El adaptador que nos permitira acceder a la base de datos, para leer los
' datos y actualizarlos.
Private da As OleDbDataAdapter
' La cadena de conexión
Private sCnn As String
' La cadena de selección
Private sSel As String
' Para generar las instrucciones SQL
Private cb As OleDbCommandBuilder
Public Sub New()
'
End Sub
Public Sub New(ByVal datosSource As String)
' Comprobamos si el archivo existe
If System.IO.File.Exists(datosSource) = False Then
Throw New Exception("La base de datos no existe")
End If
Me.sCnn = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & datosSource
Me.sSel = "SELECT * FROM Cuentas ORDER BY ID"
Me.PrepararBD(Me.da, Me.cb, Me.dt, Me.sCnn, Me.sSel)
End Sub
Public Sub CambiarTabla(ByVal tabla As String)
Me.sSel = "SELECT * FROM " & tabla & " ORDER BY ID"
Me.PrepararBD(Me.da, Me.cb, Me.dt, Me.sCnn, Me.sSel)
End Sub
Private Sub PrepararBD(ByRef dataAdapter As OleDbDataAdapter, _
ByRef cbuilder As OleDbCommandBuilder, _
ByRef dataTable As DataTable, ByVal sConnect As String, _
ByVal sSelect As String)
' Crear un nuevo objeto del tipo DataAdapter
dataAdapter = New OleDbDataAdapter(sSelect, sConnect)
' Crear los comandos de insertar, actualizar y eliminar
cbuilder = New OleDbCommandBuilder(dataAdapter)
' Como hay campos con caracteres especiales,
' al usarlos incluirlos entre corchetes.
' (para vocales acentuadas por ejemplo)
cbuilder.QuotePrefix = "["
cbuilder.QuoteSuffix = "]"
' Asignar los comandos al DataAdapter
' (se supone que lo hace automáticamente, pero...)
dataAdapter.UpdateCommand = cbuilder.GetUpdateCommand
dataAdapter.InsertCommand = cbuilder.GetInsertCommand
dataAdapter.DeleteCommand = cbuilder.GetDeleteCommand
' Esta base de datos usa el ID con valores autonumericos
dataAdapter.MissingSchemaAction = MissingSchemaAction.AddWithKey
dataTable = New DataTable
' Llenar la tabla con los datos indicados
dataAdapter.Fill(dataTable)
End Sub
Public Function TablaActual() As String
Return Me.dt.TableName.ToString
End Function
Public Function Total() As Integer
Return Me.dt.Rows.Count
End Function
Public Function Consulta(ByVal fila As Integer, ByVal columna As String) As String
Return Me.dt.Rows(fila - 1)(columna).ToString
End Function
End Class