Obtener la estructura de una base de datos
Publicado por Alvaro Mouat V. (2 intervenciones) el 15/02/2002 17:52:30
Hola.
Necesito encontrar la forma de, a través de una conexión ODBC a una base de datos (cualquiera), obtener la cantidad de tablas de esta, la cantidad de columnas de cada tabla, los tipos de datos de cada columna, y, lo más importante, si la columna es o no un campo clave.
En Visual Basic, con el objeto DataBase de DAO esto es fácil de lograr si se trata de una base de datos access, pero esto cambia si la base de datos (de cualquier tipo, incluso access) es llamada a través de su DSN de sistema.
Con un poco de paciencia fui capaz de obtener lo anterior utilizando RDO, pero no puedo saber si un campo es clave o no.
El código para esto fue el suguiente:
Dim rdoEnv As rdoEnvironment
Dim rdoCon As rdoConnection
Dim rdoTab As rdoTable
Dim rdoCol As rdoColumn
Dim i As Integer, j As Integer, Str As String, EsClave As Boolean
rdoEngine.rdoDefaultCursorDriver = rdUseClientBatch
rdoEngine.rdoLocaleID = rdLocaleSpanish
Set rdoEnv = rdoEngine.rdoCreateEnvironment("BaseDeDatos", "Admin", "")
Set rdoCon = rdoEnv.OpenConnection("BaseDeDatos ", , False, "", "")
For i = 0 To rdoCon.rdoTables.Count - 1
Set rdoTab = rdoCon.rdoTables(i)
Str = Str & rdoTab.Name & vbCrLf
For j = 0 To rdoCon.rdoTables(i).rdoColumns.Count - 1
Set rdoCol = rdoTab.rdoColumns(j)
EsClave = rdoCol.KeyColumn
Str = Str & " - " & rdoCol.Name & "; " & vbTab _
& "Atributo: " & rdoCol.Attributes & "; " & vbTab _
& "Tamaño: %
Necesito encontrar la forma de, a través de una conexión ODBC a una base de datos (cualquiera), obtener la cantidad de tablas de esta, la cantidad de columnas de cada tabla, los tipos de datos de cada columna, y, lo más importante, si la columna es o no un campo clave.
En Visual Basic, con el objeto DataBase de DAO esto es fácil de lograr si se trata de una base de datos access, pero esto cambia si la base de datos (de cualquier tipo, incluso access) es llamada a través de su DSN de sistema.
Con un poco de paciencia fui capaz de obtener lo anterior utilizando RDO, pero no puedo saber si un campo es clave o no.
El código para esto fue el suguiente:
Dim rdoEnv As rdoEnvironment
Dim rdoCon As rdoConnection
Dim rdoTab As rdoTable
Dim rdoCol As rdoColumn
Dim i As Integer, j As Integer, Str As String, EsClave As Boolean
rdoEngine.rdoDefaultCursorDriver = rdUseClientBatch
rdoEngine.rdoLocaleID = rdLocaleSpanish
Set rdoEnv = rdoEngine.rdoCreateEnvironment("BaseDeDatos", "Admin", "")
Set rdoCon = rdoEnv.OpenConnection("BaseDeDatos ", , False, "", "")
For i = 0 To rdoCon.rdoTables.Count - 1
Set rdoTab = rdoCon.rdoTables(i)
Str = Str & rdoTab.Name & vbCrLf
For j = 0 To rdoCon.rdoTables(i).rdoColumns.Count - 1
Set rdoCol = rdoTab.rdoColumns(j)
EsClave = rdoCol.KeyColumn
Str = Str & " - " & rdoCol.Name & "; " & vbTab _
& "Atributo: " & rdoCol.Attributes & "; " & vbTab _
& "Tamaño: %
Valora esta pregunta


0