Autor Tema: Búsqueda total  (Leído 1723 veces)

Desconectado xavi

  • Administrador
  • Habitual
  • *****
  • Mensajes: 204
Búsqueda total
« en: Septiembre 11, 2013, 07:52:02 pm »
Palabras clave: buscar, encontrar, todo
Autor: Xavi Lloberas / Mayo 2006

Objetivo:
Buscando la forma de realizar una busqueda en todas las tablas de la base de datos, me cree esta función.
Es probable que ya exista, pero me produjo una especial satisfacción ver que funcionaba.


Código: [Seleccionar]
Function busquedatotal(textoBusq As String)
    ' Atencion: Se debe activar la referencia Microsoft DAO 3.x Object Library

    Dim rst As Recordset
    Dim Tabla As TableDef
    Dim fld As Field
   
    Dim contador As Integer
   
    Debug.Print "Coincidencias encontrada con el texto: " & textoBusq
    contador = 0
    For Each Tabla In CurrentDb.TableDefs
        If Left(Tabla.Name, 4) <> "MSys" Then
            Set rst = CurrentDb.OpenRecordset("SELECT * FROM [" & Tabla.Name & "];")
            rst.MoveFirst
            Do Until rst.EOF
                For Each fld In rst.Fields
                    If InStr(1, fld.Value, textoBusq, vbTextCompare) Then
                        Debug.Print "   En tabla: " & Tabla.Name
                        Debug.Print "   Campo:" & fld.Name
                        Debug.Print "   Posicion:" & rst.AbsolutePosition + 1
                        Debug.Print "   Cadena entera: " & rst(fld.Name)
                        contador = contador + 1
                    End If
                Next
                rst.MoveNext
            Loop
        End If
    Next
    If contador = 0 Then
        Debug.Print "No se encontraron coincidencias"
       Else
        Debug.Print "Total coincidencias: " & contador
    End If
End Function