Ver Mensaje Individual
  #49  
Viejo 24/03/16, 11:07:30
Array

[xs_avatar]
cace0353 cace0353 no está en línea
Usuario muy activo
 
Fecha de registro: may 2010
Localización: Arenys de Mar (B)
Mensajes: 508
Modelo de smartphone: Pixel 8 Pro - 256 Gb.
Tu operador: Jazztel
 Cita: Originalmente Escrito por danko9696 Ver Mensaje
Le he estado dando algo más de caña a sqlite. Estaba casi seguro de que debía funcionar y así es. He hecho alguna cosa parecida a lo que haría falta para este caso, que sería más o menos:

CASE
WHEN habitantes<999 THEN habitantes
WHEN habitantes >999 AND habitantes<=999999
THEN SUBSTR(habitantes,1,LENGTH(habitantes)-3) || '.' || SUBSTR(habitantes,LENGTH(habitantes)-3+1,3)
WHEN habitantes >999999
THEN .... <lo mismo, jugar con SUBSTR y demas>
.
.
END
AS habitantesformateado

Aparatoso pero una vez hecho queda todo encapsulado en la consulta y más rápido si tienes que repetir el proceso muchas veces.
Gracias @danko9696 por tu interés (no sé porqué será, pero a los que programamos por afición los retos, propios o ajenos, nos estimulan cantidad!)

Estoy subscrito a este hilo y lo sigo a diario. Probaré en la próxima el método que sugieres. En realidad ya habia intentado el método de fragmentar la cadena incial por grupos de 3 cifras insertando los puntos en JS, pero no me acababa de funcionar por algún error de sintaxis (estoy en 1º aún...)

De momento lo he resuelto como describo en el post #47 de este mismo hilo.

Lo que hago en el programa definitivo son dos consultas con Sqlite siempre que elijo con un botón uno de los criterios de búsqueda: Lista global, Lista por la Provincia elegida en un desplegable Rueda, Lista por la Comarca elegida en otro desplegable Rueda, Lista por nombre elegido en un campo de texto editable.

- Primera consulta por POBLACIO ordenada ASC y guardada en %població
- Segunda consulta por POBLACIO,HABITANTS ordenada por HABITANTS DESC y guardada en %habitants

Luego separo la variable %poblacio y "redibujo" la escena.

Si le doy al boton de Ordenar por habitantes una primera vez, guarda %poblacio en una variable %temporal y establezco como %poblacio lo que contiene %habitants (es decir la lista de pares POBLACIO - HABITANTS ordenada por nº de habitantes) para el conjunto de poblaciones que se muestra en pantalla de acuerdo con los filtros que se hayan puesto. Se ejecuta el JS que descompone y formatea los resultados y se muestra la escena otra vez.

Si de doy al botón Ordenar por habitantes una segunda vez se comporta como un commutador: pone en %poblacio lo que antes habia guardado en %temporal (es decir la lista que contiene sólo los nombres) separa la variable y muestra de nuevo la escena.



El resultado és muy eficiente: para mostrar la lista completa de la base de datos (948 poblaciones) ordenada por población está entre 0,79 y 1,12 seg. un rayo, vamos!

Y pensar que, en Tasker puro tardaba 12 seg para mostrar la lista reducida de 500 poblaciones! Tenia incluso una pantalla de espera tranquilizadora para que me contara lo que estaba haciendo... que ahora, evidentemente, he suprimido.
__________________
Me apasiona volar, pero con los pies en el suelo...
Responder Con Cita