Access - Obtener estructura de tabla por codigo

 
Vista:
sin imagen de perfil
Val: 5
Ha aumentado su posición en 30 puestos en Access (en relación al último mes)
Gráfica de Access

Obtener estructura de tabla por codigo

Publicado por Maria (3 intervenciones) el 09/04/2020 13:55:37
Buenas tardes:

Me gustaría saber si se puede obtener la estructura de una tabla en Access a través de código VBA, es decir los campos de la tabla así como sus atributos, tipo de campo, longitud, si es índice, etc.

Muchas gracias por anticipado
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Obtener estructura de tabla por codigo

Publicado por Anonimo (3315 intervenciones) el 09/04/2020 23:02:40
Access suele disponer de un 'documentador' que proporciona esos datos y mucho mas, esa información se puede seleccionar y guardar en tabla o en papel, texto o incluso un Excel para hacer un procesamiento posterior.

Nada impide que se pueda generar un procedimiento personalizado, bastaría recorrer las propiedades de cada objeto y crear una extracción personalizada (si se tiene esa especial necesidad y lo que 'trae de fabrica' no lo ofrece).

Esto es: con un poco de dominio de VBA se puede obtener lo que se necesite.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 5
Ha aumentado su posición en 30 puestos en Access (en relación al último mes)
Gráfica de Access

Obtener estructura de tabla por codigo

Publicado por Maria (3 intervenciones) el 13/04/2020 13:40:32
Buenas tardes:
Gracias por tu respuesta. He probado lo que me dijiste, pero al final he encontrado una solución mas adecuada para lo que quiero.

La dejo aquí por si a alguien le sirve.

Se obtiene información a través de los objetos de ADO Property y Field. Se puede saber si los campos son índices, autoincremento, tipo de campo, tamaño, etc.
De Property se puede saber lo siguiente:
Basecolumnname, Basetablename , Basecatalogname, Baseschemaname, Keycolumn , Isautoincrement , Relationconditions , Calculationinfo y Optimize
De Field se obtiene la siguiente información:
Name, Value, Type, Precision , NumericScale , DefinedSize y ActualSize

Ejemplo para visualizar las colecciones:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Set cn = CurrentProject.AccessConnection
Set rs = New ADODB.Recordset
With rs
   Set .ActiveConnection = cn
   .Source = "SELECT * FROM MiTabla"
   .LockType = adLockOptimistic
   .CursorType = adOpenKeyset
   .Open
End With
Dim objFields As ADODB.Fields
Dim intLoop As Integer
Set objFields = rs.Fields
rs.MoveFirst
Do While Not rs.EOF
    For intLoop = 0 To (objFields.Count - 1)
        Debug.Print "Indice " & intLoop
        Debug.Print "Name " & objFields.Item(intLoop).Name
        Debug.Print "Value " & objFields.Item(intLoop).Value
        Debug.Print "Type " & objFields.Item(intLoop).Type
        Debug.Print "Precision " & objFields.Item(intLoop).Precision
        Debug.Print "NumericScale " & objFields.Item(intLoop).NumericScale
        Debug.Print "DefinedSize " & objFields.Item(intLoop).DefinedSize
        Debug.Print "ActualSize " & objFields.Item(intLoop).ActualSize
        Debug.Print "---"
    Next
    rs.MoveNext
Loop
'
 Dim objProp As ADODB.Property
 For intLoop = 0 To (objFields.Count - 1)
    Debug.Print objFields.Item(intLoop).Name
    For Each objProp In objFields(intLoop).Properties
        Debug.Print vbTab & objProp.Name & " = " & objProp.Value
    Next objProp
Next intLoop

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Obtener estructura de tabla por codigo

Publicado por Anonimo (3315 intervenciones) el 14/04/2020 03:51:52

Anonimo escribio


Nada impide que se pueda generar un procedimiento personalizado, bastaría recorrer las propiedades de cada objeto y crear una extracción personalizada....
Esto es: con un poco de dominio de VBA se puede obtener lo que se necesite.


Has aplicado los recursos disponibles y se podrían pasar directamente a un fichero de texto (o una tabla o …….) así se evita el copiarlos de la ventana de inmediato.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 5
Ha aumentado su posición en 30 puestos en Access (en relación al último mes)
Gráfica de Access

Obtener estructura de tabla por codigo

Publicado por Maria (3 intervenciones) el 14/04/2020 11:30:36
Hola:
He puesto un ejemplo que muestra las propiedades en la ventana de inmediato, pero lo que realmente me interesa es el objeto, es decir podría utilizar desde del programa el código que utilizo en el ejemplo sin tener que utilizar para nada la ventana de inmediato.

Un ejemplo, si quiero saber qué tamaño tiene un campo , primero identificaría que objFields.Item(intLoop).Name es el campo que me interesa y utilizaría objFields.Item(intLoop).DefinedSize para saber su tamaño.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar