Sub AcessaWeb(url, x) ' recebe uma url para pesquisar e devolve uma planilha ' Solicita a criação da planilha x



Documentos relacionados
Abaixo do Objeto WorkSheet temos a coleção Cells, que representa todas as células de uma planilha.

ETEC DR. EMÍLIO HENRNANDEZ AGUILAR PROGRAMAÇÃO DE COMPUTADORES II PROFESSOR RAFAEL BARRETO DELPHI FORMULÁRIO COM ABAS E BUSCAS DE REGISTROS

MICROSOFT EXCEL AVANÇADO

Manipulando Strings no VBA (Replace, Mid e InStr)

UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE ESCOLA AGRÍCOLA DE JUNDIAÍ EAJ - PRONATEC / REDE etec MÓDULO III DESENVOLVIMENTO PROFESSOR ADDSON COSTA

Tutorial 1 - Básico do VBA do Excel

MANUAL DO ANIMAIL Terti Software

Barra de ferramentas padrão. Barra de formatação. Barra de desenho Painel de Tarefas

Como funciona? SUMÁRIO

UFSM COLÉGIO AGRÍCOLA DE FREDERICO WESTPHALEN CURSO SUPERIOR DE TECNOLOGIA EM SISTEMAS PARA INTERNET. Programação para Internet I

Fluxo de trabalho do Capture Pro Software: Indexação de OCR e separação de documentos de código de correção

CODE IGNITER INSTALAÇÃO & BANCO DE DADOS

MANUAL DO GERENCIADOR ESCOLAR WEB

Como funcionam os comandos de SQL no Logic Basic Por Alan Oliveira

GUIA MUDANÇA E FORMATAÇÃO DE SERVIDOR - MILLENNIUM

Parte 5 LibreOffice Base

Esse manual é um conjunto de perguntas e respostas para usuários(as) do Joomla! 1.5.

Fluxo de trabalho do Capture Pro Software: Indexação de código de barras e separação de documentos

Trabalhando com conexão ao banco de dados MySQL no Lazarus. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011

Iniciação à Informática

Manipulando Strings no VBA (Replace, Mid e InStr)

Microsoft Excel Macro V. Índice 16-) Formulários ) Gerando código para o Formulário... 49

GUIA MUDANÇA E FORMATAÇÃO DE SERVIDOR - SLIM

Banco de Dados Microsoft Access: Criar tabelas. Vitor Valerio de Souza Campos

TUTORIAL UNP VIRTUAL

Manual das funcionalidades Webmail AASP

Manual de operação. BS Ponto Versão 5.1

E.E.E.B. Professor José Fernandes de Oliveira. Manual de Uso. Sistema Interno (Professores)

ROTINAS PADRÕES DO SISTEMAS

Revisando sintaxes SQL e criando programa de pesquisa. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011

EXEMPLO DE COMO FAZER UMA MALA DIRETA

Manual do usuário. Softcall Java. versão 1.0.5

MANUAL DE OPERAÇÃO EDOutlet (Online e Offline):

Banco de Dados Microsoft Access: Criar tabelas

Configurando um Grupo Doméstico e Compartilhando arquivos no Windows 7

Banco de Dados Oracle 10g

Modo Estrutura é o ambiente de definição e estruturação dos campos, tipos de dados, descrição e propriedades do campo.

Domo Estrutura do Sistema Físico e Lógico

Procedimentos para Reinstalação do Sisloc

WorkFlow WEB Volkswagen v docx. Manual de Atendimento Volkswagen

FTIN FORMAÇÃO TÉCNICA EM INFORMÁTICA. Módulo de Programação Prof. Bruno Maciel

Manual Administrador - Mídia System

A1;A7 é o mesmo que A1 e A7 A1:A7 é o mesmo que A1 até A7 (abrange A1, A2, A3, A4, A5, A6, A7).

CRIANDO UM BANCO DE DADOS

Listando itens em ComboBox e gravando os dados no Banco de Dados MySQL.

Tutorial do Sistema de Gestão de Conteúdos para Web - SYSWEB

Informática de Gestão 1º ano / 1º semestre Ano letivo: 2014/2015. Visual Basic VBA

Guia Site Empresarial

FUNCTION ) RETURNS INTEGER AS $$ DECLARE

