Olá,
vamosà 2a. parte de nossa conversa sobre Fusion Tables.
Bem, definida a tabela no Google Drive , iremos então fazer uma aplicação simples que irá
INSERIR dados e posteriormente buscar os dados inseridos .
OK.
Então, crie um projeto novo e dê um nome a ele, por exemplo, Contatos.
Crie na tela de DESIGN uma viewer semelhante a esta :
1 Label com a propriedade text setada para : INSERT Contatos
1 Screen Arrangement/TableArrangements com 3 Rows / 2 Columns
* coloque lá na coluna 1 ---> 1 Label com Text=Nome , 1 Label com Text=email, 1 Label com Text=Telefone
* depois na COluna 2 , 1 Textbox de NomeTBNome, 1 Textbox de Nome=TBemail, 1 Textbox com Nome= Telefone.
1 Buttons de Nome = BTCadastra e com Text=INSERE
A barrinha preta vc faz assim...1 Label com propriedade with=(FILL PARENT) setada e Height=3pixels , BACKGROUND COLOR = Black
Abaixo da barrinha coloque :
1 Label com Text = SELECT Contatos
1 TextBox de nome= nomecli
1 Button com Text = Buscar
1 Label de nome (arraste um Label) e depois rename para dadoscliente
2 FusionTables components * FusionTable está na Palette , em NOT READY FOR PRIME TIME.
OK, feito isto vamos para o BLOCKS EDITOR...
O código (a ser explicado abaixo) para quando clicar no BTCadastra é este :
1) Primeira coisa é setar o valor de SUA ApiKey (veja POST anterior como gerar sua APIKEY);
2) Depois montar a SQL(no bloco Set FusionTablesControl1.Query) , e fazer o INSERT(no caso, enviar a QUERY) na tabela (com o bloco Call FusionTablesControl1.SendQUery; .
* Observe que após o INSERT INTO , os caracteres são o ID (*) de sua tabela . O INSERT não será feito com o NOME de sua tabela usando o FusionTables.
*para ter o ID de sua tabela vá no Google Drive, clique na sua tabela,depois em File / ABOUT THIS TABLE e copie o Encrypted ID , veja abaixo um exemplo :
COm os blocos acima, vc faz a INSERÇÃO(*) dos dados Nome, email na sua tabela.
* os nomes dos campos tem que ser exatamente iguais aos que vc definiu quando da criação da tabela, inclusive observando maiúsculas e minúsculas), inseridos entre ASPAS SIMPLES.
Teste executando no emulador ou no Smartphone via Wifi.
Depois, verifique no Google Drive(abrindo sua tabela) se o insert foi executado.
Um detalhe, durante a execução, vai solicitar um LOGIN no Google, se vc definiu sua tabela como PRIVATE.
Para que outros possam ter acesso, vc terá que cadastrar o email de quem poderá acessar . Isto é feito no Google Drive , nas propriedades de SUA tabela.
Tudo certinho, vai funcionar e voce poderá incrementar sua QUERY como necessário. Vc poderá verificar que atualizou sua tabela no Google Drive (mantenha aberta a tabela no navegador enquanto executa a query para acompanhar se atualizou).
Importante : Em fase de testes , crie um campo label e capture o retorno da QUERY . Veja/adicione o bloco na imagem acima , WHEN FusiontablesCOntrol1.GotResult.
O erro mais comum é 400 Bad Request , neste caso a query mal-formada...
A sintaxe para montar sua SQL pode ser consultada neste link(*) (será desativado em ago/2017, veja abaixo) :
https://developers.google.com/fusiontables/docs/v1/sql-reference
A Google mudou para versão2 em 2017 , veja as infos em :
https://developers.google.com/fusiontables/docs/v2/using
A seguir, mais detalhes sobre o processo.
Até lá,
Germinaro
Olá Germinaro, sou Evandro.
ResponderExcluirEstou tentando a muito custo rodar esta função e ainda não obtive sucesso. tentei com o seu modelo acima e também não rodou. relaciona um erro "400 Invalid query; Parse error near 'conection'(line1, position0)
Está complicado..
já tentei nos tutoriais http://appinventor.mit.edu/explore/content/pizzaparty.html
e
http://www.droidforums.net/forum/droid-development/151561-app-inventor-fusion-tables-persistent-data.html
que é parecido com o seu e ainda nada.
pode dar uma luz???
abraço
Evandro Ramos
evandroenf@gmail.com
Prezado Evandro:
ExcluirAcredito que seja um problema com sintaxe de sua Query.
Estas querys tem diferença com o padrão SQL.
Para executar a query com a correta sintaxe consulte o seguinte link:
https://developers.google.com/fusiontables/docs/v1/sql-reference
Caso não corrija o problema, por favor me envie a query que está dando problema para que eu possa testar por aqui...
Lembre-se tb de fazer a chamada com a API KEY e tb informar o Code da TAbela (e não o nome dela)....ok?
abraço,
Evandro,
ExcluirVeja o POST recentemente publicado - Verificando Fusion Table Result... tinha um problema no INSERT ... para funcionar tem que inserir ASPAS SIMPLES no nome das variáveis que fazem parte do insert...
abraço,
Opa...
ResponderExcluirquanto as chaves estavam inseridas conforme. o problema foi mesmo de sintaxe...
agora rodou maravilha..
sua ajuda valeu para uma revisão geral!
forte abraço!
Olá, Germinaro!
ResponderExcluirMeu nome é Márcio. Cara... Eu estou na mesma situação do Evandro (já tentei o pizzaparty tb; sem sucesso). No meu caso, seguindo suas instruções, o APP aparentemente roda legal (pois não mostra mensagem de erro) mas não preenche a FUSION TABLE.
Me ajuda aí, por favor...
Abração!
Opa, amigão... Desculpe aí: funfou legal!! Só rolou um mega delay pra upar os dados. ;) MANDOU BENZAÇO NO TUTO, IRMÃO!!! Parabéns.
ResponderExcluirMarcio, tem como me ajudar, teria um exemplo, já fiz de tudo e não funciona. já fiz, refiz, mudei para o TinyDB e nada...
ExcluirM.Sc. Márcio Souza, Estou com o mesmo problema que vc, o app roda mas n inseri nada na fusion table. O que vc fez para resolver o problemas?
ExcluirBoa Noite, fiz de tudo e não funcionou, coloquei um TB igual a sua Label6.text para verificar a sql aparentemente esta correto, so que nao subiu para o Driver. notei que o insert estava sendo montado com "," a mais devido ao primeiro bloco com os Join, retirei os "," mais nada, pode me ajudar.
ResponderExcluirOutra duvida, minha ideia e um banco relacional, mais que fica-se no celular, pois onde pretendo usar o sinal 3G e fraco e notei que este tipo de banco fica pesado, com o TinyBd eu consigo, tipo ter tabelas relacionadas ex.: Cliente e vendas relacionando um para varias.
Se for possivel eu envio o meu aplicativo para vc dar uma ajuda.
Prezados, ainda não ajustei, mais identifiquei o problema e mesmo a sql (Insert) pois eu criei uma tabela com x campos mais como inicialmente iria usas só 3 campo no insert eu não coloquei os outros, coisa de iniciante, vou ajustar e testar.
ResponderExcluirBoa Tarde, Fiz os ajustes mais não funcionou, não consigo visualizar os dados pelo Google Driver, tem alguma forma especifica ou para eu verificar se foram salvo?
ResponderExcluirAlexandre...acessa o seu google dics e verifica se a tabela atualizou...
ResponderExcluirgoogle docs....
ResponderExcluirEntão pessoal aparece o horário da ultima atualização mais não aparece os dados.
ResponderExcluiralexandre...veja que tem q informar o id da tabela corretamente..e sua api key tambem...
ResponderExcluirBom dia, pessoal ja fiz de Tudo, deletei aapi Key e criei uma nova, delete a minha tabela e continua o mesmo, a mensagem que da é a seguinte: 400 Bad Request Invalid query: Bad Column reference Name.... ja fiz de tudo e nao identificou o erro, estou usando o Programa pizzaparty sem nenhum ajuste, pode ser problema na minha rede?
ResponderExcluirOlá Germinaro,
ResponderExcluirSegui todos os passos para implementar. Não há mensagem de erro, porém o insert não ocorre.
Mudei as propriedades da tabela, inclusive recriei a table e copiei o novo ID.
O que pode estar havendo?
Nota: executo o app do emulador.
Caro Roni,
ResponderExcluirNo EMULADOR o INSERT não funcionará, pois neste caso necessita que seja feita conexão com a tabela do Google Docs (que está na NUVEM)...
Instale a aplicação no smartphone e veja se funciona.
Como já comentado no post, sua API KEY e a KEY de sua tabela no Google Docs tem que estar exatamente como fornecido lá quando da criação ... Não foi muito fácil fazer funcionar , mas aos poucos chegamos lá... Por uma questão de segurança o Google criou estes requisitos...
abraço,
O meu tbm, ja fiz pelo celular e nada d salvar
ResponderExcluirRequisitos para funcionar :
ResponderExcluirVá em https://code.google.com/apis/console
Clique no MENU em API ACCESS confira qual sua Fusion Tables API KEY (associada a seu email Google).
COPIE a API KEY e cole na aplicação em : SET FusionTables.Control.APIKEY to xxxxx
A ID da tabela no Google DOCS vc pega clicando em sua tabela no Google Drive e depois clicando no MENU em ABOUT THIS TABLE...
A principio deve funcionar...
Germinaro
complementando...eh necessário ATIVAR o Service FUsion Tables na Google API COnsole.
ResponderExcluirVá em : https://code.google.com/apis/console
clique em SERVICES e ATIVE o FUsion Tables ...ok?
Boa Tarde Germinaro,
ResponderExcluirVocê poderia mostrar como ficaria fazendo um SELECT?
Boa noite!
ResponderExcluirEstou sem entender como fazer o SELECT (consulta).
Montei uma forma simples que aparentemente deu certo (Select * From Tabela Where Nome='Luiz'), mas não consegui visualizar o resultado.
Se já tiver desenvolvido essa parte...
Obrigado
Caro Luiz,
ExcluirCOmo publicado no post acima : *para ter o ID de sua tabela vá no Google Drive, clique na sua tabela,depois em File / ABOUT THIS TABLE e copie o Encrypted ID , veja o exemplo no post acima.
abraço,
Poderia postar um tutorial sobre select...no meu caso consigo inserir tranquilamente qualquer valor na tabela...isso já não é um problema, mas agora queria saber como consultar um valor. no meu fica dando erro "Request Quota Exceeded...ERROR 400" que é cota eu sei que não é...enfim, parabens pelo tutorial e pela iniciativa de ajudar a galera!
ResponderExcluirValeu!!
Caro Pedro Candido,
ExcluirParece que esta mensagem tem a ver com RENOVAR a APIKEY ... para atualizar veja como fazer no post anterior que publiquei com o título USANDO FUSIONTABLES COM APPINVENTOR... a quota é de 25000 requests / dia ...
abraco,
Amigo, boa noite. Estou na mesma situação de outros colegas. Segui todo o seu exemplo, porém, não consegui enviar os dados pro fusion table. O pior é que nenhuma mensagem de erro é apresentada.
ResponderExcluirCaro Pedro,
ExcluirNo INSERT , insira ASPAS SIMPLES antes e depois do nome das variáveis que irás passar ...
Uma forma de ver o resultado da QUERY(se deu errado ) é usar o controle WHEN Fusion1.Control.result ... se deu BAD REQUEST 400 , a query está mal-formada... Veja exemplo no Post de título - Verificando Fusion Query Result ...OK? abraço
Companheiro, obrigado pela ajuda. Realmente é esse o erro encontrado, porém, ainda não consegui encontrar uma solução. Simplifiquei tabela e query pra ver se encontrava uma saida, e até agora nada.
ExcluirMinha query está dessa forma:
INSERT INTO xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx (NOME) VALUES ('A')
Abraço!!!
Pedro,
ResponderExcluirTestei o INSERT (como o seu) aqui funcionou.
Possívelmente o problema está no nome da tabela (pegar em ABOUT THIS TABLE) ao visualizar a tabela no Google... Tambem VErificar sua API Key...
Sugestão :monte um bloco para mostrar o RETURN (se já nao o fez) como postei na imagem acima e me informe a mensagem que aparece ...
Outro item a verificar é o nome correto do campo, inclusive Maiusculas/Minusculas tem que bater... na minha tabela o campo chama-se - Nome ...alterei na query para NOME (maiúsculas) e retornou Bad Column reference NOME...
Outro detalhe: a conta Google que está fazendo a query TEM que ser a conta que CRIOU a tabela(se esta não é pública). Vc pode autorizar contas a acessar sua tabela. Verifique em ABOUT THIS TABLE em Usability and Reuse se está como Private e se este email que estás usando foi o email Google que criou a tabela.
Abraço
Pedro,
ResponderExcluirSe quiseres , faça o download source de seu app e me envie o .zip para que eu teste por aqui . Nao esqueca de me incluir como autorizado na sua tabela do Google Drive .Lá em Edit Table information autorize o email : germinaro@gmail.com ou torne a tabela pública até funcionar. ok?
abraço
Germinaro, obrigado pela força.
ExcluirTe enviei um email com o source, e já permiti seu acesso a tabela.
Forte abraço.
Pedro Alex
Pedro,
ExcluirFiz UPLOAD de seu aplicativo ...realmente como está não funcionou... A única coisa que desconfio estar com problema seria a API KEY... o resto está OK ! Podes conferir ?
Abraco,,
Germinaro
Amigo Germinaro, boa noite.
ExcluirMuito grato pela ajuda. Consegui inserir dados... hehehehe
Realmente o problema era a API KEY.
Forte abraço!
Amigo Germinaro, Boa noite.
ExcluirAproveitando o gancho, gostaria de saber se você tem algum exemplo de app com uso de GPS?
Preciso capturar latitude e longitude.
Abraço
Abraço.
Pedro,
ExcluirAinda não desenvolvi nada que necessitasse de GPS.Mas o AppInventor tem um componente que trata disso.Dá uma olhada em :
http://beta.appinventor.mit.edu/learn/reference/components/sensors.html#LocationSensor
Tem um exemplo básico no tutorial em :
http://beta.appinventor.mit.edu/learn/tutorials/whereismycar/whereismycar.html
abraço,
Germinaro
E somar valores de colunas diferentes é possível? tentei de N formas mas não rola...sempre retorna que a query está errada... era para ser simples assim..SELECT SUM (Valor1 + Valor2 FROM tabelakey WHERE condição='alguma coisa'
ResponderExcluirmas não vai..se souber de algo ficarei muito grato.
abraço!
Caro Pedro,
ExcluirA SINTAXE para acesso a Fusion Tables obedece a estas regras disponíveis em :
https://developers.google.com/fusiontables/docs/v1/sql-reference
Confira lá...OK?
Abraço
germinaro
Já havia visto isso...mas não encontrei nada que auxilia com as operações (+-*/) entre colunas..estou garimpando...quando encontrar posto aqui.
ExcluirMesmo assim obrigado pela atenção.
Abraço!
ola tudo bem entao consegui inserir na tabela mas esta indo nome.Txt e email.Txt na minha tabela poderia me ajudar?
ResponderExcluirGrato.
Olá Josue ,
Excluirnome e email sao os nomes que utilizei como exemplos...tens que informar o nome do campo que VOCE criou para receber nome e email...OK?
Olá, boa noite, está funcionando perfeito, porém achei o insert muito lento, é isso mesmo?
ResponderExcluirEstou fazendo via emulator, mas testei pelo celular e ficou lento da mesma forma, as Fusion Tables são assim lentas?
Olá André,
ExcluirBeleza que atualizou ...vc diz , demorou para atualizar ? podem ser vários fatores...conexão...Um detalhe, o recurso é gratuito até um X de inserçoes nas tabelas...e talvez, por ser gratuito eles deem uma segurada ïntencional"...entende ? abraço...
Olá Germinaro, não consegui encontrar a parte 1 poderia me mandar o link?
ResponderExcluirOla Germinaro, estou fazendo um app de consulta.. criei uma tabela no fusiontables, coloquei apikey tudo direitinho nos blocks, tudo certo... porém quando efetuou a consulta a query ao invés de retornar o valor que quero da tabela fusion criada, está retornando www.google.com.... o que seria isto? como corrigir? pode me ajudar? abcss
ResponderExcluirOlá Walfrido,
ExcluirColocaste ON no Fusion Tables na Google ? Veja meu post parte 1 sobre o assunto ... Pode ser isso... Caso OK, poderias me enviar a App para que eu possa analisar e testar ? Envie para : germinaro@gmail.com
Abraço
Obrigado pela explicação, foi de grande valia.
ResponderExcluirAguardo ansioso, se for possível, explicação de como "Buscar" as informações na tabela pelo app inventor.
Alguém conhece um bom livro em português para aprimorar o estudo, pois só encontro livros de SDK.
Agradeço a que puder ajudar.
Germinaro boa tarde,
ResponderExcluirPoderia, por favor, nos dar um exemplo de como apresentar de uma forma amigável o resultado do SELECT na tela?
No meu caso, o SELECT trouxe o resultado corretamente, porém não faço ideia de como formatar esses dados, poderia nos dar um exemplo?
Por exemplo, meu SELECT é o seguinte:
SELECT Email FROM (id da tabela...) WHERE Nome = (valor do TextBox))
Ele retorna na Label o valor na Label:
((Email) (xxx@yyy.com.br))
Ele traz o valor correto, porém nesse formato não muito amigável...
Ja tentei jogar esse valor em uma ListView e em uma ListPicker mas não da certo...
Gostaria de exibir esses valores numa tabela, de uma forma mais organizada, poderia me explicar como fazer isso? Não consegui achar nenhum exemplo na internet.
Desde já agradeço,
Gabriel
Caro Gabriel,
ExcluirDá uma olhada na sintaxe da SQL…
Neste framework , a sintaxe SQL é uma pouco diferente da normal…então pode ser que algum parametro tenha que ser informado…
https://developers.google.com/fusiontables/docs/v1/sql-reference
abraco
Germinaro
Oi Germinaro tudo bem?
ExcluirObrigado pelo retorno!
Analisei a sintaxe e está correto, tanto que o sistema está trazendo o resultado correto da query.
A minha dúvida está em como exibir esses dados de uma forma amigável usando os componentes do App Inventor. Como posso tratar esses dados que a query me traz?
Por exemplo, determinada consulta me traz a informação da população de determinadas cidades
São Paulo - 19 milhões
Rio - 10 milhões
Quero saber como faço pra colocar essas informações oriundas do banco de dados nas estruturas do App Inventor, entendeu? Em alguma tabela, por exemplo... tentei jogar o resultado da consulta no ListView e o ListPicker e não funcionou
Só seguindo meu exemplo, queria exibir uma tabelinha mais ou menos assim:
CIDADE | POPULAÇÃO
Sp | 19
Rio | 10
Desde já agradeço,
Gabriel
A formatação do exemplo não ficou boa no post rs mas seria uma tabela exibindo esses dados oriundos de um Select no banco, ok? Minha dúvida é em qual componente de tela do App Inventor (e como) posso exibir esses dados.
ExcluirAtt.
Gabriel
Olá, Germinaro,
ResponderExcluirTudo bem?
Primeiramente, gostaria de dizer que seus posts estão me ajudando bastante na criação dos meus aplicativos, porque não sou um profissional da área. Parabéns!
Mas o motivo do meu contato é para pedir uma ajuda. Não estou encontrando uma maneira de permitir que os usuários do app que estou desenvolvendo consigam compartilhar a localização uns com os outros. Eu tenho que fazer isto através do LocationSensor combinado com uma Fusion Table?
Se sim, caso eu quizesse permitir a visualização de cada localização em uma mapa, também precisaria utilizar uma API do Google Maps?
Agradeço desde já pela atenção,
Rafael C. Libardi
Olá Germino, posso criar varias tabelas diferentes, uma para cada aplicação numa mesma conta do google drive?? consigo importar vários contatos do cell e enviar para o google drive em .txt? obrigado
ResponderExcluirDesculpa!
ResponderExcluirDescobri agora que era só clicar na imagem.
Valeu.
Olá Germinaro.
ResponderExcluirEstou tendo um problema com uma aplicação que usa o fusiontables eu tenho que fazer o serviço off-line e ao final do dia transmitor os dados de uma pesquisa. O que acontece é que parte dos dados se perdem devido a erros do tipo 5XX você já viu isso acontecendo e sabe como resolver.
Muito obrigado.
Olá Luciana...Nao conheco esse erro 5XX ... como eh essa aplicacao que voce usa...roda no smartphone? no computador?
ResponderExcluirSao atualizacoes nas tables ou insercoes? ha limites de insercoes na definicao de sua table?
Faca uma pesquisa na propria Google sobre o assunto FusionTables Erro 5XX . Li na internet que o erro 500 eh comum......talvez encontre uma solucao...bom trabalho !
Bom Germinaro, voce pode passar esse código para o app inventor 2, ou me passar o arquivo .aia do projeto, algumas partes do código entendo, mas não consigo fazer a conexão com o fusion table
ResponderExcluirAmigo, conseguir inserir as informações, e conseguir buscar informações, porem estou com uma dificuldade especifica, vamos simplificar um exemplo, eu tenho no meu banco de dados 3 Colunas, Sendo por Exemplo Login, Senha, EMail, ao fazer a busca no fusion table com query SELECT * FROM, ele busca as linhas toda, essa é a intenção, mais o meu Resultado vem tipo assim,
ResponderExcluirResult =
Login,Senha,EMail
Yuri,123456,yuri_miyazaki26@hotmail.com
criei 3 Variáveis, gostaria que a coluna 1 que seria o nome carregasse a primeira variável a segunda carregar a senha e por fim a terceira carregar o email,
acho que tenho que trabalhar com lista mais não faço a menor idéia, se souber como faz isso ou saber algum post que já foi solucionado isso passa ai, pois já procurei tudo
Olá Yuri,
ExcluirDá uma lida neste link:
https://developers.google.com/fusiontables/docs/v2/using
Espero que ajude...tem dicas de como tratar com as tabelas de sua Fusion Table...
Bom trabalho !
Boa tarde.
ResponderExcluirO meu problema é com a transmissão de dados do apk para o fusion tables.
No teste do qrcode, funciona perfeitamente, envia os dados na planilha sem problemas.
Quando copilo e gero o apk, para instalação do aplicativo desenvolvido no celular, não transmite dados para planilha.
no inicio transmitia 1 a cada 10 inserções e de repente parou de transmitir.
Não dá nenhum erro.