** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Buscar palabra en toda la tabla
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoBuscar palabra en toda la tabla

 Responder Responder
Autor
Mensaje Invertir el orden de clasificación
McPegasus Ver desplegable
Habitual
Habitual


Unido: 02/Abril/2007
Localización: España
Estado: Sin conexión
Puntos: 81
Enlace directo a este mensaje Tema: Buscar palabra en toda la tabla
    Enviado: 14/Mayo/2021 a las 11:09
Gracias Xavi, por dos veces me ha resultado útil, en esta segunda lo he adaptado para otro tipo de lectura de los datos que salgan más agrupados.

Sub BusquedaTotal_test()

    Call BusquedaTotal("210160")

End Sub

Function BusquedaTotal(strTextoBusq As String)
'Sub BusquedaTotal()
    
    'Origen: xavi (mayo 2006)
    'Adaptación: McPegasus (mayo 2021)
    'Atencion: Se debe activar la referencia Microsoft DAO 3.x Object Library

    Dim rst                                     As DAO.Recordset
    Dim Tabla                                   As TableDef
    Dim fld                                     As Field
    
    Dim contador                                As Integer
    Dim intTablas                               As Integer
    
    Dim strTableNamePrevious                    As String
    Dim strFielNamePrevious                     As String
    
    
'strTextoBusq = "210160"
    
    Debug.Print "Coincidencias encontrada con el texto: " & strTextoBusq
    contador = 0
    For Each Tabla In CurrentDb.TableDefs
        If Left(Tabla.Name, 4) <> "MSys" Then
            Set rst = CurrentDb.OpenRecordset("SELECT * FROM [" & Tabla.Name & "];")
            
            If Not rst.EOF Then
                rst.MoveFirst
                
                Do Until rst.EOF
                    For Each fld In rst.Fields
                        If InStr(1, fld.Value, strTextoBusq, vbTextCompare) Then
                            If Not Tabla.Name = strTableNamePrevious Then
                                Debug.Print
                                Debug.Print vbTab; "En tabla: " & Tabla.Name
                        
                            End If
                            
                            If Not fld.Name = strFielNamePrevious Then
                                If Not blnField Then
                                    Debug.Print vbTab; vbTab; "Campo:"; vbTab; fld.Name
                                    Debug.Print vbTab; vbTab; vbTab; vbTab; vbTab; vbTab; vbTab; "Registro"; vbTab; vbTab; "Contenido completo"
                                End If
                            End If
                            
                            Debug.Print vbTab; vbTab; vbTab; vbTab; vbTab; vbTab; vbTab; rst.AbsolutePosition + 1; vbTab; vbTab; vbTab; rst(fld.Name)
                                
                            contador = contador + 1
                        
                            strFielNamePrevious = fld.Name
                            strTableNamePrevious = Tabla.Name
                        
                        End If
                    Next
                    rst.MoveNext
                
                Loop
            End If
        End If
    Next
    
    Debug.Print
    
    If contador = 0 Then
        Debug.Print "No se encontraron coincidencias"
    
    Else
        Debug.Print "Total coincidencias: " & contador
    
    End If

End Function
Rafael [McPegasus]
Valencia
www.mcpegasus.net
..:: Tu Access, Mi Pasión ::..
Arriba
Enguerran Ver desplegable
Habitual
Habitual
Avatar

Unido: 07/Septiembre/2017
Localización: Málaga
Estado: Sin conexión
Puntos: 104
Enlace directo a este mensaje Enviado: 19/Diciembre/2019 a las 12:49
muchas gracias.
Me ayudais mucho.
cerrad el hilo
Arriba
VIMIPAS Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 06/Enero/2006
Localización: ESPAÑA
Estado: Sin conexión
Puntos: 5462
Enlace directo a este mensaje Enviado: 22/Julio/2019 a las 22:36
Buenas noches a todos.

Y mas cosas, así no te aburres y puedes adaptar el que mas se adecue a lo que andas haciendo.


Saludos.
Gracias
Arriba
Enguerran Ver desplegable
Habitual
Habitual
Avatar

Unido: 07/Septiembre/2017
Localización: Málaga
Estado: Sin conexión
Puntos: 104
Enlace directo a este mensaje Enviado: 22/Julio/2019 a las 14:05
AJAJAJAJA
GRACIAS!!!!
A ver cómo me las apaño, seguro que me sirven, ya os digo, que con el lío que tengo de curre, poco tiempo le puedo dedicar, pero lo haré.

