Tasker Para hablar de todo lo relacionado con la aplicación tasker

Respuesta
 
Herramientas
  #1  
Viejo 08/03/16, 11:13:49
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: 504
Modelo de smartphone: Pixel 8 Pro - 256 Gb.
Tu operador: Jazztel
CONSULTA DE UNA TABLA DE DATOS DE EXCEL EN TASKER (nivel básico)

Hay lenguajes de programación específicos para manejar bases de datos (Sqlite3, por ejemplo). Sin embargo, para los que hacemos nuestros propios programas de bricolage con Tasker, se hace muy trabajoso aprender a programar en otro lenguaje sólo para hacer cuatro "cositas"

Hace tiempo que utilizo este procedimiento para preparar mis tablas de datos Excel en el PC para su uso con Tasker, y hoy me he decidido a compartirlo en forma de tutorial. No veremos opciones de filtraje con condiciones ni ordenación por columnas ya que se escapa de la pretensión inicial. Tampoco hay posibilidad para modificar los datos.

En Tasker habrá quizás procedimientos más eficientes que los que propongo, por esto me declaro totalmente abierto a vuestras aportaciones para mejorarlo entre todos.


A.- PREPARACIÓN DE LOS DATOS

Partimos de que ya tenemos nuestra tabla abierta y llena en Excel. En las celdas podemos tener nombres-apellidos, nombres de archivo de imagen.extensión, URL de páginas web, valores numéricos, direcciones postales, teléfonos, coordenadas GPS, etc.

Pasos a seguir:

En Excel

1.- Ordenar la tabla por la primera columna (procurar poner en la primera columna los datos base de la tabla. P.e.: En una tabla de alumnos/notas, situar en la columna A los Apellidos, Nombre de los alumnos. En una tabla de productos/precios situar en la columna A las referencias o nombres de los productos)

2.- Eliminar la fila de encabezamiento (títulos de las columas).

3.- Eliminar las "hojas" extras que hubiera, colores, formatos de texto como los separadores de miles, negrita, etc. Si hay datos numéricos decimales substituir las , por . (punto) en las columnas afectadas ya que en Tasker, para las operaciones matemáticas, es necesario que el separador decimal sea el punto.

4.- En "Guardar archivo como..." elegir CSV, datos separados por coma (; en realidad)
Esto generará un archivo con extensión .csv que deberemos cerrar y guardar con el nombre que queramos. Excel nos dice que se perderán funcionalidades, pero le decimos que si, que lo aceptamos. Y salimos de Excel.

En Windows

5.- Situándonos sobre el archivo CSV generado clicamos una vez sobre él con el botón derecho y elegimos "Abrir con..." en el menú contextual que se abre.
Elegimos "Microsoft Word".
Cuando nos aparezca el archivo lo veremos como texto, con las filas separadas con saltos de línea y los datos de las columnas separadas por ;
Le damos a "Guardar como...", seleccionamos el nombre que ya teníamos con la extensión .txt y, en el menú que se nos abre, seleccionamos la opción "Otra codificación", entonces en la parte derecha vamos al final de la lista y marcamos sobre la opción "Unicode (UTF-8)" Ya podemos guardar y cerrar Ms Word. (Esta codificación es la que usa Tasker y nos permite ver correctamente los caracteres tal y como estaban en el archivo original, según posteó @Caravantes en el hilo de trucos)

6.- Este archivo contiene toda nuestra base de datos. Podeis copiarlo a vuestro dispositivo o ponerlo en Dropbox.
Si tenemos instalado DropSync tambien podemos sincronizarlo con el que tenemos en el PC, y así, cada vez que actualizemos el .CSV y el TXT original, tendremos los datos en el móvil actualizados.


B.- CONSULTA DE LA BASE DE DATOS EN TASKER USANDO ACCIONES JavaScriptlet


A destacar que todo lo haremos usando solamente variables locales.

Para la consulta de nuestra base de datos necesitaremos, en Tasker, lo sigüiente:

· Una Tarea, que llamaré, p.e. GESTION, para extraer la información del archivo generado en el apartado A.

· Una escena LISTA que nos mostrará los nombres representativos de cada línea de datos (los de la columna A) y que servirá para seleccionar a que línea de datos queremos acceder para verlos en la escena FICHA

· Una escena FICHA diseñada a nuestro gusto (cuadros de texto, imágenes, mapa, botones…) para mostrarnos todos los campos de cada linea. (Todos los datos del alumno N, todos las características del producto P, etc.)

B.1 Tarea GESTION

Partimos del archivo de texto en el que, como hemos visto, las filas de datos de la tabla se encuentran separados con saltos de linea y los datos pertenecientes a cada columna dentro de cada fila están separados por ;

Creamos una nueva tarea GESTION

Utilizamos una acción "Leer párrafo" del grupo "Archivo" (valiosísima aportación del compañero @WillyWeb ya que la acción "Leer archivo" no extraia los datos de manera que JavaScript los entendiera mientras que si lo hace en Tasker puro):

Tasker Acción: Leer párrafo
Archivo: seleccionamos el archivo que contiene los datos con la lupa
Párrafo: 1
A la variable: %datos (ó el nombre que queramos, pero en minúsculas, como variable local)

