Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android

Respuesta
 
Herramientas
  #1  
Viejo 06/10/11, 02:09:11
Array

[xs_avatar]
maxenz maxenz no está en línea
Usuario novato en la web
 
Fecha de registro: oct 2011
Mensajes: 9
Tu operador: Movistar

Control de seleccion para filtro de query

Que tal gente, a ver si alguno me da una mano.

Tengo una pantalla, en la cual tengo 3 filtros para elegir y de ahi ejecutar una query, como si fuesen todos WHERE = "lo que selecciono en el filtro"

Me mate haciendo los spinners, que me devuelvan bien los datos etc.. hasta que me di cuenta de un detalle, el spinner no tiene un DEFAULT VALUE.. o sea, si yo solo quiero usar 2 filtros de los 3 , no se como evitar que me seleccione algun valor del filtro que no quiero usar!!!

Me gusta como se visualiza el spinner y es lo que quiero, alguna idea de como puedo solucionar esto? O algun otro control me dejaria "dejarlo en blanco" cuando no quiero usar ese filtro?

Gracias
Responder Con Cita


  #2  
Viejo 06/10/11, 02:38:48
Array

[xs_avatar]
iliberis iliberis no está en línea
Miembro del foro
 
Fecha de registro: abr 2009
Localización: Graná, España
Mensajes: 439
Modelo de smartphone: HTC Trinity, Samsung Galaxy Mini, ZTE Blade, ZTE Light Pro
Tu operador: Simyo
Asi, a lo bestia, yo prepararia una string con la cadena SQL sin condiciones

cSQL="SELECT BLABLABLA "

A continuacion, segun el valor de los spinner, voy añadiendo condiciones a la cadena... En primer lugar, si alguno de los spinner tiene un valor, cSQL += "WHERE " (esto seria solo para la primera condicion)

y despues, tan solo ir agregando los distintos valores (si los hay) cSQL += "condicion " y cSQL += "AND condicion2".

Si algun spinner no tiene asignado un valor, sencillamente no agregamos este trozo de la cadena.

Es, simplemente, ir construyendo la cadena poco a poco. Ya dejo que tu te plantees como podrias discriminar entre si poner "WHERE" (primera condicion) o "AND" (para el resto)

De esta forma te construyes la cadena para cualquier numero de condiciones, lo mismo una, que dos, que 10.

cSQL+= "
__________________
Por respeto a los demas:
  • Preséntate. Esto es un foro, no un centro de soporte
  • Escribe correctamente, para que podamos entendernos todos. Esto NO es un SMS, sino un foro.
  • Usa el buscador. No muerde. Evitemos tener cien hilos con la misma pregunta.
  • Insisto: Usa el buscador Usa el buscador Usa el buscador Usa el buscador
  • No escribas en mayúsculas. Es de mala educación.

Y, en general, trata a todo el mundo como te gusta a ti que te traten.
Responder Con Cita
  #3  
Viejo 06/10/11, 02:54:39
Array

[xs_avatar]
maxenz maxenz no está en línea
Usuario novato en la web
 
Fecha de registro: oct 2011
Mensajes: 9
Tu operador: Movistar

eso lo tengo hecho ya, mi problema es que no siempre quiero usar todos los filtros que tengo en los spinners, y siempre hay algo seleccionado si o si.

Ponele que uso los 2 spinners y dejo uno vacio, me toma las 3 condiciones porque si o si algo seleccionado hay en el otro spinner que no uso!! Si pudiese poner un valor default en el spinner, podria obviar que pase ese parametro en el listener del click del spinner, entendes?

Ponele que en cada spinner me aparezca Seleccione el dato1 , seleccione el dato2, seleccione el dato3..


en el listener pongo, si el dato que esta en el spinner es igual a seleccione el dato3, no hagas nada... esa opcion me quedaria, como podria plantearla? ya que no existe la default option en los spinners!
Responder Con Cita
  #4  
Viejo 06/10/11, 04:03:43
Array

[xs_avatar]
iliberis iliberis no está en línea
Miembro del foro
 
Fecha de registro: abr 2009
Localización: Graná, España
Mensajes: 439
Modelo de smartphone: HTC Trinity, Samsung Galaxy Mini, ZTE Blade, ZTE Light Pro
Tu operador: Simyo
Sería cuestión de leer el contenido de la cadena y compararlo literalmente con "seleccione el dato x". Ya, lo del "no hagas nada", es simplemente no añadir esa parte de la condición a la cadena de consulta.

Simplificando muchiiiiisimo:

