Contenido

Cuando los archivos CSV requieren actualizarse con mucha frecuencia (varias veces al día) o son muy grandes (100000 registros o más) o contienen datos muy sensibles que no se desea guardarlos en memoria en el dispositivo móvil, KONTROLID provee una alternativa para consulta de los mismos en tiempo real vía internet. Es decir NO funciona OFFLINE. Estas opciones ONLINE reemplazan la apariencia search() o la función pulldata(), estas opciones no descargan los archivos sino que consultan y traen la información temporalmente usando la memoria caché, ya que hacen la solicitud al servidor para traer datos sólo cuando se necesitan lo que a su vez las hace mucho más rápidas.
En reemplazo de search() use la función lookup_choices()
En reemplazo de pulldata() use la función lookup()
En la siguiente tabla encontrará las ventajas vs las desventajas de usar lookup_choices y lookup en lugar de search y pulldata respectivamente:
| Ventajas | Desventajas |
|---|---|
| Disminución en el consumo de datos. | Si no hay conexión a internet la información no está disponible. |
| Disminuye el consumo de recursos del servidor | |
| No consume espacio en la memoria del dispositivo ya que no guarda información | |
| Mayor seguridad en el manejo de información, ya que esta solo se visualiza cuando se usa el formulario, pero no se guarda en el dispositivo. |
Con respecto a la carga de los archivos no cambian en nada ya que son los mismos csv. Lo que cambia es la función de acceso.
Los datos son almacenados temporalmente en la memoria caché del dispositivo, la cual podrá borrar en cualquier momento para evitar saturación o evitar almacenamiento.
En el siguiente video puede ver la creación y comportamiento al reemplazar search por lookup_choices:
Cómo se usa (visualiza)
En dispositivo móvil:
La visualización en el dispositivo móvil es similar, salvo que dependiendo del tamaño de los datos se presentará una breve demora en la carga de los mismos, según la conexión a internet.
De otro lado cuando hay múltiples campos, éstos se visualizan separados por comas (No entre paréntesis) como con search.
En los 3 puntos de ajustes y mientras está diligenciando un formulario, puede Borrar la memoria caché (ver imagen derecha).


Para usar lookup en vez de pulldata es similar. Vea el siguiente video:
La razón de la disminución en memoria y recursos al usar lookup y lookup_choices se da principalmente porque search o pulldata descargan al dispositivo los recursos compartidos necesarios para el funcionamiento del formulario, si usted se dirige a la carpeta Almacenamiento interno
/Android/data/org.smap.smapTask.android.kontrolid/files/ observará que por cada formulario que maneje existe una carpeta, cada carpeta a su vez contiene todos los recursos necesarios para el funcionamiento del formulario. En cuanto a los archivos csv el dispositivo los descarga por completo, mientras que cuando el search o el pulldata se hacen al mismo formulario o a otro formulario en el dispositivo se descarga un csv que se forma SOLO con las columnas necesarias para dar respuesta al search o al pulldata.


Por ejemplo, en el caso de un search como el siguiente:


El csv contendrá las columnas Serial, descripción, TipoOs y Cliente de los casos donde TipoOS sea Tipo1 y Cliente sea Texaco.
Mientras que para un pulldata como el siguiente:

Serían necesarias las columnas cliente y serial.
Por lo tanto, el csv que se descarga en el dispositivo tendría en total las columnas Serial, descripción, TipoOs y Cliente.

En Form. web:

Dicho lo anterior, se entiende que en las opciones online al no ser necesario descargar tanta información son más que evidentes las ventajas mencionadas. Por lo tanto, el search se reemplazaria con un lookup_choices como:
lookup_choices('linked_s217_19063','matches','TipoOS','Tipo1','Cliente','Texaco')
Y el pulldata con un lookup como:
lookup('linked_s217_19063', 'Cliente','Serial',${SearchSimpleO})
Nota: También aplica para pulldata de 3,5 y 6 parámetros
Cómo se diseña (define en un formulario):
En Editor Web:
Para emplear lookup_choices el proceso es prácticamente el mismo que con search() con la diferencia que en Acceso debe seleccionar Sólamente online.


Para emplear lookup solo reemplace el pulldata por esta palabra:

En Plantilla Excel:
El proceso es el mismo que con search() o pulldata(), simplemente reemplace las palabras por lookup_choices y lookup() respectivamente.

En la siguiente tabla encontrará un comparativo de search vs lookup_choices.

Filtros avanzados con lookup_choices

Funcionalidad solo web
Lookup_choices realiza búsquedas online para traer las opciones desde un archivo csv o un formulario de forma similar al search(). Como se observa en la tabla comparativa de arriba en algunos casos permite incluir filtros con algunos criterios predefinidos como ‘matches’, ‘contains’, etc. Adicionalmente, a partir de la versión 20.10 del servidor, es posible incluir filtros avanzados que son más flexibles.
Los filtros avanzados son algo usual en kontrolid y son los mismos que se usan para las notificaciones, análisis o tareas, por lo tanto emplean también las Expresiones del servidor.
Básicamente se debe incluir ‘eval’ como criterio de búsqueda y luego la expresión según la sintaxis detallada en la documentación existente de filtros avanzados. La sintaxis sería muy similar a:
lookup_choices('archivo csv o formulario linked_sXXX','eval','${q1} > #{q5}')
La gran diferencia al usar estos filtros avanzados en expresiones de búsqueda en lookup_choices es que cuando se necesite hacer referencia a una columna del archivo csv o a una pregunta del formulario donde se buscan datos no deberá usar ${} sino #{}. En el ejemplo de arriba ${q1} hace referencia a una pregunta dentro del formulario y #{q5} hace referencia a una pregunta del formulario donde se busca la información.
Cómo se diseña (define en un formulario):
En Editor Web:
En apariencia de la pregunta seleccione buscar, allí seleccione CSV o el formulario y en acceso Sólamente online, active la casilla Expresión de filtro y en el cuadro que dice Expresión escriba la expresión correspondiente.


En Plantilla Excel:
Ejemplo con archivo csv: MunicipiosRegistraduria.csv

En los siguientes enlaces podrá encontrar un ejemplo general de lookup con 3,4,5 y 6 parámetros y los csv empleados como recursos compratidos para los mismos:
Ejemplos lookup 3,4,5 y 6 parametros
Comparativo pulldata – lookup
Para reemplazar pulldata con lookup solo es necesario cambiar esta palabra todos los demás parámetros siguen siendo los mismos. Por ejemplo:
lookup('fuente', 'columna a recuperar', 'expresión de filtro')
lookup('fuente', 'columna a recuperar', 'columna de filtro', 'valor de filtro')
Cuando se tiene una gran cantidad de datos de referencia, la búsqueda puede ser más práctica empleando lookup:
