tablas de una base access

09/05/2006 - 18:30 por hugo | Informe spam
Hola grupo:

Estoy escribiendo en .NET unas rutinas que devuelven objetos como tablas,
Fields,etc de una base de access. Para esto estoy utilizando DAO. Me
gustaría saber si se puede lograr esto mismo pero sin utilizar DAO. Por
ejemplo con ADO.NET.
Gracias y hasta luego.
 

Leer las respuestas

#1 SoftJaén
09/05/2006 - 20:45 | Informe spam
"hugo" escribió:

Estoy escribiendo en .NET unas rutinas que devuelven objetos como tablas,
Fields,etc de una base de access. Para esto estoy utilizando DAO. Me
gustaría saber si se puede lograr esto mismo pero sin utilizar DAO. Por
ejemplo con ADO.NET.



Tendrías que utilizar funciones que devolvieran objetos «DataTable» (para
las tablas), y objetos «DataColumn» (para los campos de la tabla). Pero
previamente, deberás de tener disponible un objeto «DataSet», y todo lo que
ello conlleva: abrir la conexión, crear un adaptador de datos, y por último,
crear el propio objeto «DataSet», que será el objeto que pases a la función
que devuelve los objetos «DataTable», y una vez que tengas éste último
objeto, lo deberás de pasar a la supuesta función que devuelve los objetos
«DataColumn».

Las siguientes funciones, te podrían servir de base:

Public Function GetDataTable(ByVal ds As DataSet, _
ByVal tableName As String) As DataTable

' Si el objeto DataSet no es válido
If (ds Is Nothing) Or (tableName Is Nothing) Then Return Nothing

Try
Dim dt As DataTable

' Devolvemos el objeto DataTable, buscándolo
' por el nombre de la tabla
'
dt = ds.Tables(tableName)

Return dt

Catch ex As Exception

Return Nothing

End Try

End Function


Public Function GetDataColumn(ByVal dt As DataTable, _
ByVal fieldName As String) As DataColumn

' Si el objeto DataTable no es válido
If (dt Is Nothing) Or (fieldName Is Nothing) Then Return Nothing

Try
Dim dc As DataColumn

' Devolvemos el objeto DataColumn, buscándolo
' por el nombre del campo
'
dc = dt.Columns(fieldName)

Return dc

Catch ex As Exception

Return Nothing

End Try

End Function

Para crear el objeto «DataSet» para una base de datos Microsoft Access, te
puede servir la siguiente función genérica:

Public Function CreateDataSetOleDb(ByVal cnnString As String, _
ByVal SQL As String, _
ByVal tableName As String) As DataSet

' Creamos un objeto OleDbConnection
Dim cnn As New OleDb.OleDbConnection(cnnString)

Try

' Abrimos la conexión
cnn.Open()

' Creamos un adaptador de datos
Dim da As New OleDbDataAdapter(SQL, cnn)

' Rellenamos el objeto DataSet con los datos
' de la consulta SQL

Dim ds As New DataSet

da.Fill(ds, tableName)

' Devolvemos el objeto DataSet
Return ds

Catch ex As Exception

MessageBox.Show(ex.Message, "Crear DataSet")

Finally

' Cerramos la conexión
cnn.Close()

End Try

End Function

Como podrás observar, la función necesita una cadena de conexión Ole Db
válida, una consulta SQL de selección para rellenar el conjunto de datos, y
el nombre de una tabla para añadirla a la colección «DataTables» del objeto
«DataSet».

Ya puestos, te indico cómo deberías llamar a las funciones:

Dim cadenaConn As String = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:\Bd1.mdb"

Dim sql As String = "SELECT * FROM Clientes"

Dim tabla As String = "Clientes"

' Creamos el objeto DataSet
Dim ds As DataSet
ds = CreateDataSetOleDb(cadenaConn, sql, tabla)

' Creamos un objeto DataTable
Dim dt As DataTable
dt = GetDataTable(ds, "Clientes")
MessageBox.Show(dt.TableName)

' Por último, creamos un objeto DataColumn
Dim dc As DataColumn
dc = GetDataColumn(dt, "NombreCliente")
MessageBox.Show(dc.ColumnName)

En fin, espero que todo esto te sirva para olvidarte de una vez de la
biblioteca de DAO. :-)

Enrique Martínez
[MS MVP - VB]

Nota informativa: La información contenida en este mensaje, así como el
código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin
garantías de ninguna clase, y no otorga derecho alguno. Usted asume
cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o
sugerido en el presente mensaje.

Preguntas similares