Treinamento sobre SQL

Apostila Site Personalizado

Treinamento Sistema Condominium Módulo III

Manual do Sistema "Vida Controle de Contatos" Editorial Brazil Informatica

Manual de Utilização do PLONE (Gerenciador de página pessoal)

Sistema de Controle de Cheques GOLD

Reconhecer alguns dos objectos VBA Automatizar bases de dados recorrendo à programação VBA e scripts SQL

Tutorial para ensinar a mexer pagina modelo da UFPI.

MANUAL DE UTILIZAÇÃO Aplicativo Controle de Estoque Desktop

Gerenciamento de Arquivos e Pastas. Professor: Jeferson Machado Cordini jmcordini@hotmail.com

OPENOFFICE PLANILHA SEMANA 4

Manual Captura S_Line

Desenvolvendo Websites com PHP

Instalando o WordPress em localhost

Tabela e Gráficos Dinâmicos Como estruturar dinamicamente dados no Excel

Docas do Pará - Guia de Instalação

MÓDULO 5 Movimentações

Microsoft Access XP Módulo Um

WF Processos. Manual de Instruções

ETEC DR. EMÍLIO HENRNANDEZ AGUILAR PROGRAMAÇÃO DE COMPUTADORES I PROFESSOR RAFAEL BARRETO

Gerenciamento de Contatos

COMO OTIMIZAR A SUA PLANILHA ATRAVÉS DA GRAVAÇÃO DE UMA MACRO EM EXCEL

ADMINISTRAÇÃO DO SITE DA ESCOLA: 1. O site da escola está composto de 3 espaços. Conteúdo, Notícias e Destaques...

Capítulo I Preliminares: Visual Basic na planilha eletrônica Excel.

LINX POSTOS AUTOSYSTEM

WorkFlow WEB Caberj v docx. Manual Atendimento Caberj

1- Requisitos mínimos. 2- Instalando o Acesso Full. 3- Iniciando o Acesso Full pela primeira vez

SUMÁRIO 1. AULA 6 ENDEREÇAMENTO IP:... 2

Principais Ferramentas do Tidia-ae

ETEC DR. EMÍLIO HENRNANDEZ AGUILAR PROGRAMAÇÃO DE COMPUTADORES II PROFESSOR RAFAEL BARRETO

Como atualizar os preços da ABCFarma.

43 11 Relatórios, Listagens e Exportações para Excel, TXT e HTML

Memória Flash. PdP. Autor: Tiago Lone Nível: Básico Criação: 11/12/2005 Última versão: 18/12/2006. Pesquisa e Desenvolvimento de Produtos

1. Introdução pág.3 2. Apresentação do sistema Joomla! pág.4 3. Acessando a administração do site pág.4 4. Artigos 4.1. Criando um Artigo 4.2.

Manual do Usuário CFCWeb BA

1 Essa é a tela de login do Sistema de Atendimento Online, siga o passo a passo abaixo.

INTRODUÇÃO À TECNOLOGIA SERVLETS

Revisão: Introdução. - Integração com o AutoManager; 1 Atualização de versão do banco de dados PostgreSQL

MANUAL DE UTILIZAÇÃO Aplicativo Controle de Estoque Mobile

8VDQGR5HSRUW0DQDJHUFRP&ODULRQH3RVWJUH64/ -XOLR&HVDU3HGURVR 8VDQGRSDUkPHWURV

Como acessar o novo webmail da Educação? Manual do Usuário. 15/9/2009 Gerencia de Suporte, Redes e Novas Tecnologias Claudia M.S.

INFORMÁTICA APLICADA III APOSTILA VISUAL

Como incluir artigos:

Celebre este natal e ano novo junto aos seus amigos e familiares distantes.

Controle Patrimonial WEB

Manual do e-dimed 4.0

RESUMO DE CATALOGAÇÃO

Portal da Prefeitura de São Paulo SECOM. MANUAL DO WARAM v. 1.5 Secretarias

Manual da Administração do site Abrasel 2.0

Transcrição:

