Imprimir página | Cerrar ventana

Buscar palabra en toda la tabla

Impreso de: Foro de Access y VBA
Categoría: Access y VBA
Nombre del foro: Access y VBA
Descripción del foro: Foro de programacion en Access (Con código y sin código)
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=84609
Fecha de impresión: 24/Abril/2024 a las 14:35


Tema: Buscar palabra en toda la tabla
Publicado por: Enguerran
Asunto: Buscar palabra en toda la tabla
Fecha de publicación: 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



Respuestas:
Publicado por: xavi
Fecha de publicación: 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

http://www.llodax.com" rel="nofollow - Mi web


Publicado por: buho
Fecha de publicación: 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.

http://www.mvp-access.es/buho/ficheros/mcbusqueda.zip" rel="nofollow - ENLACE UNO ejemplo Rafa

http://www.mvp-access.es/buho/ficheros/dcount.txt" rel="nofollow -
ENLACE DOS  codigo Juan



http://www.mvp-access.es" rel="nofollow - 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" rel="nofollow - - 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.


-------------
El búho es un pajarraco


Publicado por: buho
Fecha de publicación: 20/Julio/2019 a las 11:15
Vaya, Xavi....solapamos respuestas...Smile

-------------
El búho es un pajarraco


Publicado por: Mihura
Fecha de publicación: 20/Julio/2019 a las 12:29
Abuelooooooooooooooooooooooooooooooo  ... Evil Smile

-------------
Jesús Mansilla Castells.
Saludos desde Móstoles.

http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones
http://www.tecsys.es" rel="nofollow - Tecsys.es


Publicado por: buho
Fecha de publicación: 20/Julio/2019 a las 13:42
Publicado originalmente por Mihura Mihura escribió:

Abuelooooooooooooooooooooooooooooooo  ... Evil Smile
Evil Smile


-------------
El búho es un pajarraco


Publicado por: Enguerran
Fecha de publicación: 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é.



Publicado por: VIMIPAS
Fecha de publicación: 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.

http://www.mvp-access.com/foro/combos-cuadros-lista-subformularios-like-e-instr_topic81077.html" rel="nofollow - http://www.mvp-access.com/foro/combos-cuadros-lista-subformularios-like-e-instr_topic81077.html

Saludos.


-------------
Gracias


Publicado por: Enguerran
Fecha de publicación: 19/Diciembre/2019 a las 12:49
muchas gracias.
Me ayudais mucho.
cerrad el hilo


Publicado por: McPegasus
Fecha de publicación: 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 ::..



Imprimir página | Cerrar ventana