Hola: Mirando cosas que iba a borrar me he encontrado con éste procedimiento que permite saber en qué tablas de una base de datos se utiliza un "campo" determinado. En una base de datos de pocas tablas esto no tiene importancia pero cuando hablamos de bases de datos con algunas decenas de tablas la cosa empieza a ser interesante. El procedimiento admite como comodin el asterisco (*) de forma que puedes pedir, por ejemplo, las tablas en la que se encuentren campos que contengan en su nombre "Art". Además, al presentar el tipo de campo y longitud del mismo, te permite comprobar la congruencia entre ellos. Espero que a más de uno le resulte interesante. Saludos. CARCAR El procedimiento se incorpora en un módulo de la base de datos a investigar. (Cuidado con las líneas que quedan cortadas por el editor). '-----------------------Copiar--------------------------------------- Sub TablasConCampo(NombreCampo As String) Dim Bd As DATABASE Dim Tabla As TableDef Dim Campo As Field Dim ValorBusqueda As String Dim GuardaValorBusqueda As String Dim Tipo As String Dim Sumado As Boolean Dim MxLenTb As Integer Dim MxLenFld As Integer Dim PrimeraVez As Boolean Dim Lon As Integer Dim TotalCampos As Integer Dim TotalTablas As Integer Dim X As Integer Dim N As Integer Dim M As Integer Dim ComodinFinal As Boolean Dim ComodinInicial As Boolean ComodinFinal = False ComodinInicial = False If Right(NombreCampo, 1) = "*" Then Lon = Len(NombreCampo) - 1 ValorBusqueda = Left(NombreCampo, Lon) ComodinFinal = True Else Lon = Len(NombreCampo) ValorBusqueda = NombreCampo End If GuardaValorBusqueda = ValorBusqueda Set Bd = CurrentDb TotalCampos = 0 TotalTablas = 0 Debug.Print " " Debug.Print "Valor de búsqueda: '" & NombreCampo & "'" Debug.Print " " For N = 1 To 2 If N = 2 Then If MxLenTb < 15 Then MxLenTb = 15 End If If MxLenFld < 15 Then MxLenFld = 15 End If ValorBusqueda = GuardaValorBusqueda Debug.Print "Nombre de tabla"; Tab(MxLenTb + 3); "Nombre de campo"; Tab(MxLenTb + MxLenFld + 5); "Tipo campo"; Tab(MxLenTb + MxLenFld + 19); "Tamaño" For M = 1 To MxLenTb Debug.Print "-"; Next M Debug.Print Tab(MxLenTb + 3); For M = 1 To MxLenFld Debug.Print "-"; Next M Debug.Print Tab(MxLenTb + MxLenFld + 5); "------------"; Tab(MxLenTb + MxLenFld + 19); "------" End If If Left(NombreCampo, 1) <> "*" Then For Each Tabla In Bd.TableDefs Sumado = False For Each Campo In Tabla.Fields If Len(Campo.Name) <> Lon And Not ComodinFinal Then GoTo OtroCampo End If If Left(Campo.Name, Lon) = ValorBusqueda Then Select Case Campo.Type Case 1 Tipo = "Sí/No" Case 2 Tipo = "Byte" Case 3 Tipo = "Entero" Case 4 Tipo = "Entero largo" Case 5 Tipo = "Moneda" Case 6 Tipo = "Simple" Case 7 Tipo = "Doble" Case 8 Tipo = "Fecha/hora" Case 10 Tipo = "Texto" Case 11 Tipo = "Objeto OLE" Case 12 Tipo = "Memo" Case Else Tipo = Campo.Type End Select If Len(Campo.Name) > MxLenFld Then MxLenFld = Len(Campo.Name) End If If Len(Tabla.Name) > MxLenTb Then MxLenTb = Len(Tabla.Name) End If If N = 2 Then Debug.Print Tabla.Name; Tab(MxLenTb + 3); Campo.Name; Tab(MxLenTb + MxLenFld + 5); Tipo; Tab(MxLenTb + MxLenFld + 19); Campo.Size TotalCampos = TotalCampos + 1 If Not Sumado Then TotalTablas = TotalTablas + 1 Sumado = True End If End If End If OtroCampo: Next Next End If If Left(ValorBusqueda, 1) = "*" Then Lon = Len(ValorBusqueda) - 1 ValorBusqueda = Right(ValorBusqueda, Lon) For Each Tabla In Bd.TableDefs Sumado = False For Each Campo In Tabla.Fields X = InStr(1, Campo.Name, ValorBusqueda, vbTextCompare) If X = 0 Then GoTo OtroCampo2 End If If ComodinFinal Or Not ComodinFinal And Len(Right(Campo.Name, Len(Campo.Name) - (X + Lon - 1))) = 0 Then Select Case Campo.Type Case 1 Tipo = "Sí/No" Case 2 Tipo = "Byte" Case 3 Tipo = "Entero" Case 4 Tipo = "Entero largo" Case 5 Tipo = "Moneda" Case 6 Tipo = "Simple" Case 7 Tipo = "Doble" Case 8 Tipo = "Fecha/hora" Case 10 Tipo = "Texto" Case 11 Tipo = "Objeto OLE" Case 12 Tipo = "Memo" Case Else Tipo = Campo.Type End Select If Len(Campo.Name) > MxLenFld Then MxLenFld = Len(Campo.Name) End If If Len(Tabla.Name) > MxLenTb Then MxLenTb = Len(Tabla.Name) End If If N = 2 Then Debug.Print Tabla.Name; Tab(MxLenTb + 3); Campo.Name; Tab(MxLenTb + MxLenFld + 5); Tipo; Tab(MxLenTb + MxLenFld + 19); Campo.Size TotalCampos = TotalCampos + 1 If Not Sumado Then TotalTablas = TotalTablas + 1 Sumado = True End If End If End If OtroCampo2: Next Next End If Next N Bd.Close Debug.Print "" Debug.Print "Total de tablas encontradas: " & TotalTablas & " total campos: " & TotalCampos Debug.Print "" MsgBox "Tablas encontradas: " & TotalTablas & " total campos: " & TotalCampos End Sub '-----------------------------Fin de copia----------------------------------------