Está en la página 1de 5

Recuperar datos de una tabla Google Fusion (FusiontablesControl)

Intro
App Inventor y SQL se van a llevar bien. En la reciente actualizacin, de este entorno de desarrollo de aplicaciones para Android, su equipo de desarrollo ha incorporado un componente que nos permitir almacenar y recuperar datos de tablas Google Fusion. El lenguaje que emplearemos para consultar, insertar, actualizar y eliminar datos en estas tablas es SQL. En el ejemplo que os presento a continuacin utilizaremos la tabla productos. Esta tabla tiene tres columnas: cdigo, nombre y categora. En la misma he insertado cuatro filas, cada fila contiene la informacin correspondiente a un producto.

La aplicacin al iniciarse se conecta a Google Fusion y nos autentifica. A continuacin descarga todas las filas de la tabla productos en el dispositivo Android. Mediante unos botones de avance y retroceso nos permitir visualizar las filas de una en una.

Componentes
Screen1 CabeceraLabel CabeceraColHorizontalArrangement CabCodigoLabel CabNombreLabel CabCategoriaLabel DatosColHorizontalArrangement ValCodigoLabel ValNombreLabel ValCategoriaLabel BotoneraHorizontalArrangement RetrocedeInicioButton RetrocedeRegButton AvanzaRegButton

Viewer

AvanzaFinButton ProductosFusiontablesControl

Utilizaremos una serie de etiquetas para las cabeceras y otra para la visualizacin de los datos. Agruparemos los botones de avance y retroceso en una botonera simulada mediante un componente de disposicin horizontal. Pero el componente fundamental en esta aplicacin es por supuesto el Control Fusin Table.

Comportamiento de la aplicacin
En primer lugar defino las variables que utilizar en la aplicacin. ProductosFilas ser la encargada de almacenar las filas descargadas desde la tabla Fusion, por lo tanto la defino como una lista, pues albergar a una lista de filas. La variable fila tiene como finalidad controlar el electo de la lista de filas (ProductosFilas) en el que me encuentro en cada momento. ProductosColumnas ser la encargada de contener los valores simples de una fila determinada, la que vaya a visualizar. A NumRegistros la cargar con el nmero de filas que me devuelva la consulta a la tabla productos, es decir, me indicar cuando lo necesite cuntos productos hay registrados en la tabla. La variable columna. Ay! La variable columna tiradla a la papelera, pues no s por que est ah (cosas de la edad). En serio no sirve para nada.

Cuando se inicia la aplicacin establezco el texto que se enviar a Google Fusion Tables, o sea la frase SQL, en este caso, un sencillo select que se enva co el bloqueFusiontablesControl.DoQuery. Cuando obtengo el resultado de la consulta, almaceno el resultado en la variable ProductosFilas. Fjate, utilizo la llamada al mtodo list from csv table porqu el resultado est precisamente en formato CSV (valores separados por comas). Ahora ya puedo llamar al mtodo length of list que me devuelve el nmero de elementos de la lista, es decir el nmero de productos.

Los bloques siguientes sirven para movernos al primer y ltimo registro. El primero RetrocedeInicioButton.Click establece el valor de fila a 1 y el segundo AvanzaFinButton.Click a nmero de registros (en el ejemplo 4). A continuacin ambos llaman al procedimiento RellenaProcedure.

El procedimiento RellenaProcedure vuelca el elemento de la lista ProductosFilas seleccionado por el nmero de fila en la lista ProductosColumnas. Es decir vuelca los datos del producto situado en la fila actual (aquella cuyo nmero de fila sea el correspondiente al valor almacenado en la variable fila) en forma de lista de valores simples. A continuacin ponemos dichos valores como texto de cada una de las etiquetas. Este procedimiento se ejecuta cada vez que queramos mostrar los valores correspondientes a un producto, por ejemplo cuando pulsemos el botn que nos lleva a la ltima fila (al producto situado en la ltima fila), o cuando queramos mostrar el producto situado en la primera pulsando el botn correspondiente.

Cuando se pulsa el botn de avance, comprobamos que no estamos en la ltima fila, si esto es cierto nos movemos a la fila siguiente aumentando el valor de la variable filaen 1 y ejecutando el procedimiento descrito anteriormente. Cuando se pulsa el botn de retroceso comprobamos que no estamos en la primera fila, si esto es cierto nos movemos a la fila anterior disminuyendo el valor de fila en 1 y ejecutando el procedimiento RellenaProcedure.