Ahora es cuando vamos a generar las matrices que contienen los datos de las filas y los de cada columna usando intrucciones en JavaScript. (Os recomiendo la lectura del tutorial de @maid450 linkado en el post #1 de este hilo)

Tasker Acción : Código > JavaScriplet
Usaremos una única acción con las sigüientes instrucciones escritas (no olvidéis colocar los ; al final de las lineas que lo llevan). En rojo la explicación de que hacemos en cada línea y que no se escribe en el código:

var columna_a = []; declaramos el array que contendrá los datos de la columna A de la tabla
var columna_b = []; declaramos el array que contendrá los datos de la columna B de la tabla
------- declaramos tantos arrays como columnas tengamos en la tabla original -------

var columna_n = []; array que contendrá los datos de la última columna con datos que tengamos

datos = (datos.split("\n")); Dividimos la variable de tasker %datos (en JS se escriben los nombres de variable sin el % delante) que resultaba de la acción "leer párrafo" por líneas, usando como separador el código de salto de línea "\n" y almacenando el resultado en un array local "datos"

for (i=0 ; i<datos.length; i++) Iniciamos el bucle que se repetirá desde i=0 y mientras i sea menor que el número de líneas, incrementando el valor de i en 1 a cada vuelta
{
linea = (datos[i].split(";")); aquí asignamos a la variable "linea" el contenido entero de cada linea datos{i] de nuestra hoja de Excel y la dividimos por el carácter ; A cada vuelta del bucle se sobreescribe el valor del array "linea" ya que no nos interesa conservarlo
columna_a[i] = linea[0]; y creamos el array conteniendo los datos de la columna A de manera que en la primera vuelta (cuando i = 0) pone el valor que hay en la primera celda de la primera fila. En la segunda vuelta pone el valor de la primera celda de la segunda fila,....
columna_b[i] = linea[1];
columna_c[i] = linea[2];
…………
columna_n[i] = linea[n]; datos de la columna N
}

En este punto ya tenemos generadas las matrices lineales de datos para usar en Tasker y con una sola acción!

Con una acción "Establecer variable" asignamos valor a la variable %titulo que encabezará la escena LISTA

Para acabar añadiremos (luego, cuando hayamos preparado la escena según se explica en el punto B.2.1) una llamada a la escena LISTA: acción "Mostrar escena"


B.2 CONSULTA DE LOS DATOS

A destacar que todo el trabajo se hace sin salir de la tarea GESTION que llama a la escena LISTA. Las subtareas para operaciones concretas se escribirán en la pestaña "click en ítem" que tienen los elementos "texto", "botón", "imagen", "rectángulo" que colocaremos en las escenas. Esto lo hacemos así porque nos permite escribir la aplicación usando sólo variables locales ya que no salimos de la tarea principal. (Aunque podríamos usar llamadas a subtareas pasándoles en %par1 y %par2 los parámetros necesarios, resulta más claro y simple así)

B.2.1
Creamos una Escena LISTA a toda pantalla con un elemento "Texto" para el título de la escena en la parte superior (que mostrará el valor de la variable %titulo) y un elemento "Menú" que ocupe el resto de la pantalla.
Más adelante podemos añadir botones para acciones más elaboradas como cambiar la columna de ordenación, filtrar los datos por los valores de alguna columna (p.e. clientes de determinada localidad, productos de hasta x euros, etc), o elemento "Texto" que nos indique el número de datos mostrados: %columa_a(#), etc...

En el elemento central "Menú", durante la ejecución, nos aparecerá luego la lista deslizante de datos de la columna A

Parámetros del elemento Menú de la escena LISTA:

Origen: Matriz de variables
Variable: %columna_a
Modo de selección: Simple
Disposición: Clicamos sobre el dibujo del rectangulito para configurar las lineas de nuestro menú...

Este elemento es el mas laborioso, con mucho, de configurar, ya que hay que establecer medidas altura/anchura, color, tamaño del texto, para el "label". Os aconsejo que oculteis los otros elementos ("icon" y "index"), extendiendo el "label", a izquierda y derecha, por encima de ellos ya que no los vamos a usar
Cuando terminemos le damos al botón de atrás.

En la pestaña "Click en ítem" del elemento "Menú" pondremos, cuando la hayamos creado en el apartado que sigue, la acción "Mostrar escena" Nombre de la escena: FICHA, Mostrar como: Actividad, pantalla completa, sin título. Mostrar boton salida: OFF

B.2.2 Creamos una escena FICHA para mostrar los resultados correspondientes al elemento seleccionado en la escena LISTA

En esta escena FICHA podemos tener elementos de cualquier tipo en los que pondremos los valores referenciados con "%columna_a(%tap_index)" ,"%columna_b(%tap_index)", "%columna_c(%tap_index)" "%columna_d(%tap_index)" etc. La variable %tap_index, creada por Tasker al clicar sobre un nombre de la lista, contiene el nº de orden del elemento que hayamos elegido.

También podemos poner en la Escena botones o imágenes (Ejemplos: una imágen con el icono de la aplicación Teléfono que al pulsarlo -pestaña "Clik en item"- tenga una acción Llamar al dato que contiene el nº de teléfono -en el ejemplo: %columna_f(%tap_index)-, una imagen con el icono de la aplicación Maps para navegar a la dirección -en el ejemplo: @columna_a(%tap_index),columna_d(%tap_index) es decir "población,provincia"-, un cuadro de texto que muestre el PVP multiplicando un dato por un coeficiente, etc, etc...), siempre apuntandp al dato que queremos: %columna_n con la posición seleccionada %tap_index

(No olvideis poner los"Mostrar escena:FICHA" en el "Clic en Item" del menú y al final de la tarea GESTION...)

Y ya está, tenemos un visor de nuestros datos de Excel que nos permite navegar por sus valores y ejecutar varias acciones con los datos mostrados. En el ejemplo que adjunto hay dos botones para explorar adelante y atras toda la base de fila en fila. Para hacerlo hay que poner en la pestaña "Click en ítem" una acción Establecer variable %tap_index A %tap_index+1 (-1 para ir atrás...) seguida de una acción "Mostrar escena" > FICHA.

Enfín, espero que, con este tutorial, un buen número de taskeros suban un peldaño en su nivel de programación y se atrevan con cosas más "gordas". Teniendo la base no és difícil!

---------------------------------------------------------------------------------------------------------------------------
Para ahorraros trabajo os pongo, más abajo, el ejemplo que he preparado y que os ayudará a entender como funciona todo. También podeis adaptarlo para vuestros usos.

La base de datos es una tabla con los 500 primeros nombres de pueblos de Catalunya sacada de la web de entes locales de la comunidad y reducida (en Excel) a 11 columnas. Total 5.500 celdas… En principio lo hice con los casi 900 nombres y Tasker "petaba" a la hora de mostrar las fichas…

Tanto el nombre de la tarea como los de las escenas coinciden con los del tutorial. También coinciden los nombres de variables (%columna_a, %columna_b,… ) para facilitar el seguimiento de lo expuesto aquí en Tasker. No obstante recomiendo que los nombres que uséis en vuestras aplicaciones futuras sean menos abstractos (%poblacion, %c_postal, %comarca,…).

Las escenas están preparadas para una pantalla de 1080*1920 puntos. Si vuestro dispositivo no tiene esta resolución deberéis modificar los elementos y el tamaño del texto para ajustarlos.

Enlace al ZIP que contiene el archivo base CSV, el TXT generado, y los XML correspondientes a la tarea GESTION y a las escenas LISTA y FICHA. Solo os falta copiarlo a vustro dispositivo, descomprimirlo y importar los XML de la tarea y de la escena...
También deberéis comprobar y/o modificar la ruta del archivo de texto en la acción "Leer párrafo" de la tarea.


https://dl.dropboxusercontent.com/u/13481585/Gestion_BD.zip
--------------------------------------------------------------------------------------------------------------------------

Saludos a todos y buen provecho!

NOTAS:

- La primera población (Abella de la Conca) está repetida
- La Tarea adjunta en XML incorpora dos acciones para mostrarnos el tiempo de ejecución en la escena LISTA
- La escena LISTA lleva además un indicador de elementos mostrados
- Aunque seria posible crear una escena-formulario modificar nuestros datos y actualizar el archivo TXT no es aconsejable. Efectivamente, el Excel con extensión CSV no podemos modificarlo desde aquí. Por tanto el mantenimiento de nuestros datos debe hacerse en Excel y luego repetir el proceso del apartado A de este tutorial.
__________________
Me apasiona volar, pero con los pies en el suelo...

Última edición por cace0353 Día 09/03/16 a las 09:55:17. Razón: No aparecia el link al post de maid450. No se veia completa una de las lineas de código JS
Responder Con Cita
Los siguientes 5 usuarios han agradecido a cace0353 su comentario:
[ Mostrar/Ocultar listado de agradecimientos ]


  #2  
Viejo 08/03/16, 12:41:15
Array

[xs_avatar]
WillyWeb WillyWeb está en línea ahora
Usuario muy activo
 
Fecha de registro: dic 2008
Localización: Hoy aquí y mañana allí
Mensajes: 2,067
Modelo de smartphone: OnePlus 3T | Xiaomi 9T Pro
Tu operador: Vodafone
Excelente. Muy bien explicado.

Y se nota que te has peleado un poco con las escenas.
__________________
Miembro del equipo que promueve el [Subforo de Tasker]

Si das pescado a un hombre hambriento le nutres una jornada. Si le enseñas a pescar le nutrirás toda la vida. (Lao-Tsé - Filósofo chino)
Responder Con Cita
Gracias de parte de:
  #3  
Viejo 08/03/16, 13:08:14
Array

[xs_avatar]
danko9696 danko9696 no está en línea
Usuario muy activo
 
Fecha de registro: ago 2012
Mensajes: 2,371
Modelo de smartphone: Mate 8
Tu operador: Yoigo
Aunque dices que es muy trabajoso la verdad creo que resultaría mucho más práctico (y creo que más rápido también) crear una base de datos sqlite3 (u otro, pero mejor sqlite por estar más extendido), una tarea de tasker para meter los datos csv en ella y manejar todo a base de sqlite.

Es muy sencillo y rápido de aprender, mucho más que lenguajes típicos de programación, por lo menos a un nivel básico (y más usando asistentes para elaborar las consultas), y también es mucho más potente y menos engorroso. Puedes realizar modificaciones de forma sencilla, múltiples tablas seleccionando solo las columnas que necesitemos en cada momento, agrupar valores aplicando fórmulas para hallar medias (sumas o cualquier otro cálculo), reemplazar ciertos valores por otros, realizar cálculos todo lo complejos que queramos usando tablas auxiliares temporales, acceder a los datos desde programas externos compatibles con sqlite, almacenar consultas que accedan a distintos datos y realicen distintas operaciones según la necesidad (ocupando una sola linea cada una), etc...

Para manejar una tabla suelta no creo que tenga dificultad alguna ni necesario buscar documentación siquiera. Es muy intuitivo (el equivalente a SELECCIONAR columna1, columna2 DE tabla ORDENADO POR columna1) y vale con usar el asistente de cualquier programa de gestión sqlite para elaborar las consultas las primeras veces.

Y está el bonus de que una vez aprendido el lenguaje será mucho más fácil acceder a datos de aplicaciones externas para otros usos.
Responder Con Cita
Gracias de parte de:
  #4  
Viejo 08/03/16, 13:18:11
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: 504
Modelo de smartphone: Pixel 8 Pro - 256 Gb.
Tu operador: Jazztel
 Cita: Originalmente Escrito por danko9696 Ver Mensaje
Aunque dices que es muy trabajoso la verdad creo que resultaría mucho más práctico (y creo que más rápido también) crear una base de datos sqlite3 (u otro, pero mejor sqlite por estar más extendido), una tarea de tasker para meter los datos csv en ella y manejar todo a base de sqlite.
Me parece perfecto, porqué no haces un tutorial básico para que todos aprendamos un poco y podamos emplearlo?

Me encantaria mejorar mis "programillas" (acostumbro a manejar en ellos tablas de Excel) pero tampoco me estimula tener que aprender todo un lenguaje de programación. Creo que bastaria con cuatro herramientas básicas como las que sugieres...

Saludos
__________________
Me apasiona volar, pero con los pies en el suelo...
Responder Con Cita
  #5  
Viejo 08/03/16, 14:58:21
Array

[xs_avatar]
Caravantes Caravantes no está en línea
Usuario muy activo
· Votos compra/venta: (1)
 
Fecha de registro: feb 2011
Mensajes: 2,200
Modelo de smartphone: Samsung Galaxy S9
Tu operador: Lowi
 Cita: Originalmente Escrito por cace0353 Ver Mensaje
CONSULTA DE UNA TABLA DE DATOS DE EXCEL EN TASKER (nivel básico)
Excelente, Cace, muchas gracias.

Añado algunos comentarios y matizaciones:

 Cita: Originalmente Escrito por cace0353 Ver Mensaje
3.- Eliminar las "hojas" extras que hubiera, colores, formatos de texto
No hace falta eliminar los colores ni otros formatos de texto (negrita, subrrayado, tamaño de texto, etc). Aunque la hoja de Excel tenga colores y formatos, todo eso desaparece automáticamente al guardar en formato CSV.

 Cita: Originalmente Escrito por cace0353 Ver Mensaje
4.- En "Guardar archivo como..." elegir CSV, datos separados por coma (; en realidad)
Aunque en el formato de archivo pone "CSV (delimitado por comas) (*.csv)", la realidad es que el delimitador utilizado dependerá de la configuración de Windows. Para una configuración típica estadounidense, se utilizarán comas como separadores. Para una configuración típica española se utilizará el punto-y-coma como separador.

 Cita: Originalmente Escrito por cace0353 Ver Mensaje
5.- Situándonos sobre el archivo CSV generado clicamos una vez sobre él con el botón derecho y elegimos "Abrir con..." en el menú contextual que se abre.
Elegimos "Microsoft Word".
Este paso a través de Microsoft Word solo tiene como objetivo recodificar los caracteres especiales del formato "Windows" al formato Unicode-UTF-8 utilizado por Tasker. Los caracteres especiales se pueden codificar de varias formas, y Excel los codifica de una forma que es incompatible con la codificación que usa Tasker. Por eso necesitamos utilizar el Word, para cambiar esa codificación. Como he dicho, las diferencias de codificación solo afectan a los caracteres especiales. Si resulta que en nuestro documento no hay eñes ni vocales acentudas (ni otros caracteres especiales) no necesitamos esa recodificación porque el formato CSV generado por Excel ya es directamente legible por Tasker.

 Cita: Originalmente Escrito por cace0353 Ver Mensaje
- Aunque seria posible crear una escena-formulario modificar nuestros datos y actualizar el archivo TXT no es aconsejable. Efectivamente, el Excel con extensión CSV no podemos modificarlo desde aquí. Por tanto el mantenimiento de nuestros datos debe hacerse en Excel y luego repetir el proceso del apartado A de este tutorial.
Desde Tasker es perfectamente posible actualizar el archivo TXT codificado en Unicode-UTF-8 (o crearlo, porque Tasker utiliza esa codificación para cualquier archivo de texto nuevo). Por las pruebas que he hecho, Excel abre perfectamente este archivo Unicode-UTF-8 creado o modificado por Tasker; O sea que Excel interpreta correctamente la codificación Unicode-UTF-8, pero esto tiene algunas limitaciones: si el archivo tiene caracteres especiales, Excel podrá leer el fichero, pero sin hacer modificaciones; con caracteres especiales, si Excel guarda el archivo se vuelve a perder la compatibilidad incluso aunque se guarde en formato "Texto Unicode" (hay varias codificaciones Unicode, y la que usa Excel para guardar no es compatible con la codificación Unicode-UTF-8 que necesita Tasker); o sea que en este caso, desde Excel habrá que repetir el proceso inicial guardando en formato CSV y luego utilizar el Ms-Word para transformarlo a Unicode-UTF-8. Ahora bien, si no hay caracteres especiales, el fichero puede ser accedido y modificado sin problemas, tanto por Tasker como por Excel (guardando en formato CSV o reguardando en "Texto Unicode"), sin necesidad de usar Word para recodificar.
__________________
Firmado: Caravantes, miembro del equipo que promueve el Subforo de Tasker
Responder Con Cita
Gracias de parte de:
  #6  
Viejo 08/03/16, 16:28:27
Array

[xs_avatar]
danko9696 danko9696 no está en línea
Usuario muy activo
 
Fecha de registro: ago 2012
Mensajes: 2,371
Modelo de smartphone: Mate 8
Tu operador: Yoigo
 Cita: Originalmente Escrito por cace0353 Ver Mensaje
Me parece perfecto, porqué no haces un tutorial básico para que todos aprendamos un poco y podamos emplearlo?

Me encantaria mejorar mis "programillas" (acostumbro a manejar en ellos tablas de Excel) pero tampoco me estimula tener que aprender todo un lenguaje de programación. Creo que bastaria con cuatro herramientas básicas como las que sugieres...

Saludos
Bueno, ahí va un minitutorial:

Para un uso básico sin conocimientos previos en un principio lo más complicado/lioso creo no es el lenguaje en sí sino preparar los archivos/base de datos:
- Podemos coger una base de datos que ya esté creada (de alguna app instalada) y hacer una copia en una carpeta personal o crear una base de datos nueva. Por ejemplo usando SQLite Editor -> New Database -> seleccionamos ruta donde la queremos crear y nombre de la base de datos (por ejemplo tasker_pruebas).
- A continuación, en TABLES, damos a settings y NEW TABLE. Escribimos el nombre de la tabla, por ejemplo POBLACIONES y ahora hay que añadir los campos que queremos que tenga.
- De los datos que hay que rellenar, para empezar los importante son nombre del campo (obviamente), como NOM_POBLACION, y sobre todo el tipo de dato: número entero, real -número con decimales-, texto, blob (para almacenar datos binarios, como fotos, por ej), fecha, timestamp y time. Para poblaciones podríamos tener nom_poblacion text, c_p text, habitantes, int. Los otros parámetros no son fundamentales para un comienzo.

para ejecutar la consulta desde tasker usar el comando shell con;
sqlite3 <ruta de la base de datos>/nombre_base_datos.db "<consulta>"
por ej, asumiendo que usamos tres variables en tasker:
sqlite3 /storage/emulated/0/Download/test_base_de_datos.db "insert into poblaciones (nom_poblacion,c_p,habitantes) VALUES ('%var_nom_pob','%var_c_p',%var_numhab);"

Luego para leer datos lo mismo que antes pero ahora añadiendo una variable para recoger el resultado de la consulta.
y usando SELECT <campos separados por comas> FROM <tablas separadas por comas> WHERE <condiciónes> ORDER BY <orden> LIMIT <máximo número filas que queremos> Para construir las consultas mejor usa el SQLite Debugger, mejor interface que el otro para ello.

NOTAS:
- si pones SELECT * ...., el asterisco indica que coja todos los campos
- si el select incluye varios campos, en el texto devuelto a la variable indicada estos vendrán separados por tuberías |
- IMPORTANTE para el uso con tasker, si la consulta devuelve más de una fila muy recomendable añadir lo siguiente después de la última comilla: |awk '{printf("%s%v_char_separacion",$0)}'
por ej, sqlite3 ...ruta bd y archivo... "SELECT .... FROM ... WHERE ... " |awk '{printf("%s%v_charsplit",$0)}'
Esto hace que cada fila esté separada por el caracter que queramos (%v_charsplit). Yo normalmente uso alguno raro, como el símbolo del yen o del estilo, algo que creas que no va a aparecer en el texto ni de casualidad.
- Muy útil cuando hay muchos datos. Podemos usar la cláusula LIMIT al final (antes del awk, dado que este no forma parte de la consulta sql sql). Un ...WHERE habitantes>100 AND habitantes<1000 ORDER BY nom_población DESC LIMIT 10 nos dará los 10 primeros resultados con esa condición.
- Como condiciónes están las típicas, >=, =, etc..., pero también LIKE, para comparar texto. La utilidad es que permite ignorar mayúsculas, minúsculas y usar comodines. Un ... WHERE nom_poblacion LIKE 'b%' devuelve los nombres de poblaciones que empiecen por b.
- También muy útil y usando LIMIT: podemos hacer que nos muestre los 100 primeros resultados a partir del resultado número 500. ¿Para que sirve esto?, pués para usar paginación de modo que la consulta sea más rápida y sin variar las condiciones de búsqueda, ya que solo cambiamos que filas son devueltas. Podemos usar un LIMIT %v_offset,20, asumiendo que entran 20 resultados en pantalla.

Por ej, en tasker:
- Pongamos %num_pagina vale 3
- Pulsas botón de siguiente página -> asignas %num_pagina a %num_pagina+1
- Asignas %v_offset a %num_pagina*20
- ... LIMIT %v_offset,20 (te mostraría 20 filas a partir del 80º resultado)
, y de este modo ir cambiando de página en página cambiendo el número de página.

Y naturalmente, podrías añadir un cuadro de texto en la escena para indicar por qué campo quieres ordenar, o que columnas quieres ocultar, o qué rango de valores quieres para una columna determinada. Recoger esas condiciones en una variable de tasker e insertarla luego en la consulta.


Para una tabla simple se reduce a la configuración inicial y la interacción con Tasker. Realmente la complicación se encuentra sobre todo cuando se trata de optimizar rendimiento en bases de datos muy pesadas y con muchas tablas y/o consultas muy complejas pero para archivos pequeños con tablas sueltas no relacionadas directamente entre sí no hace falta mirar practicamente nada. Salvo alguna duda puntual, más allá que lo que he puesto ya sería mirarse algún tutorial de SQLITE.

Dado que en tu caso acostumbras a manejar datos importados de excel creo que podrás aprovechar muy bien las capacidades que ofrece un lenguaje como SQLITE, mucho más sencillo que javascript pero especializado en manejar datos.

Última edición por danko9696 Día 08/03/16 a las 16:31:19.
Responder Con Cita
Los siguientes 5 usuarios han agradecido a danko9696 su comentario:
[ Mostrar/Ocultar listado de agradecimientos ]
  #7  
Viejo 08/03/16, 16:37:54
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: 504
Modelo de smartphone: Pixel 8 Pro - 256 Gb.
Tu operador: Jazztel
Muchas gracias. Más tarde voy a leermelo despacio.
Poco a poco iremos aprendiendo divirtiéndonos, que es como se aprende más!
__________________
Me apasiona volar, pero con los pies en el suelo...
Responder Con Cita
  #8  
Viejo 08/03/16, 16:52:34
Array

[xs_avatar]
danko9696 danko9696 no está en línea
Usuario muy activo
 
Fecha de registro: ago 2012
Mensajes: 2,371
Modelo de smartphone: Mate 8
Tu operador: Yoigo
 Cita: Originalmente Escrito por cace0353 Ver Mensaje
Muchas gracias. Más tarde voy a leermelo despacio.
Poco a poco iremos aprendiendo divirtiéndonos, que es como se aprende más!
Antes de nada, antes de escribir una sola linea de código, si eres root coge el Sqlite Debugger, abre la base de datos de whatsapp y prueba a trastear consultas en la tabla de messages, así podrás hacerte una idea de lo que puedes hacer luego en tasker con una db propia, sobre todo porque con esa app ni siquiera necesitas escribir nada para construirlas. Las más simples, claro, pero no por ello menos útiles.
Responder Con Cita
Los siguientes 3 usuarios han agradecido a danko9696 su comentario:
[ Mostrar/Ocultar listado de agradecimientos ]
  #9  
Viejo 09/03/16, 20:22:40
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: 504
Modelo de smartphone: Pixel 8 Pro - 256 Gb.
Tu operador: Jazztel
Gracias @danko9696, veo que dominas el tema...

Ya me he metido y tengo un par de consultas referentes a Sqlite que postearé en el hilo de comandos de consola ya que se aparta mucho de la idea de este Tutorial (lo califico de Básico)

Saludos!
__________________
Me apasiona volar, pero con los pies en el suelo...
Responder Con Cita
Gracias de parte de:
  #10  
Viejo 26/03/16, 17:57:57
Array

[xs_avatar]
Caravantes Caravantes no está en línea
Usuario muy activo
· Votos compra/venta: (1)
 
Fecha de registro: feb 2011
Mensajes: 2,200
Modelo de smartphone: Samsung Galaxy S9
Tu operador: Lowi
Ayer estaba preparando un texto para replicar aquí del modo siguiente:

Hola Cace. Me he puesto a estudiar detalladamente este interesante tutorial, y me encuentro con algunas dudas que te planteo.

Partimos de un archivo CSV (de texto) generado desde Excel y luego modificado con Word para darle codificación Unicode (UTF-8), que es la codificación comprensible para Tasker. El archivo tiene filas y columnas. Cada fila es un párrafo y contiene "un registro" o "ficha" con varios datos separados por signos de punto y coma (;). Tras la primera fila/parrafo/ficha hay un código de salto de línea y luego otra fila/parrafo/ficha similar, etc.

Parece ser que la tarea de Tasker ("Gestión") comienza con una acción de tipo LEER PÁRRAFO, y -como es lógico- comienza leyendo el párrafo número 1, el primero. Tras eso hay una segunda acción (Código) JavaScriptlet, que contiene diferentes instrucciones en ese lenguaje: declaración de variables, seguida de...


 Cita: Originalmente Escrito por cace0353 Ver Mensaje
datos = (datos.split("\n")); Dividimos la variable de tasker %datos (en JS se escriben los nombres de variable sin el % delante) que resultaba de la acción "leer párrafo" por líneas, usando como separador el código de salto de línea "\n" y almacenando el resultado en un array local "datos"
Si solo se había leído el primer párrafo (que por definición se extiende desde el comienzo del archivo hasta el primer salto de línea), no entiendo que ahí se haga una división(split) utilizando como separador el código de salto de línea "\n". En un párrafo leído no puede contener saltos de línea y por tanto no entiendo el motivo de utilizar ese separador. ¿?
Ese texto que escribí ayer era más largo, añadiendo otros detalles sobre la misma duda de los párrafos. Incluso miré la ayuda, la documentación de la app:

 Cita:
Leer línea / Leer párrafo

Lee un registro (línea o párrafo) de un archivo de texto.

'Nº Línea/Párrafo' es número de registro a leer. Si no se especifica, se leerá el registro siguiente al leído *en ese mismo archivo*. Se usa una variable en lugar de un número para permitir, p.ej. leer un registro al azar vía la acción 'Variable Aleatoria'.

Si se llega al final del archivo antes de encontrar el número de registro especificado, contendrá el valor EOF. El número siguiente de línea se reseteará a 1.

Se ignorarán siempre líneas en blanco y cualquier carácter de nueva línea al final de un archivo.
A nivel de Tasker y programación, no entiendo la diferencia conceptual entre "línea" (Leer Línea) y "párrafo" (Leer Párrafo). Todo esto me resulta muy confuso.

El caso es que en el último momento se me ocurrió que tal vez el código estuviera bien, que quizá el malentendido esté en el nombre de la acción LEER PÁRRAFO. Así pues hice la prueba: preparé un pequeño fichero de texto con tres líneas/párrafos:

Código:
uno dos tres
cuatro cinco seis
siete ocho nueve
Y ejecuté una tarea que solo tenía dos acciones:
1. LEER PÁRRAFO 1 y guardar la info en una variable.
2. Usar un PopUp para mostrar el contenido de la variable.
Comprobé que la acción LEER PÁRRAFO 1 leía todo el archivo de una sola vez. Otro detalle: aunque mi archivo tenía tres párrafos, la acción LEER PÁRRAFO 2 (para leer el párrafo segundo) daba el típico error EOF (End Of File, fin de fichero), error que se produce cuando se intenta leer un número de párrafo que no existe en ese fichero.

Cace ofrece una pista sobre una aportación de WillyWeb al respecto. Busco y encuentro el mensaje enlazado a continuación (y los siguientes sobre el mismo tema)
http://www.htcmania.com/showthread.p...6#post22054076

Ahí dice Willy que la acción Leer PARRAFO considera que el párrafo se acaba cuando hay una línea en blanco (una interlínea vacía) "o un código de fin de línea" (SIC).
Pruebo

Código:
uno dos tres

cuatro cinco seis

siete ocho nueve
Efectivamente, ahora la acción LEER PÁRRAFO 2 me devuelve "cuatro cinco seis".
Las conclusiones son evidentes, aunque a mí me sigue pareciendo que la terminología resulta confusa y la documentación no aclara estos detalles que son importantes.

 Cita: Originalmente Escrito por WillyWeb Ver Mensaje
Esa acción lee hasta encontrar una línea en blanco o un código de fin de línea.
Willy, ¿Puedes explicar eso del código de fin de línea? Normalmente yo interpretaría que esa expresión hace referencia al cambio de línea ("/n"), pero ya hemos visto que la acción LEER PÁRRAFO no lo tiene en cuenta. ¿?
__________________
Firmado: Caravantes, miembro del equipo que promueve el Subforo de Tasker
Responder Con Cita
Gracias de parte de:
  #11  
Viejo 26/03/16, 20:01:36
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: 504
Modelo de smartphone: Pixel 8 Pro - 256 Gb.
Tu operador: Jazztel
 Cita: Originalmente Escrito por Caravantes Ver Mensaje
Las conclusiones son evidentes, aunque a mí me sigue pareciendo que la terminología resulta confusa y la documentación no aclara estos detalles que son importantes.
De acuerdo, resulta confuso a menos que la interpretación del término párrafo la hagas de la manera que se usa en los libros impresos. Es decir: salto de línea + línea en blanco.

Yo, después del tiempo que pasé buscando el error en el código JS, cuando vi que la solución era usar la opción "Leer Párrafo" en lugar de la acción "Leer Archivo" (como venia haciendo resolviéndolo en Tasker puro) ya no me preocupé más. Es así y punto.

Desde aquel dia he estado adaptando mis programas para incorporar JS en todos los bucles FOR que trataban muchos datos y "mano de santo, oiga..."

Y para manejar las bases de datos: Sqlite (a nivel elemental) y esto vuela!

Saludos a todos
__________________
Me apasiona volar, pero con los pies en el suelo...

Última edición por cace0353 Día 27/03/16 a las 11:34:22.
Responder Con Cita
Gracias de parte de:
  #12  
Viejo 26/03/16, 22:15:21
Array

[xs_avatar]
WillyWeb WillyWeb está en línea ahora
Usuario muy activo
 
Fecha de registro: dic 2008
Localización: Hoy aquí y mañana allí
Mensajes: 2,067
Modelo de smartphone: OnePlus 3T | Xiaomi 9T Pro
Tu operador: Vodafone
 Cita: Originalmente Escrito por Caravantes Ver Mensaje
Willy, ¿Puedes explicar eso del código de fin de línea? Normalmente yo interpretaría que esa expresión hace referencia al cambio de línea ("/n"), pero ya hemos visto que la acción LEER PÁRRAFO no lo tiene en cuenta. ¿?
Pues lo puse tal y como lo leí en alguna parte de la documentación, pero ahora no doy con ello . Puede que lo interpretase mal. De todas formas, lo que leer párrafo hace es leer bloques separados por líneas en blanco.

Y lo de usar "leer párrafo" en vez de "leer archivo" es una "solución" al error que se produce si usas JavaScript en la misma tarea. Si la tarea no usa JS no tiene utilidad.
__________________
Miembro del equipo que promueve el [Subforo de Tasker]

Si das pescado a un hombre hambriento le nutres una jornada. Si le enseñas a pescar le nutrirás toda la vida. (Lao-Tsé - Filósofo chino)
Responder Con Cita
Gracias de parte de:
  #13  
Viejo 20/04/16, 21:13:51
Array

[xs_avatar]
yovesmlmt yovesmlmt no está en línea
Usuario muy activo
 
Fecha de registro: ago 2010
Localización: MÁLAGA
Mensajes: 2,664
Modelo de smartphone: SAMSUNG GALAXY S3
Tu operador: Movistar
Muy buen tutorial

Enviado desde mi SM-G900F
Responder Con Cita
Gracias de parte de:
  #14  
Viejo 20/04/16, 21:15:21
Array

[xs_avatar]
yovesmlmt yovesmlmt no está en línea
Usuario muy activo
 
Fecha de registro: ago 2010
Localización: MÁLAGA
Mensajes: 2,664
Modelo de smartphone: SAMSUNG GALAXY S3
Tu operador: Movistar
He probado con 700 filas y 13 columnas y peta. Alguna solución?

Enviado desde mi SM-G900F
Responder Con Cita
  #15  
Viejo 20/04/16, 22:22:08
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: 504
Modelo de smartphone: Pixel 8 Pro - 256 Gb.
Tu operador: Jazztel
 Cita: Originalmente Escrito por yovesmlmt Ver Mensaje
He probado con 700 filas y 13 columnas y peta. Alguna solución?
Ya lo puse en letra itálica al final del primer post. La razón es que de la manera que propuse almacenas todos los campos (x filas por y columnas, en tu caso 9.100 datos, cantidades y/o texto) en la Ram, y el sistema no da para tanto...

Y sí, hay solución, se llama Sqlite3 y si has leido todo el post verás que su uso es determinante, no hay color....

No obstante deberás tener el móvil rooteado e instalar el intérprete de comandos.
Para ello mirate este post del compañero @mlesir: http://www.htcmania.com/showthread.php?t=771950

Mírate los aportes de @danko9696 y lo que se ha posteado recientemente en el hilo de referencia y en este que te pongo, todos relativos a Sqlite3:
http://www.htcmania.com/showthread.php?t=1146595

La velocidad de ejecución de las consultas a bases de datos relativamente grandes (alrededor de 1000 filas y 10 o 12 columnas) es asombrosa (al menos para mí), y para un uso a nivel elemental es bastante sencillo.

Puedes, con una sola acción de código, buscar todos los campos (de las columnas que quieras) que contengan determinados caracteres, un valor mayor, menor o igual que un valor determinado, etc. y que te ordene los datos encontrados como quieras. La salida de la acción es una variable que contiene todos los datos que cumplen las condiciones impuestas.

En cuanto le coges el gusto a esta combinación de JavaScript y Sqlite3 verás que se te empiezan a ocurrir nuevas aplicaciones!
__________________
Me apasiona volar, pero con los pies en el suelo...
Responder Con Cita
Gracias de parte de:
  #16  
Viejo 20/04/16, 23:28:53
Array

[xs_avatar]
yovesmlmt yovesmlmt no está en línea
Usuario muy activo
 
Fecha de registro: ago 2010
Localización: MÁLAGA
Mensajes: 2,664
Modelo de smartphone: SAMSUNG GALAXY S3
Tu operador: Movistar
Muchas gracias por la respuesta. Lo miraré

Enviado desde mi SM-G900F
Responder Con Cita
  #17  
Viejo 21/04/16, 09:27:41
Array

[xs_avatar]
yovesmlmt yovesmlmt no está en línea
Usuario muy activo
 
Fecha de registro: ago 2010
Localización: MÁLAGA
Mensajes: 2,664
Modelo de smartphone: SAMSUNG GALAXY S3
Tu operador: Movistar
Aparte. ¿Podrías pasar los datos de sqlite como hiciste en el ejemplo de los pueblos? Gracias
Responder Con Cita
  #18  
Viejo 21/04/16, 11:35:33
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: 504
Modelo de smartphone: Pixel 8 Pro - 256 Gb.
Tu operador: Jazztel
 Cita: Originalmente Escrito por yovesmlmt Ver Mensaje
Aparte. ¿Podrías pasar los datos de sqlite como hiciste en el ejemplo de los pueblos? Gracias
Bueno, el asunto cambia bastante al procesar los datos con un motor como Sqlite. Se trata de un nuevo proyecto diferente aunque haya aprovechado las escenas y la idea general.

Además no creo que sea yo, un novato, el más adecuado para hacer un tutorial de Sqlite. A ver si alguno de los que lo controlan más se anima y abre un hilo específico para la integración de Sqlite en Tasker.

De momento, y sólo para que no te quedes en ascuas, te explico sencillamente como lo he hecho yo:

Partimos de que tenemos nuestros datos en una tabla de F filas y C columnas hecha en Excel y guardada en formato .csv
Tenemos instalado en el móvil el intérprete de Sqlite3 según las indicaciones y referencias que te dí en posts anteriores.
Instalamos un complemento de Mozila Firefox que se llama Sqlite Manager (hay otros, pero yo uso este...) y al que se accede, una vez instalado, desde la pestaña "Herramientas" del navegador.

CREACIÓN DE LA BASE DE DATOS

- Lo primero que hago es abrir el arxivo Pobles.csv (para mantener la nomenclatura del ejemplo) con Microsoft Word y guardarlo como un archivo de texto con el nombre Pobles-UTF8.csv eligiendo para ello en el cuadro "Otra codificación" la opción "Unicode-UTF8". Igual que lo haciamos anteriormente pero, fíjate bién, ahora le fuerzo la extensión a .csv en lugar de aceptar la .txt que sale por defecto. Esto es así porque para crear la base de datos necesitaremos que el archivo tenga esta extensión y por esto he añadido "-UTF8" al nombre para distinguirlo del original.

- Creamos nuestra base de datos con Sqlite Manager y a la que, siguiendo el ejemplo, llamo CAT_2016.db (aunque por defecto la extensión que proporciona el programa es .sqlite). Una explicación previa: una base de datos puede tener varias tablas que puedes usar y cuyos datos se encuentran de alguna manera relacionados.

- Creamos una tabla con el nombre Municipis y se nos abre una pestaña en la que declaramos los nombres y tipos de datos de las columnas: POBLACIO,C_POSTAL,COMARCA,PROVINCIA,DOMICILI,TELEF ON,HABITANTS,SUPERFICIE,ALTURA,WEB,GENTILICI. Todos los campos de texto (TEXT) menos los habitantes, superfície y altura sobre el nivel del mar que los definiré como enteros (INTEGRER).

- Importamos los datos de nuestro Pobles-UTF8.csv dándole al icono de la flecha azul y seleccionando el nombre del archivo que contiene los datos (fíjate que nos pide, por defecto, un .csv) a importar y escribiendo en la pestaña correspondiente el nombre de la tabla donde irán a parar. También deberemos especificar si la tabla original tiene cabecera (nombre de las columnas) y cual és el separador de columnas (; en nuestro caso). Le damos al botón del final y nos importa los datos.

USO DE LA TABLA EN TASKER

- Partimos de que tenemos una escena con un elemento menú central que nos muestra el contenido de la matriz %poblacio

- Extraemos los nombres de las poblaciones (sólo los nombres, de momento) mediante la consulta escrita con una acción Ejecutar consola del grupo Código con el siguiente comando:
sqlite3 /sdcard/BDades/CAT_2016.db "SELECT POBLACIO FROM Municipis"
Almacenar salida en: %població
Interpretación del comando: Le pedimos al sistema que se ejecute el intérprete sqlite3 sobre la base de datos que está en /sdcard/BDades cuyo nombre es CAT_2016.db con el comando: Selecciona todos los datos de la columna POBLACIO de la tabla Municipis.... y guárdalos en la variable %població.

- Ya tenemos la variable, ahora la descomponemos para generar la matriz. Puedes hacerlo es JS o desde Tasker creando una variable %newline que no contiene más que un "return" (salto de línea) y luego, Separar variable: %població Separar con: %newline.

- Ahora ya puedes mostrar la escena con la lista completa de los pueblos.

- Al clicar sobre el nombre de un pueblo en la escena una nueva llamada a Sqlite te saca los datos de cada población con el siguiente comando:
sqlite3 /sdcard/BDades/CAT_2016.db "SELECT * FROM Municipis WHERE POBLACIO = '%tap_label'"
Almacenar salida en %dades
Interpretación del comando: Le pedimos al sistema que se ejecute el intérprete sqlite3 sobre la base de datos que está en /sdcard/BDades cuyo nombre es CAT_2016.db con el comando: Selecciona todos los datos de la tabla Municipis donde la columna POBLACIO coincide con la etiqueta que he pulsado en el elemento menú de la escena... y guárdalos en la variable %dades.

- Como antes el resultado és una variable que contiene todos los datos de la fila correspondiente a la población elegida. Ahora deberemos separar sus valores mediante "|" (sqlite encadena los diferentes datos de una fila con el simbolo | o "tubo") y obtendremos los valores: %dades1, %dades2,...%dades11 en nuestro caso. Definimos las variables que será calculadas: %densitat = %dades7/%dades8 Calcular: activado (tendrás la densidad en Hab/km2 en una nueva variable) y ya podemos mostrar la escena Fitxa Pobles.

MEJORAS Y COMPLEMENTOS

1.- He añadido un campo de texto editable en la escena en el que introduciendo un texto (3 o 4 caracteres) puedo realizar una búsqueda en la BD de las poblaciones que contienen (en cualquier posición) estos 3 o más caracteres. Al lado del texto editable hay un botón que ejecuta el comando. Aquí una muestra de como quedan las escenas

Como hago la búsqueda en Sqlite3? Atendiendo a que el valor de %new_val en la pestaña: Texto cambiado del elemento Editar texto lo llamo %buscar_poble utilizo el siguiente comando de fácil comprensión:
sqlite3 /sdcard/BDades/CAT_2016.db "SELECT POBLACIÓ FROM Municipis WHERE POBLACIO LIKE '%%buscar_poble%'"
Almacenar salida en: %poblacio

Observad que he añadido % al principio y al final del nombre de la variable. Esto es así para que me encuentre la cadena tecleada en la ventana de texto esté en la posición que esté. Si sólo buscara poblaciones que empezaran con estos caracteres eliminaria el primer %

2.- Un elemento "Rueda" desplegable en misma la escena me muestra los nombres de todas las comarcas. Clicando en uno de ellos se ejecuta el sigüiente comando que me muestra los nombres de las poblaciones de la comarca elegida:
sqlite3 /sdcard/BDades/CAT_2016.db "SELECT POBLACIÓ FROM Municipis WHERE COMARCA ='%tap_label'"
Almacenar salida en: %poblacio

Una observación: para que me muestre en el elemento Rueda los nombres de las comarcas he preparado antes, en la definicion de variables de la tarea principal, una variable %comarca que contine los nombres de todas las comarcas separadas por ";" y fabricado la matriz %comarca con un Separar variable por ";"...

3.- Lo mismo para Provincias, etc, etc...

Ya veis que se abre, al menos a mí se me abrió, un mundo nuevo en Tasker...
__________________
Me apasiona volar, pero con los pies en el suelo...

Última edición por cace0353 Día 21/04/16 a las 13:03:55.
Responder Con Cita
Los siguientes 2 usuarios han agradecido a cace0353 su comentario:
  #19  
Viejo 21/04/16, 11:40:12
Array

[xs_avatar]
yovesmlmt yovesmlmt no está en línea
Usuario muy activo
 
Fecha de registro: ago 2010
Localización: MÁLAGA
Mensajes: 2,664
Modelo de smartphone: SAMSUNG GALAXY S3
Tu operador: Movistar
Muchas gracias por la información. Lo probaré. Con los datos que diste en el tutorial de primer post he aprendido mucho el funcionamiento de tasker y las escenas que andaba yo muy perdido. He conseguido exportarlo a un app y va de lujo pero claro con pocos datos. En cuanto pongo más datos de la cuenta peta.

De momento la solución ha sido dividir el programa en 4 bloques de 200 filas. Y crear una escena nueva que llama a cada 1 de los bloques. Más fácil de buscar, más rápido de procesar y no peta jejeje.

Enviado desde mi SM-G900F
Responder Con Cita
Gracias de parte de:


  #20  
Viejo 21/04/16, 12:01:43
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: 504
Modelo de smartphone: Pixel 8 Pro - 256 Gb.
Tu operador: Jazztel
No lo dudes, usa Sqlite3 de la manera que te indico y no volverás a convertir tus proyectos en apps con el Factory. La velocidad y flexibilidad de uso que consigues és alucinante comparada con la de Tasker puro. Y los bucles que procesan muchos datos con JS…!

En cuanto a lo de tener varias tablas en la misma BD és otra posibilidad muy potente ya que puedes buscar la salida de un comando con otro comando en otra tabla. (Mírate el post-consulta que puse días atras de integración de Barcode Scaner en Tasker para mi proyecto de gestión de una base de datos de plantas…)

Enviat des del meu SM-T550 usant Tapatalk
__________________
Me apasiona volar, pero con los pies en el suelo...
Responder Con Cita
Los siguientes 2 usuarios han agradecido a cace0353 su comentario:
Respuesta

Estás aquí
Regresar   Portal | Indice > Todo sobre Android > Otro software para Android > Tasker



Hora actual: 23:40:39 (GMT +2)



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

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