Access - Ayuda con Buscador

 
Vista:
sin imagen de perfil

Ayuda con Buscador

Publicado por Jose (42 intervenciones) el 04/09/2017 21:17:42
Hola buenas estoy realizando este buscador desde un formulario donde al seleccionar información en los combobox estos se veran desplegados en en el subformulario ordenes.

La primera parte que respecta al área y equipo funcionan al apretar el bóton sin ningún problema gracias a la ayuda del youtuber VBA Access. Ahora mi duda es como puedo que al activar el check box de tipos de intervención y seleccionando alguno de los parámetros en su interior estos se vean ordenados por lo escogido en el además de que sea al equipo ya seleccionado con anterioridad en los combobox anteriores gracias.

adjunto fotos de mi formulario y el codigo VBA que tengo hasta el momento.


consulta1
consulta2
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Oscar Pérez
Val: 198
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Ayuda con Buscador

Publicado por Oscar Pérez (80 intervenciones) el 07/09/2017 14:15:33
Buenas!

Consejos: En las cláusulas SQL te puedes ahorrar el nombre de la tabla delante de cada campo, si todos los campos vienen de la misma tabla, odio eso. Luego ya le dices dónde están los campos en el FROM Ingreso_orden... Queda más corto y más claro... Incluso puedes mezclar campos de distintas tablas, siempre y cuando hagas bien el JOIN (INNER, LEFT, RIGHT) para unirlas.

Además estás usando una variable para el sql, cosa que tampoco me gusta hacer porque no es necesario, y consumes recursos...

Si quieres todos los campos, puedes usar: "SELECT * FROM nombre_tabla.... bla bla bla ya ves lo que simplificas, que luego te falla un nombre de campo por un carácter y te vuelves loco.

Los nombres de los botones o controles en general, nunca los dejo por defecto, también me da mucha rabia el nombre que les pone access, siempre los cambio en cuanto los creo. Luego te falla el código y adivina que hace "comando25" jajajaja mucho mejor sería: "SubRutinaConError"

En fin... Manías que tiene cada uno, pero bueno... A lo que vamos XD

Lo que tienes que hacer es poner en el evento al cambiar del listbox de las intervenciones, cambiar el origen del registro Ordenes para que te haga el filtro por el area, el equipo y además el tipo de intervencion, y luego haces un requery. Algo así:

1
2
3
4
Private Sub Intervencion_Change()
Forms!Busqueda!Ordenes.Form.RecordSource="SELECT * FROM nombre_tabla WHERE Area=" & Me.Area & " AND Equipo=" & Me.Equipo & " AND Intervencion='" & Me.Intervencion & "' ORDER BY (Ordena por el campo que quieras);"
forms!SubOrdenes.Requery
End Sub

Aproximadamente, seguramente tendrás que modifcar cosas pero deberías captar la idea...

Saludos!
Oscar.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Ayuda con Buscador

Publicado por Jose (42 intervenciones) el 07/09/2017 16:38:05
Hice lo que mencionas y funciona el problema es que si pongo 2 cuadro de texto para indicar una fecha de inicio y termino de la busqueda se puede realizar de la misma forma o debo crear algo diferente.

Muchas gracias por tu ayuda
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Oscar Pérez
Val: 198
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Ayuda con Buscador

Publicado por Oscar Pérez (80 intervenciones) el 08/09/2017 08:52:59
Buenas!

Puedes hacerlo de la misma forma, tan sólo tienes que ir concatenando al SQL del origen del registro de la búsqueda, FechaInicio y FechaFin que sean tipo fecha.

1
2
Forms!Busqueda!Ordenes.Form.RecordSource="SELECT * FROM nombre_tabla WHERE Area=" & Me.Area & " AND Equipo=" &
Me.Equipo & " AND Intervencion='" & Me.Intervencion & "' AND FechaInicio>=" & Me.FechaInicio & " AND FechaFin<=" & Me.FechaFin & "ORDER BY (Ordena por el campo que quieras);"

Saludos!
Oscar.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Ayuda con Buscador

Publicado por Jose (42 intervenciones) el 08/09/2017 14:45:08
oye y si los cuadros de texto estan ambos relacionados al mismo campo de la tabla deberia ser igual el codigo o deberia usar un between?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Oscar Pérez
Val: 198
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Ayuda con Buscador

Publicado por Oscar Pérez (80 intervenciones) el 08/09/2017 16:22:37
Buenas!

Si tienes 2 cuadros de texto para fecha inicio y fecha fin, y quieres buscarlos en un único campo de la tabla llamado Fecha sería...

Fecha>=" & Me.FechaInicio & " AND Fecha<=" & Me.FechaFin"

No hace falta el between, ya que esto mismo es igual al between, buscar entre las dos fechas...

Saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Ayuda con Buscador

Publicado por Jose (42 intervenciones) el 08/09/2017 17:22:51
Estuve probando de varias maneras y no logr hacer funcionar lo que es fecha todo lo demás funciona bien te adjunto mi BBDD para que me puedas señalar el error que tenga porfavor muchas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Oscar Pérez
Val: 198
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Ayuda con Buscador

Publicado por Oscar Pérez (80 intervenciones) el 18/09/2017 08:38:54
Buenos días!

Se me olvidó comentarte que cuando se trabaja con fechas hay que utilizar el operador "#" para situar la fecha dentro del SQL, así te quedaría:

1
Forms!Busqueda!SubIngreso_orden.Form.RecordSource = "SELECT * FROM Ingreso_orden WHERE Codigo_equipo= '" & Me.b_e & "' AND Tipo_intervencion= '" & Me.b_ti & "' AND Fecha_inicio>=#" & Me.f_inicio & "# AND Fecha_inicio<=#" & Me.f_termino & "#  ORDER BY Id;"

O con el famoso BETWEEN

1
Forms!Busqueda!SubIngreso_orden.Form.RecordSource = "SELECT * FROM Ingreso_orden WHERE Codigo_equipo= '" & Me.b_e & "' AND Tipo_intervencion= '" & Me.b_ti & "' AND Fecha_inicio BETWEEN #" & Me.f_inicio & "# AND #" & Me.f_termino & "#  ORDER BY Id;"

Saludos!
Óscar
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar