2012-05-01 24 views
7

Tengo un DB en Access con una increíble cantidad de tablas. Desafortunadamente, el creador usó nombres muy no descriptivos, por lo que es básicamente imposible adivinar para qué es una tabla con solo mirar su nombre. Necesito encontrar urgentemente una tabla que contenga ciertos datos, y estoy bastante seguro de que sé el nombre de algunas de sus columnas, o al menos las palabras que figuran en los nombres de las columnas. Básicamente, lo que necesito es algún tipo de 'Buscar por nombre de columna en cada tabla de toda la base de datos', que muestra todas las tablas que contienen ciertos nombres de columna.¿Encuentra una tabla cuando conoce el nombre de una columna?

¿Hay alguna manera de lograr esto, antes de que empiece a ir uno a uno como un mono?

Respuesta

7

Este procedimiento enumerará el nombre de la tabla y el nombre de la columna para las columnas cuyos nombres contengan el texto que proporcione. Los resultados se imprimen en la ventana Inmediato (ir allí con Ctrl +g)

Public Sub ListTablesWithColumnNamesContaining(ByVal pText As String) 
Dim db As DAO.Database 
Dim tdf As DAO.TableDef 
Dim fld As DAO.Field 
Set db = CurrentDb 
For Each tdf In db.TableDefs 
    For Each fld In tdf.Fields 
     If InStr(1, fld.Name, pText, vbTextCompare) > 0 Then 
      Debug.Print tdf.Name & ":", fld.Name 
     End If 
    Next fld 
Next tdf 
Set fld = Nothing 
Set tdf = Nothing 
Set db = Nothing 
End Sub 
+0

Trabajó como un encanto, gracias! – Antrim

2

Hay una manera de encontrar todas las tablas que tienen un nombre de columna en particular, pero se necesita un código (en lugar de solo poder ejecutar una consulta).

Primero debe hacer que las tablas del sistema sean "visibles" en la base de datos. No menciona qué versión de MS Access se está utilizando, pero el cuadro de diálogo Opción debe permitir algo along these lines.

Esto expone la tabla MSysObjects que contiene todos los nombres de tabla de usuario.

Preferiblemente querrá recorrer todas las tablas de usuario, pasar nombres en algún código que abra las tablas como objetos DAO.TableDef y examinar los atributos de la correspondiente colección Fields.

Allen Browne tiene some VBA code that displays these attributes. Puede personalizar esto según sus necesidades.

Cuestiones relacionadas