Foros del Web » Soporte técnico » Ofimática »

ACCESS - Búsqueda Avanzada

Estas en el tema de ACCESS - Búsqueda Avanzada en el foro de Ofimática en Foros del Web. Hola amigos! Quiero hacer un formulario que tenga un campo txtbox en el cual, el usuario pueda escribir algo y automáticamente vaya filtrando el formulario ...
  #1 (permalink)  
Antiguo 08/07/2009, 02:53
 
Fecha de Ingreso: marzo-2007
Mensajes: 538
Antigüedad: 17 años, 8 meses
Puntos: 0
[R] ACCESS - Búsqueda Avanzada

Hola amigos!
Quiero hacer un formulario que tenga un campo txtbox en el cual, el usuario pueda escribir algo y automáticamente vaya filtrando el formulario continuo segun 3 campos que yo determine.

Cómo lo puedo hacer?



Gracias!

Última edición por Laufwerk; 09/07/2009 a las 03:52
  #2 (permalink)  
Antiguo 08/07/2009, 02:58
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 17 años, 3 meses
Puntos: 18
Respuesta: ACCESS - Búsqueda Avanzada

Es sencillo, tienes que ir modificando el origen de regitro dle subform segun se va introduciendo algo en el textbox. Aqui tienes un ejemplo sencillo:

ejemplo

Veras que solo tiene una linea de codigo. En este ejemplo, solo filtra por un campo, tendras que adaptarlo para que lo haga con varios.

Un saludo
  #3 (permalink)  
Antiguo 08/07/2009, 04:46
 
Fecha de Ingreso: marzo-2007
Mensajes: 538
Antigüedad: 17 años, 8 meses
Puntos: 0
Respuesta: ACCESS - Búsqueda Avanzada

Veo que es muy fácil, pero a mi no me acaba de funcionar.
Tengo el origen de control del formulario una consulta
y lo que hago en el evento onChange del textbox es aplicarle el filtro
me.filter = " Bla bla bla"

Pero me lanza error si el textbox es vacío o nulo.

Que hago?
  #4 (permalink)  
Antiguo 08/07/2009, 05:01
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 17 años, 3 meses
Puntos: 18
Respuesta: ACCESS - Búsqueda Avanzada

El ejemplo que te pase, si no me equivoco, solo tiene este codigo:

Private Sub Texto2_Change()
Me.Empleados.Form.RecordSource = "select IdEmpleado,NomEmpleado from Empleados where NomEmpleado like '" & Me.Texto2.Text & "*'"
'Me.Lista.Requery
End Sub

No usa la propiedad filter del form.

No obstante, esa es otra opcion, puedes comprobar si el textbox esta vacio:

if nz(me.NombreTextBox,"")="" then
msgbox "Null o vacio"
end if

Un saludo
  #5 (permalink)  
Antiguo 09/07/2009, 01:27
 
Fecha de Ingreso: marzo-2007
Mensajes: 538
Antigüedad: 17 años, 8 meses
Puntos: 0
Respuesta: ACCESS - Búsqueda Avanzada

Vale, acabo de ver el ejemplo mas detalladamente y veo que el FormInicio contiene el textbox y el subform.
el subform tiene como origen de control la tabla empleados, pero en mi caso mi subForm tiene como origen de control una consulta y aqui viene mi pregunta:
Cómo hago para que me filtre mi consulta? tengo que escribir toda la SQL entera añadiendo mis WHERE's? o hay alguna otra forma?


Gracias!
  #6 (permalink)  
Antiguo 09/07/2009, 01:53
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 17 años, 3 meses
Puntos: 18
Respuesta: ACCESS - Búsqueda Avanzada

No hace falta, puedes usar directamente la consulta como una tabla (siempre que este guardada como un objeto).

Select Campo1, campo2 from NombreConsulta where .....

Un saludo
  #7 (permalink)  
Antiguo 09/07/2009, 02:27
 
Fecha de Ingreso: marzo-2007
Mensajes: 538
Antigüedad: 17 años, 8 meses
Puntos: 0
Respuesta: ACCESS - Búsqueda Avanzada

Vayamos por partes: porque sigue sin funcionar aunque ahora ya lo entiendo.
esta es mi consulta guardada como Cons Incidencia BusquedaAvanzada
Código:
SELECT Incidencias.id_incidencia AS idIncidencia, Administradores.nombre AS nombre, Sites.nombre AS site, Categorias.descripcion AS categoria, Incidencias.titulo, Incidencias.descripcion, IncidenciasUsuariosApp.fecha, Incidencias.fecha_creacion, Incidencias.fecha_finalizacion, Impactos.descripcion AS impacto, Prioridades.Descripción AS prioridad, [Incidencias Estados].descripcion AS estado, IncidenciasUsuariosApp.tarea
FROM Sites INNER JOIN (Prioridades INNER JOIN ((Impactos INNER JOIN ([Incidencias Estados] INNER JOIN (Categorias INNER JOIN Incidencias ON Categorias.id_categoria=Incidencias.id_categoria) ON [Incidencias Estados].id_estado=Incidencias.id_estado) ON Impactos.id_impacto=Incidencias.id_impacto) INNER JOIN (CategoriasAdministradores INNER JOIN (Administradores INNER JOIN IncidenciasUsuariosApp ON Administradores.id_administrador=IncidenciasUsuariosApp.id_administrador) ON CategoriasAdministradores.id_categoriaAdministrador=Administradores.id_categoriaAdministrador) ON Incidencias.id_incidencia=IncidenciasUsuariosApp.id_incidencia) ON Prioridades.id_prioridad=Incidencias.id_prioridad) ON Sites.id_site=Incidencias.id_site
ORDER BY Incidencias.id_incidencia, IncidenciasUsuariosApp.fecha DESC;
y esto es lo que hago en el evento onchange del textbox
Código:
Private Sub txtbxFilter_Change()
    Dim querySELECT, queryFROM, queryWHERE, queryORDER, query As String
    
    querySELECT = "SELECT *"
    queryFROM = " FROM [Cons Incidencia BusquedaAvanzada]"
    queryWHERE = " WHERE nombre LIKE '%" & Me.txtbxFilter.Text & "%' OR Incidencias.titulo LIKE '%" & Me.txtbxFilter.Text & "%' OR Incidencias.descripcion LIKE '%" & Me.txtbxFilter.Text & "%' OR IncidenciasUsuariosApp.tarea LIKE '%" & Me.txtbxFilter.Text & "%'"
    queryORDER = " ORDER BY idIncidencia, IncidenciasUsuariosApp.fecha DESC"
     
    query = querySELECT & queryFROM & queryWHERE & queryORDER
    
    Me.Frm_Incidencias_BusquedaAvanzada.Form.RecordSource = query
    
End Sub
que me falla?
cuando escribo algo me vacía el contenido del subform y cuando dejo el textbox vacío , no me recarga el subform con todos los datos.


Gracias!
  #8 (permalink)  
Antiguo 09/07/2009, 02:52
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 17 años, 3 meses
Puntos: 18
Respuesta: ACCESS - Búsqueda Avanzada

De momento cambia el % por *, que es el caracter comodin en access. Prueba y a ver si surge algun otro problema.

Un saludo
  #9 (permalink)  
Antiguo 09/07/2009, 03:46
 
Fecha de Ingreso: marzo-2007
Mensajes: 538
Antigüedad: 17 años, 8 meses
Puntos: 0
Respuesta: ACCESS - Búsqueda Avanzada

era eso, mil gracias!!!


Un saludo!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:38.