Código:
if (seleccion=="Seleccione el dato 2"){
  
} else {
  cSQL+="AND campo=" + seleccion;
}
Ahi el tema delicado es AND o WHERE. Sería cuestion de añadir otra variable que contenga "WHERE" y se añada a la consulta y, una vez añadida la primera vez, se cambie por "AND"

A ver si te sale bien
__________________
Por respeto a los demas:
  • Preséntate. Esto es un foro, no un centro de soporte
  • Escribe correctamente, para que podamos entendernos todos. Esto NO es un SMS, sino un foro.
  • Usa el buscador. No muerde. Evitemos tener cien hilos con la misma pregunta.
  • Insisto: Usa el buscador Usa el buscador Usa el buscador Usa el buscador
  • No escribas en mayúsculas. Es de mala educación.

Y, en general, trata a todo el mundo como te gusta a ti que te traten.
Responder Con Cita
  #5  
Viejo 06/10/11, 04:06:38
Array

[xs_avatar]
maxenz maxenz no está en línea
Usuario novato en la web
 
Fecha de registro: oct 2011
Mensajes: 9
Tu operador: Movistar

Mi pregunta es, como puedo hacer que aparezca "SELECCIONE EL DATO 2 " ?? eso es lo unico q me falla, para hacerme entender, si uso todos los filtros, funciona todo bien! pero ponele que quiero usar 2, hay un filtro que no quiero usar!! entonces me caga toda la consulta porque me lo usa al tener algo "seleccionado" por defecto. Yo cargo los spinners desde una query, como hago para q me aparezca SELECCIONE EL DATO 2 por default? eso necesito saber, lo demas que me comentas me funciona todo
Responder Con Cita
  #6  
Viejo 06/10/11, 05:12:54
Array

[xs_avatar]
iliberis iliberis no está en línea
Miembro del foro
 
Fecha de registro: abr 2009
Localización: Graná, España
Mensajes: 439
Modelo de smartphone: HTC Trinity, Samsung Galaxy Mini, ZTE Blade, ZTE Light Pro
Tu operador: Simyo
Ah, vale... no entendí bien la pregunta... es que a estas horas ya no rige uno. No he tenido la necesidad, asi que no lo he probado. Una posible solución, y no creo que sea ni de lejos la mejor, sería colocar el texto por defecto en un array y, a continuación, cargar el resultado de la consulta en ese mismo array. Después se rellena el spinner con un ArrayAdapter y ya los tienes todos juntos.

Por ultimo, simplemente seleccionas el primer elemento del spinner y ya quedaría hasta bonito.

No creo que vaya muy bien con una tabla muy grande, pero al menos SQLite es bien rápido. A ver si sale alguien con una idea mejor, que seguro que las hay.
__________________
Por respeto a los demas:
  • Preséntate. Esto es un foro, no un centro de soporte
  • Escribe correctamente, para que podamos entendernos todos. Esto NO es un SMS, sino un foro.
  • Usa el buscador. No muerde. Evitemos tener cien hilos con la misma pregunta.
  • Insisto: Usa el buscador Usa el buscador Usa el buscador Usa el buscador
  • No escribas en mayúsculas. Es de mala educación.

Y, en general, trata a todo el mundo como te gusta a ti que te traten.
Responder Con Cita
  #7  
Viejo 06/10/11, 07:23:07
Array

[xs_avatar]
Niver Niver no está en línea
Miembro del foro
 
Fecha de registro: ago 2010
Mensajes: 41
Modelo de smartphone: Nexus One

Yo me crearía tres atributos String privados de mi actividad strOpcionX. Uno para cada spinner e inicializados a tus valores por defecto. Después a cada spinner le pones un evento de actualizar su atributo concreto strOpcionX.

El spinner que no se haya tocado se queda con el valor por defecto de la inicialización

Espero que sea útil
Responder Con Cita
  #8  
Viejo 07/10/11, 03:53:33
Array

[xs_avatar]
maxenz maxenz no está en línea
Usuario novato en la web
 
Fecha de registro: oct 2011
Mensajes: 9
Tu operador: Movistar

Gracias gente, lo termine solucionando de una manera no muy linda pero funcional. A mi base de datos le agregue un registro con los titulos que queria, y seleccione ese dato como el primero de todos en los spinners.. despues cuando era momento de hacer el put extra para pasar los datos a mi actividad donde hago la query, filtro si es que el dato del spinner es distinto del titulo y listo...
Responder Con Cita
Respuesta

Estás aquí
Regresar   Portal | Indice > Todo sobre Android > Programación y Desarrollo para Android



Hora actual: 08:51:24 (GMT +1)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /