• Viernes 26 de Abril de 2024, 22:09

Autor Tema:  Base De Datos Access  (Leído 2290 veces)

_irega_

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Base De Datos Access
« en: Domingo 30 de Septiembre de 2007, 23:27 »
0
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

  • Miembro HIPER activo
  • ****
  • Mensajes: 654
    • Ver Perfil
Re: Base De Datos Access
« Respuesta #1 en: Lunes 1 de Octubre de 2007, 19:53 »
0
Revisa si estas referenciando a la tabla correcta dentro del dataset

Salu2

 :comp:
La teoria es asesinada tarde o temprano por la experiencia
Albert Einstein
Kev - 3 DCE
-----------------------------------------------------
Articulos:
Convertir texto a imagen en ASP.NET
Trabajando con el Global.asax

_irega_

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: Base De Datos Access
« Respuesta #2 en: Martes 2 de Octubre de 2007, 13:26 »
0
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
  1. Imports System.Data.OleDb
  2.  
  3. Public Class BaseDatos
  4.     ' Tabla a la que asignaremos los datos de la tabla de la base de datos
  5.     Private dt As DataTable
  6.     ' El adaptador que nos permitira acceder a la base de datos, para leer los
  7.     ' datos y actualizarlos.
  8.     Private da As OleDbDataAdapter
  9.     ' La cadena de conexión
  10.     Private sCnn As String
  11.     ' La cadena de selección
  12.     Private sSel As String
  13.     ' Para generar las instrucciones SQL
  14.     Private cb As OleDbCommandBuilder
  15.  
  16.     Public Sub New()
  17.         '
  18.     End Sub
  19.  
  20.     Public Sub New(ByVal datosSource As String)
  21.         ' Comprobamos si el archivo existe
  22.         If System.IO.File.Exists(datosSource) = False Then
  23.             Throw New Exception("La base de datos no existe")
  24.         End If
  25.  
  26.         Me.sCnn = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & datosSource
  27.         Me.sSel = "SELECT * FROM Cuentas ORDER BY ID"
  28.         Me.PrepararBD(Me.da, Me.cb, Me.dt, Me.sCnn, Me.sSel)
  29.     End Sub
  30.  
  31.     Public Sub CambiarTabla(ByVal tabla As String)
  32.         Me.sSel = "SELECT * FROM " & tabla & " ORDER BY ID"
  33.         Me.PrepararBD(Me.da, Me.cb, Me.dt, Me.sCnn, Me.sSel)
  34.     End Sub
  35.  
  36.     Private Sub PrepararBD(ByRef dataAdapter As OleDbDataAdapter, _
  37.                             ByRef cbuilder As OleDbCommandBuilder, _
  38.                             ByRef dataTable As DataTable, ByVal sConnect As String, _
  39.                             ByVal sSelect As String)
  40.  
  41.         ' Crear un nuevo objeto del tipo DataAdapter
  42.         dataAdapter = New OleDbDataAdapter(sSelect, sConnect)
  43.         ' Crear los comandos de insertar, actualizar y eliminar
  44.         cbuilder = New OleDbCommandBuilder(dataAdapter)
  45.         ' Como hay campos con caracteres especiales,
  46.         ' al usarlos incluirlos entre corchetes.
  47.         ' (para vocales acentuadas por ejemplo)
  48.         cbuilder.QuotePrefix = "["
  49.         cbuilder.QuoteSuffix = "]"
  50.         ' Asignar los comandos al DataAdapter
  51.         ' (se supone que lo hace automáticamente, pero...)
  52.         dataAdapter.UpdateCommand = cbuilder.GetUpdateCommand
  53.         dataAdapter.InsertCommand = cbuilder.GetInsertCommand
  54.         dataAdapter.DeleteCommand = cbuilder.GetDeleteCommand
  55.         ' Esta base de datos usa el ID con valores autonumericos
  56.         dataAdapter.MissingSchemaAction = MissingSchemaAction.AddWithKey
  57.  
  58.         dataTable = New DataTable
  59.         ' Llenar la tabla con los datos indicados
  60.         dataAdapter.Fill(dataTable)
  61.     End Sub
  62.  
  63.     Public Function TablaActual() As String
  64.         Return Me.dt.TableName.ToString
  65.     End Function
  66.  
  67.     Public Function Total() As Integer
  68.         Return Me.dt.Rows.Count
  69.     End Function
  70.  
  71.     Public Function Consulta(ByVal fila As Integer, ByVal columna As String) As String
  72.         Return Me.dt.Rows(fila - 1)(columna).ToString
  73.     End Function
  74. End Class
  75.