Pagina Inicial‎ > ‎Excel‎ > ‎

SQL vs Excel

Como realizar uma busca SQL dentro do Excel

Bom, olá pessoal.

Atenção pessoal estarei disponibilizando uma série de tutoriais com uso de VBA, para as mais diversas necessidades.

neste primeira parte estou disponibilizando um tutorial de como montar uma busca SQL dentro do excel, de uma(s) planilha(s) para outra.

porque usar SQL?
é muito mais rápido e pratico e vc pode usar filtros que não poderia usar de forma rapida e fácil no excel.

como por exemplo eu tenho em uma planilha uma lista de tarefas e eu quero todas as tarefas que vão vencer no periodo de 25/04/2009 até 15/05/2009, vc pode usar simplesmente este comando SQL:

Citação:
"select * from [dado$] where data>=#04/25/2009# and data<=#05/15/2009#;"
onde:

Citação:
select * = seleciona todos os dados, também pode ser "select data, nome, funcao", isto é, todos os rótulos, mas lembre-se: não use espaços nem pontuação. ex.: função=funcao; data final=data_final.
também pode usar top 15 (ou qualquer outro numero) para filtrar os 15 primeiros que encontrar.
Citação:
where = aqui vc define os filtros que vai usar, também pode usar "Having", where pode ser um filtro unico ou qualquer outro lógico (=;>;< etc); lembre-se que as datas devem ser identificadas pelo # e no formato mm/dd/yyyy (mm/dd/aaaa). dentre outros. pesquise na net sobre comandos SQL.
como colocar o código dentro do do excel:
primeiro devemos adicionar a referencias DAO:

entre no editor de vba (alt+f11) selecione o menu ferramentas selecione referencias e marque a caixa do "Microsoft DAO 3.6 object Library" de OK e estará pronto para começar.

vamos então criar o banco.
como exemplo vamos criar um banco de controle de eventos com funcionários, tipo férias, faltas etc...

como no exemplo:
Citação:
BAIXAR
como conectar ao banco:
Citação:
Set Db = OpenDatabase(ThisWorkbook.Path & "" & ThisWorkbook.Name, False, False, "Excel 8.0")
desta forma definimos que o banco é a própria planilha em que estamos trabalhando.

para buscar os dados usamos os seguintes critérios:
Citação:
'rst é o recordset
Set RSt = Db.OpenRecordset("SELECT * FROM [Dados_func$] WHERE chapa = '15400';")
as abas devem ficar definidas desta forma Dados_func = [Dados_func$]
os dados devem ser extraidos da seguinte forma:
Citação:
Range("e5") = RSt("nome")
Range("l5") = Format(RSt("Chapa"), "00000")
usando rst("xxx") para definir o nome do rotulo.

siga as indicações do exemplo anexado estão bem didáticas.


ċ
Controlefuncionários.zip
(33k)
Josemar Machado,
3 de out de 2009 17:00
Comments