CLR: .Net / Mono / Boo / Otros CLR > VB .NET
Base De Datos Access
(1/1)
_irega_:
Buenas. He hecho mediante Access un archivo .mdb para utilizarlo como base de datos en mi programa. He realizado la conexion a la base de datos y me ha cojido correctamente todas las columnas de la base de datos. Luego he creado un DataSet con tipo el creado anteriormente en la conexion. El problema que tengo es que utilizo el metodo Count de la propiedad Rows del DataSet y no me reconoce ninguna fila, cuando mediante Access he introducido dos manualmente. Las columnas las lee perfectamente, ¿donde puede estar el problema? Un saludo!
Kev:
Revisa si estas referenciando a la tabla correcta dentro del dataset
Salu2
:comp:
_irega_:
Al final lo he solucionado haciendo todas las conexiones a la BD por codigo, sin utilizar para nada la interfaz grafica del Visual Studio. Todo ese codigo lo he simplificado en una clase llamada BaseDatos que tiene el siguiente codigo de momento (faltaria añadir varios metodos seguramente para un funcionamiento completo)
--- Código: Text ---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 FunctionEnd Class
Navegación
Ir a la versión completa