** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Filtro para buscar en varios campos
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Filtro para buscar en varios campos

 Responder Responder
Autor
Mensaje
apstoni Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 09/Octubre/2010
Localización: España
Estado: Sin conexión
Puntos: 367
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita apstoni Cita  ResponderRespuesta Enlace directo a este mensaje Tema: Filtro para buscar en varios campos
    Enviado: 30/Marzo/2019 a las 17:25
Hola a todos.
Os comento tengo un formulario con un subformulario donde muentra todos los clientes que tengo.
En el formulario tengo un cuadro combinado (donde selecciono si quiero buscar por nombre, nombre comercial, población, etc.) y un cuadro de texto donde escribo lo que busco, de manera que a medida que voy buscando se va filtrando hasta encontrar lo que busco.
Como es una base de datos para la gestión de pedidos de mi empresa, pasa que cuando estás entrando muchos pedidos, te cansa que cada vez tengas que triar del cuadro combinado por donde quieres buscar al cliente en sí.
Lo que me gustaría es eliminar el cuadro combinado y que desde el cuadro de texto al ir escribiendo me filtrara la información de todos los campos.
Lo he intentado de muchas maneras y siempre de da error y no consigo que funcione.

Este es el código que tengo al cargar el formulario:
Private Sub Form_Load()
Me.txtFiltro = vbNullString
Me.cboCampos = Me.cboCampos.ItemData(1)
Me!Texto9 = DCount("CODCLI", "CLIENTES")
Me.Comando20.Enabled = False
End Sub        ' Form_Load

Este es el código que tengo en el cuadro combinado:
Private Sub cboCampos_AfterUpdate()
STRSQL = "SELECT [Codi] AS [CODCLI] , [Client] AS [NOMCLI] , [Comercial] AS [NOMCOMCLI] , [Població] AS [POBCLI] , [Telèfon] AS [TELCLI] , [Mòbil] AS [MOVCLI] , [Tarifa] AS [TARCLI], [Baixa] AS [DATABAJACLI]"
STRSQL = STRSQL & " FROM FITXACLIENTS"
Me.SubCLIENTS.Form.RecordSource = STRSQL
Me.txtFiltro = vbNullString
Me!Texto9 = DCount("CODART", "ARTICLES")
End Sub

Este es el código que tengo en el evento al cambiar del cuadro de texto:
Private Sub txtFiltro_Change()
' al cambiar el texto de búsqueda construyo la sentencia SQL  origen del registro del subformulario
STRSQL = "SELECT [Codi] AS [CODCLI] , [Client] AS [NOMCLI] , [Comercial] AS [NOMCOMCLI] , [Població] AS [POBCLI] , [Telèfon] AS [TELCLI] , [Mòbil] AS [MOVCLI] , [Tarifa] AS [TARCLI],[Baixa] AS [DATABAJACLI]"
STRSQL = STRSQL & " FROM FITXACLIENTS"
' dado que la propiedad value está vacía hasta que no se salga del cuadro de texto,
' la condición WHERE la construyo mediante la propiedad text del cuadro de texto
STRSQL = STRSQL & " WHERE " & Me.cboCampos & " LIKE " & Chr(34) & "*" & Me.txtFiltro.Text & "*" & Chr(34) & ""
' y la aplico
If STRSQL = "" Then Me!Texto9 = DCount("CODCLI", "CLIENTES")
Me.SubCLIENTS.Form.RecordSource = STRSQL
Me!Texto9 = Me.SubCLIENTS.Form.RecordsetClone.RecordCount
End Sub        ' txtFiltro_Change

Por tanto lo que quiero es simplificar a que construya la búsqueda solo desde el cuadro te texto.
A ver si alguien me echa una mano.
Apstoni
Arriba
VIMIPAS Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 06/Enero/2006
Localización: ESPAÑA
Estado: Sin conexión
Puntos: 5190
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita VIMIPAS Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 30/Marzo/2019 a las 23:31
Hola buenas noches Antonio.

Te pongo este enlace a uno de los ejemplos que tengo en funciones favoritas:


A ver si te vale o puedes acoplarlo a lo que pretendes.

Cualquier duda, por aquí estamos.

Saludos.
Gracias
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable