Estoy trabajando en access con una consulta basada en TextBoxes de un formulario. Básicamente busca locales por nombre, dirección, altura.
Por ejemplo un ejemplo de la estructura que estoy usando el WHERE de la instrucción SQL:
…
AND
(([NombreDeFantasia] Like "*" & [Forms]![frmBusquedas]![txtNombreDeFantasia] & "*" Or [Forms]![frmBusquedas]![txtNombreDeFantasia] Is Null)=True)
AND
…
[NombreDeFantasia] es un string común y funciona bien la consulta
Ahora bien, lo que no se me ocurre ahora mismo cómo hacer es para filtrar por altura de la calle (numerción de la calle).
Por ejemplo:
Un lugar tiene como dirección Rivadavia 1551
Otro Corrientes 356/358 (la altura va desde el N° 356 añ N° 358)
Yo para captar eso tengo dos campos de altura, “AlturaDesde” y “AlturaHasta”
Por lo general se carga la primera altura nada más (como el lugar de Rivadavia)
Ahora quiero filtrar las alturas con dos controles, txtAlturaDesde y txtAlturaHasta y meterlos en la Query esa.
Lo que estaría haciendo es filtrar un rango de numeración con otro rango de numeración
Ej: si el usuario quiere filtrar entre 1110 y 1180 le puede saltar un lugar con rango de altura entre 1170 a 1190.
Pero a su vez también tiene que poder incluirse que si el usuario busca por “la altura 5689”, le tire bien los locales que tienen esa altura exacta como también los que entran en ese rango (por ejemplo entraría uno que tenga altura 5687 a 5691)
Entonces tendría que diferenciar 4 casos
1) 1ALTURA DE BUSQUEDA -> RANGO DE ALTURA
BUSCA: 1589 -> ENCUENTRA 1587-1589 o 1587-1591
2) 1ALTURA DE BUSQUEDA -> 1ALTURA (EXACTA)
BUSCA: 1589 ->ENCUENTRA 1589
3) RANGO DE BUSQEUDA -> ALTURA EXACTA
BUSCA: 1587-1591 ->ENCUENTRA 1589
4) RANGO DE BUSQUEDA ->RANGO DE ALTURA
BUSCA: 1587-1591 -> ENCUENTRA 1585-1587
O sea, cuando haya alguna numeración coincidente, lo tiene que tirar
Por ahora no se me ocurre como hacer
Capaz se haría más fácil si hago alguna como forzar al usuario a completar el rango de alturas como 1589-1589 cuando el lugar tiene una sola altura, y también forzar a que busque siempre rango de alturas, por más que busque una única. Con eso capaz saco una carga al asunto… pero tampoco sé bien si hay mucha diferencia.
Incluso podría traer problemas porque entre 1589-1589 capaz con cierta función el programa interpreta que no hay numeraciones entre esas alturas…
Bueno sh eso me parece… por ahora no tengo ni la más puta idea eh? Y en mi mente es bastante típico tener que hacer aproaches así nocierto, así que supongo que podrán ayudarme
Por ejemplo un ejemplo de la estructura que estoy usando el WHERE de la instrucción SQL:
…
AND
(([NombreDeFantasia] Like "*" & [Forms]![frmBusquedas]![txtNombreDeFantasia] & "*" Or [Forms]![frmBusquedas]![txtNombreDeFantasia] Is Null)=True)
AND
…
[NombreDeFantasia] es un string común y funciona bien la consulta
Ahora bien, lo que no se me ocurre ahora mismo cómo hacer es para filtrar por altura de la calle (numerción de la calle).
Por ejemplo:
Un lugar tiene como dirección Rivadavia 1551
Otro Corrientes 356/358 (la altura va desde el N° 356 añ N° 358)
Yo para captar eso tengo dos campos de altura, “AlturaDesde” y “AlturaHasta”
Por lo general se carga la primera altura nada más (como el lugar de Rivadavia)
Ahora quiero filtrar las alturas con dos controles, txtAlturaDesde y txtAlturaHasta y meterlos en la Query esa.
Lo que estaría haciendo es filtrar un rango de numeración con otro rango de numeración
Ej: si el usuario quiere filtrar entre 1110 y 1180 le puede saltar un lugar con rango de altura entre 1170 a 1190.
Pero a su vez también tiene que poder incluirse que si el usuario busca por “la altura 5689”, le tire bien los locales que tienen esa altura exacta como también los que entran en ese rango (por ejemplo entraría uno que tenga altura 5687 a 5691)
Entonces tendría que diferenciar 4 casos
1) 1ALTURA DE BUSQUEDA -> RANGO DE ALTURA
BUSCA: 1589 -> ENCUENTRA 1587-1589 o 1587-1591
2) 1ALTURA DE BUSQUEDA -> 1ALTURA (EXACTA)
BUSCA: 1589 ->ENCUENTRA 1589
3) RANGO DE BUSQEUDA -> ALTURA EXACTA
BUSCA: 1587-1591 ->ENCUENTRA 1589
4) RANGO DE BUSQUEDA ->RANGO DE ALTURA
BUSCA: 1587-1591 -> ENCUENTRA 1585-1587
O sea, cuando haya alguna numeración coincidente, lo tiene que tirar
Por ahora no se me ocurre como hacer
Capaz se haría más fácil si hago alguna como forzar al usuario a completar el rango de alturas como 1589-1589 cuando el lugar tiene una sola altura, y también forzar a que busque siempre rango de alturas, por más que busque una única. Con eso capaz saco una carga al asunto… pero tampoco sé bien si hay mucha diferencia.
Incluso podría traer problemas porque entre 1589-1589 capaz con cierta función el programa interpreta que no hay numeraciones entre esas alturas…
Bueno sh eso me parece… por ahora no tengo ni la más puta idea eh? Y en mi mente es bastante típico tener que hacer aproaches así nocierto, así que supongo que podrán ayudarme




Comentario