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----------------------------------------
               (
geocities.com/es/ensolva/Descargas)                   (
geocities.com/es/ensolva)                   (
geocities.com/es)