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

[0] Índice de Mensajes

Ir a la versión completa