Aula 1 Planilha para Incluir / Excluir / Consultar dados em uma agenda telefônica (Nome, Endereço, Telefone) residindo em Banco de dados Access ou na WEB (usando um banco espelho no meu site, e uma página asp para repassar os comando SQL e devolver a matriz resposta se o comando sql for um select) A planilha deverá ter as seguintes informações: As colunas A, B e C vão receber a partir da linha 3 o resultado da pesquisa feita pelo usuário. O string a ser procurado será digitado em a2, e o ícone do homem com a lupa será clicado. Para inserir uma entrada na agenda, os dados serão digitados nas células de A2 a C2, e a figura da agenda deverá ser clicada. Para excluir uma entrada da agenda, o nome deverá ser digitado em A2 e a borracha deverá ser clicada. O relógio é um bônus para o usuário: Ele causará o acerto da data e hora do computador, a partir de um relógio externo confiável (erro menor que 1 segundo) A agenda poderá residir num local da rede, e seu nome e caminho completo será colocado na célula. G1 (Na figura está em G2, pronta para ser copiada em G1 para testarmos esta opção). Preferencialmente a agenda deve estar em um site, e nesse caso coloca-se em G1 a palavra WEB. Nessa opção, pessoas de todos os locais podem se cadastrar usando a planilha, e também consultar os dados colocados por outras pessoas. O primeiro ícone corresponde ao pedido de Help, e vai funcionar assim: Clica-se nessa figura e recebe-se uma mensagem solicitando que se clique em outra figura, para receber o help a respeito de sua utilização. Para implementar esse recurso, temos que definir uma variável global que indicará se o usuário solicitou ajuda ou não (Variável global Booleana). O valor desta variável vai alterar o processamento dos demais cliques (executa a função ou explica como usá-la). O endereço do banco em G1 será guardado em uma variável global chamada banco. Também será mostrado como trabalhar com ranges nomeados, para tornar o código independente do local atual dos dados inspecionados na planilha. Se movermos a célula G1 para outro local desta planilha, ou mesmo para outra planilha desta pasta, a rotina não precisará ser alterada.

Esta aula mostra como podemos construir uma planilha obtendo dados digitados por diversas pessoas a qualquer momento, como usar variáveis Globais e ranges nomeados. Primeiro passo Pode-se começar o projeto por qualquer rotina, mas nós vamos aqui começar pelas rotinas mais básicas, testá-las e só então passar para a próxima rotina (processo de construção bottom-up). Escolhemos então fazer o acesso via WEB, já que o maior trabalho é usar o gravador de macros para obter o código necessário à conexão. Começamos então gravando uma macro para pegar a data e hora da Brasília (que é a mesma do Rio de Janeiro). Os passos a serem executados são (Excel até o 2003): Inserir nova planilha Menu Dados Importar dados externos Nova consulta à WEB. Consulta: www.ruimedeiros.eti.br/horacerta.asp Informar como célula para resposta a célula a1 O código gerado pelo gravador de macros será: 1. Sheets("Plan1").Select 2. Sheets.Add 3. With ActiveSheet.QueryTables.Add(Connection:= _ 4. "URL;http://www.ruimedeiros.eti.br/horacerta.asp", Destination:=Range("A1")) (várias linhas aqui que não mexeremos) 5..Refresh BackgroundQuery:=False 6. End With A partir deste código vamos criar 2 rotinas de uso geral: A primeira para criar uma planilha, escondê-la e devolver o objeto que a representa. A segunda vai obter uma planilha usando a primeira rotina e então criar uma consulta à WEB. Para torná-la genérica, vamos receber a URL como parâmetro. Além disso, no destination:= devemos explicitar que o range está na planilha recém-criada Além disso vamos criar uma terceira rotina, para excluir a planilha temporária criada para receber o resultados das queries (ela deve jogar na principal a mensagem de erro). As rotinas codificadas ficam assim: Sub CriaPlanilha(x) Set x = Sheets.Add x.visible = False Sub DeletaPlanilha(p) If LCase(p.Cells(1, 1)) = "erro" Then ' Houve erro no query? Cells(3, 1) = p.cells(1, 2) ' Devolve na planilha principal Application.DisplayAlerts = False ' Não deixa vir a mensagem de alerta p.delete ' Exclui a planilha

Sub AcessaWeb(url, x) ' recebe uma url para pesquisar e devolve uma planilha CriaPlanilha x ' Solicita a criação da planilha x Set base = x.cells(1, 1) ' Aonde virá a resposta à query With x.querytables.add(connection:= _ "URL;http://" & url, Destination:=base) ' troquei as constantes gravadas.name = "nome".fieldnames = True.RowNumbers = False.FillAdjacentFormulas = False.PreserveFormatting = True.RefreshOnFileOpen = False.BackgroundQuery = True.RefreshStyle = xlinsertdeletecells.savepassword = False.SaveData = True.AdjustColumnWidth = True.RefreshPeriod = 0.WebSelectionType = xlalltables.webformatting = xlwebformattingnone.webpreformattedtexttocolumns = True.WebConsecutiveDelimitersAsOne = True.WebSingleBlockTextImport = False.WebDisableDateRecognition = False.Refresh BackgroundQuery:=False End With Agora vamos criar a rotina de Help. Quando chamada, ela deve ligar uma variável global e informar que se deve clicar no ícone desejado. Se já a variável já estiver ligada, basta desligá-la e avisar isso ao usuário. Código: Definição da variável Global (Antes de todas as Sub do módulo) Dim ajuda As Boolean Rotina Help: Sub help() MsgBox "Pedido de ajuda desativado." & vblf & "Clique de novo para ativar" ajuda = True MsgBox "Clique no ícone desejado para obter ajuda" Todas as rotinas que mostrarem o seu help deverão fazer a variável ajuda = false

A próxima rotina é a que acerta o relógio. Ela vai chamar a rotina de consulta à web (horacerta.asp) já vista, pois gravamos a macro usando esta consulta. Depois vai atribuir a data e a hora ao sistema, usando as funções especiais Date e Time do VB. Esta rotina, como as demais, tem possibilidade de mostrar o próprio help. Sub Horacerta() MsgBox "Apenas clique no relógio para acertar o relógio do seu computador" Range("a2:d1000").ClearContents ' Limpa a consulta anterior AcessaWeb "www.ruimedeiros.eti.br/horacerta.asp", x Date = Format(x.Cells(1, 1)) Time = Format(x.Cells(2, 1), "hh:mm:ss") MsgBox Format(x.Cells(1, 1), "dd/mm/yyyy") & " " & _ Format(x.Cells(2, 1), "hh:mm:ss") ' mostra a data e hora DeletaPlanilha x Este código mostra também como continuar um comando VB em outra linha: Coloca-se após um espaço em branco ao final da linha um sublinhado (_) e muda-se de linha A próxima linha continuará (em qualquer coluna) o comando iniciado anteriormente. Veremos agora como executar um comando SQL sobre um banco de dados. A linguagem SQL admite comandos para acesso a dados: SELECT Faz uma consulta, retornando uma tabela resultante, chamada de recordset. UPDATE Altera uma ou mais linhas de uma tabela do banco (não será usado aqui) INSERT Insere uma linha em uma tabela do banco DELETE Exclui uma ou mais linhas de uma tabela do banco. A sintaxe desses comandos depende de qual o banco que estamos utilizando, mas existe um conjunto padrão de comandos com a mesma sintaxe, conhecido como SQL ANS. Se você for utilizar extensamente acesso a banco de dados,procure material na internet usando como argumentos de pesquisa as palavras em maiúsculas acima. Use esta rotina sempre que desejar executar um comando SQL: Sub SqlAccess(sql, x) Set con = CreateObject("ADODB.Connection") con.open "Provider=Microsoft.Jet.Oledb.4.0;data Source=" & Banco Set rst = con.execute(sql) CriaPlanilha x If Left(LCase(Trim(sql)), 6) = "select" Then x.cells(1, 1).CopyFromRecordset rst ' devolve a tabela lida na ' planilha criada Set rst = Nothing Set con = Nothing Repare que o nome do banco deverá estar na variável global "Banco"

A rotina a seguir é muito simples. Ela vai preparar a url para chamar a rotina já definida anteriormente, que devolverá uma planilha "x" contendo o resultado. Sub SqlWeb(sql, x) url = "www.ruimedeiros.eti.br/sql/executa.asp?sql=" & sql AcessaWeb url, x Agora uma rotina que só serve para escolher a rotina de acesso ao banco que será utilizada: A da WEB ou a do Banco Access, dependendo do que foi escrito na célula G1 - range("banco") da planilha. Com a sua existência, o programador vai chamar sempre uma rotina para emitir um comando SQL, sem se preocupar aonde ele vai atuar. Sub execsql(sql, x) Banco = Range("banco") ' Banco receberá o conteúdo da célula G1 Range("a3:d1000").ClearContents ' Limpa o resultado da consulta anterior If LCase(Banco) = "web" Then ' Foi solicitada consulta à WEB SqlWeb sql, x Else SqlAccess sql, x ' Vai acessar o banco Esta rotina não cria uma planilha. Esta será criada pelas rotinas chamadas, e repassada para o programa chamador dela através da variável do tipo WorkSheet "x". A rotina que comanda a pesquisa e escolhe que linhas serão mostradas é a seguinte (É chamada pelo ícone do Sherlock) 1. Sub pesquisa() 2. 3. 4. MsgBox "Escreva na célula A2 um string a pesquisar na agenda" & _ 5. vblf & "Depois clique aqui para pesquisar" 6. 7. 8. quem = Trim(Cells(2, 1)) 9. Range("b2:c2").ClearContents 10. sql = "select * from agendademo" 11. execsql sql, x 12. k = 3 13. For i = 1 To 1000 14. If x.cells(i, 1) = "" Then Exit For 15. linha = x.cells(i, 1) & x.cells(i, 2) & x.cells(i, 3) 16. If InStr(1, linha, quem, vbtextcompare) > 0 Then 17. For j = 1 To 3 18. Cells(k, j) = x.cells(i, j) 19. Next 20. k = k + 1 21. 22. Next 23. DeletaPlanilha x 24. Vamos analisar apenas as linhas que são novidade até este momento:

8 Função trim (aparar) devolve um string idêntico ao fornecido como parâmetro, mas sem espaços em branco no início e no fim. Então trim(" a b c ") "a b c" 10 Select * from agendademo É o comando SQL que selecionará todos os campos (*) da tabela chamada "agendademo" 14 - If x.cells(i, 1) = "" Then Exit For Esta sintaxe é permitida para o IF (mas não recomendada) Em vez de escrevermos 3 linhas: "if then"; comando; "end if " podemos escrever apenas uma, desde que haja apenas um comando após o then. Outra novidade é o exit for O fluxo de execução pula para após o próximo Next 16 Função "instr" Usada extensivamente em programas que tratam textos. Ela devolve a posição do terceiro parâmetro dentro do segundo, após a posição dada pelo primeiro parâmetro. Se não existir esse string dentro do outro, ela devolve 0. O último operando á opcional. Se não informado, o casamento deve ser perfeito "abc" <> "Abc" Se for vbtextcompare, as maiúsculas não diferenciam os strings. Agora a função que é chamada pelo ícone da agenda. Ela vai inserir os dados da linha 2 nos 3 campos da tabela do banco Sub cadastra() MsgBox "Escreva nas células da linha 2 o nome, o endereço e o telefone a cadastrar" & _ vblf & "Depois clique aqui para pesquisar" sql = "insert into agendademo values('" & Cells(2, 1) & "','" & _ Cells(2, 2) & "','" & Cells(2, 3) & "')" execsql sql, x DeletaPlanilha x O comando sql fica, após a substituição dos valores das células da linha 2 (suponha X Y e Z): "insert into agendademo values('x','y','z')" Como os 3 campos são do tipo TEXT no banco de dados, devem ser escritos entre pliques (aspas simples). Essa sintaxe é uma das permitidas pelo SQL ANS, e como é a mais simples estamos usando ela aqui. Repare que não precisamos saber os nomes dos campos na tabela, mas temos que saber a sua ordem e que são do tipo TEXT. Por fim, a rotina que exclui (deleta) uma linha na tabela: Sub Apaga() MsgBox "Escreva na célula A2 um nome completo para excluir da agenda" sql = "delete from agendademo where nome='" & Trim(Cells(2, 1)) & "'" execsql sql, x DeletaPlanilha x Precisamos saber o nome do campo que contém o nome da pessoa (chave de acesso). O módulo completo está no arquivo texto associado à aula 2 no site do curso, ou diretamente, em www.ruimedeiros.eti.br/vba/acessabanco.bas