Arriba
buho Ver desplegable
Administrador
Administrador
Avatar
Nada en la palabra

Unido: 10/Abril/2004
Localización: Valladolid
Estado: Sin conexión
Puntos: 11330
Enlace directo a este mensaje Enviado: 20/Julio/2019 a las 13:42
Publicado originalmente por Mihura Mihura escribió:

Abuelooooooooooooooooooooooooooooooo  ... Evil Smile
Evil Smile
El búho es un pajarraco
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 14011
Enlace directo a este mensaje Enviado: 20/Julio/2019 a las 12:29
Abuelooooooooooooooooooooooooooooooo  ... Evil Smile
Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
buho Ver desplegable
Administrador
Administrador
Avatar
Nada en la palabra

Unido: 10/Abril/2004
Localización: Valladolid
Estado: Sin conexión
Puntos: 11330
Enlace directo a este mensaje Enviado: 20/Julio/2019 a las 11:15
Vaya, Xavi....solapamos respuestas...Smile
El búho es un pajarraco
Arriba
buho Ver desplegable
Administrador
Administrador
Avatar
Nada en la palabra

Unido: 10/Abril/2004
Localización: Valladolid
Estado: Sin conexión
Puntos: 11330
Enlace directo a este mensaje Enviado: 20/Julio/2019 a las 11:14
Hola...aunque no sé realmente en qué escenario te mueves y como quieres mostrar (Y donde) los resultados de la búsqueda, te cito estos dos ejemplos ya muy antiguos pero que siguen funcionando perfectamente.
Uno es de Rafa (McPegasus) donde, de manera selectiva, te permite introducir un texto de busca y se van posicionando los resultados en un subformulario. Lo hace por un campo...pero con una pequeña adaptación, lo puedes hacer por el(los) campos que quieras.
Hay muchos ejemplos en las paginas web de este dominio sobre esta pregunta que planteas.

Luego tengo otro enlace de Juan (Happy) donde lo que hace, simplemente es encontrar el numero de registros de una tabla que contienen una cadena concreta.

ENLACE UNO ejemplo Rafa


ENLACE DOS  codigo Juan



ENLACE TRES  paginas de este servidor donde podras encontra ejemplos

Sobre todo busca en la web de Emilio Sancha tiene decenas de ejemplos...

Edito para meterte el enlace directo de la web de Emilio Sancha

http://www.mvp-access.es/emilio/Buscador.asp

En la caja de busqueda de esa pagina pon BUSCADOR y te saldrán TRES ejemplos
Por ejemplo:
ESTE ES MUY BUENO
"
Un nuevo buscador, que en esta ocasión busca los datos en todos los campos, susceptibles de contener el valor buscado, de la tabla seleccionada. "

Suerte.


Editado por buho - 20/Julio/2019 a las 11:20
El búho es un pajarraco
Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 14734
Enlace directo a este mensaje Enviado: 20/Julio/2019 a las 11:14
Hola,

Hace ya unos cuantos años me cree una función para realizar una búsqueda en toda la base de datos

Function BusquedaTotal(strTextoBusq As String)
    ' xavi (mayo 2006)
    ' Atencion: Se debe activar la referencia Microsoft DAO 3.x Object Library

    Dim rst     As DAO.Recordset
    Dim Tabla   As TableDef
    Dim fld     As Field
    
    Dim contador As Integer
    
    Debug.Print "Coincidencias encontrada con el texto: " & strTextoBusq
    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, strTextoBusq, 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

Seguro que te sirve como punto de partida.

un saludo
Xavi, un minyó de Terrassa

Mi web
Arriba
Enguerran Ver desplegable
Habitual
Habitual
Avatar

Unido: 07/Septiembre/2017
Localización: Málaga
Estado: Sin conexión
Puntos: 104
Enlace directo a este mensaje Enviado: 19/Julio/2019 a las 17:40
Hola, tengo un formulario y quiero realizar una búsqueda en toda la tabla de una palabra, me da igual en el campo que se encuentre.
Me da igual que los resultados estén en un subformulario o en el mismo combo box.
Sería posible?
Muchas gracias
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable