Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
[LIVRO:] WINDOWS SERVER 2012 R2 E ACTIVE DIRECTORY CURSO
COMPLETO
PROMOÇÃO DE LANÇAMENTO CLIQUE AQUI
3HVTXLVDUQRVLWH 3HVTXLVDU
ZHEPDVWHU#MXOLREDWWLVWLFRPEU
/,9526'2-8/,2%$77,67,
$FFHVV$YDQoDGR
$FFHVV%iVLFR
$FFHVV$YDQoDGR
([FHO$YDQoDGR
([FHO%iVLFR
([FHO$YDQoDGR
0DFURVH9%$QR([FHO
64/6HYHU5
7&3,37HRULDH3UiWLFD
:LQGRZV%iVLFR
:LQGRZV,QWHUPHGLiULR
:LQGRZV&RPSOHWR
:LQGRZV6HUYHU
:LQGRZV6HUYHU5
:RUG$YDQoDGR
9Ë'(2$8/$6
$FFHVV
$GPLQLVWUDomRH1HJyFLRV
%DQFRGH'DGRV
&$'
&RQFXUVRV3~EOLFRV
([FHO
,QWHUQHW
3RZHU3RLQW
3URJUDPDomR
3URJUDPDV*UiILFRV
5HGHVH7&3,3
9%$QR([FHO±6LVWHPDV3URQWRV
+DUGZDUHH0RQWDJHP
9tGHRHÈXGLR
:HEGHVLJQ
:LQGRZV
KWWSMXOLREDWWLVWLFRPEUDUWLJRVOLYURDFFYEDFDSLWXORDVS
-XOLR%DWWLVWL
:RUG
(%22.6
$FFHVV
$GPLQLVWUDomRH1HJyFLRV
ÈUHD*UiILFD
%DQFRGH'DGRV
%U2IILFH
&$'
&HUWLILFDo}HV0LFURVRIWH2XWUDV
&RQFXUVRV3~EOLFRV
&XOWXUDH,QWHUHVVH*HUDO
)LQDQoDV
0DWHPiWLFDH)tVLFD
([FHO
)RUPDomR3HVVRDOH3URILVVLRQDO
,QWHUQHW
/LQX[
/LWHUDWXUDH2XWURV
3RZHU3RLQW
3URJUDPDomR
5HGHVH7&3,3
9uGHR
:HEGHVLJQ
:LQGRZV
:RUG
/,9526
$FFHVVH%DQFRGH'DGRV
$GPLQLVWUDomRH1HJyFLRV
$SOLFDWLYRV
$XWR&$'
&DUUHLUDH7UDEDOKR
&RQFXUVRV3~EOLFRV
&ULDomRGH6LWHVH:HEGHVLJQ
&XOWXUDH,QWHUHVVH*HUDO
([DPHVGH&HUWLILFDomR
([FHO
)LQDQoDVH,QYHVWLPHQWRV
*HUHQFLDPHQWRGH3URMHWRV
*UiILFRVH&RUHO'UDZ
+DUGZDUHH0RQWDJHP
,QWHUQHW
0DWHPiWLFDH)tVLFD
2IILFH
3RZHU3RLQW
3URJUDPDomR
5HGHV
6HJXUDQoD
:LQGRZVH/LQX[
:RUG
&8562621/,1(
%DQFRVGH'DGRVH$FFHVV
&DUUHLUDH7UDEDOKR
&RPSXWDomR*UiILFDH(GLWRUDomR
&ULDomRGH/RMDV9LUWXDLV
KWWSMXOLREDWWLVWLFRPEUDUWLJRVOLYURDFFYEDFDSLWXORDVS
-XOLR%DWWLVWL
&ULDomRGH6LWHVH:HEGHVLJQ
([FHO
)RUPDo}HV&RPSOHWDV
*HUHQFLDPHQWRGH3URMHWRV
+DUGZDUH0RQWDJHPH0DQXWHQomR
3URJUDPDomR
5HGHV
6$3
:LQGRZVH/LQX[
:RUG
&217(Ò'2*5$78,72
/LYURVJUDWXLWRVHDUWLJRV
7XWRULDLV
$63
$631(7
$FFHVV%iVLFR
$FFHVV$YDQoDGR
([FHO%iVLFROLo}HV
([FHO$YDQoDGROLo}HV
64/6HUYHU
:LQGRZV
:LQGRZV;3
:LQGRZV6HUYHU
:LQGRZV6HUYHU
9RFrHVWiHP3ULQFLSDO¾$UWLJRV¾/LYURDFFYED¾&DStWXOR
Quer receber novidades e ebooks gratuitos?
¾¾¾
,QIRUPHVHXPHOKRUHPDLO 4XHUR5HFHEHU
6HOHFLRQHDFDWHJRULDGHVHMDGD
Conheça o Júlio Battisti
-~OLR%DWWLVWLWHPPDLVGHOLYURVSXEOLFDGRVGH]HQDVGHHERRNVHpFHUWLILFDGR
0LFURVRIW
6$,%$0$,6
KWWSMXOLREDWWLVWLFRPEUDUWLJRVOLYURDFFYEDFDSLWXORDVS
-XOLR%DWWLVWL
Ganhe o ebook a Seguir
:LQGRZV%iVLFR
476 páginas
6HXPHOKRUHPDLO
Curta Nossa Fanpage
&XUWLU SHVVRDVFXUWLUDPLVVR
&DGDVWUDUVHSDUDYHUGRTXH
VHXVDPLJRVJRVWDP
Loja Virtual do Site
/LYURV
9tGHR$XODV
&XUVRV2QOLQH
(ERRNV
Livros do Julio Battisti
KWWSMXOLREDWWLVWLFRPEUDUWLJRVOLYURDFFYEDFDSLWXORDVS
-XOLR%DWWLVWL
KWWSMXOLREDWWLVWLFRPEUDUWLJRVOLYURDFFYEDFDSLWXORDVS
-XOLR%DWWLVWL
KWWSMXOLREDWWLVWLFRPEUDUWLJRVOLYURDFFYEDFDSLWXORDVS
-XOLR%DWWLVWL
KWWSMXOLREDWWLVWLFRPEUDUWLJRVOLYURDFFYEDFDSLWXORDVS
-XOLR%DWWLVWL
Criando Relatórios de Impacto no MS Access
Autor: Robert Friedrick Martim
LIÇÕES DESTE MÓDULO SELECIONE UMA LIÇÃO:
Lição 28 de 50 Relatórios com VBA, Macros e Formulários Auxiliares
Chegou a hora de adicionarmos alguns extras em nossos relatórios utilizando VBA, macros e Formulários
Auxiliares.
Tecnicamente, o que escrevemos em VBA é uma macro, porém o que escrevemos na macro não é “VBA”.
O motivo para isso é que macros no Access já “vem de fábrica” e tudo que precisamos fazer é escolher o
tipo de comando que desejamos utilizar e aplicálos ao nosso problema.
Podemos também criar condições em macros para que as mesmas somente sejam executadas quando um
critério é verdadeiro (ou falso). Veremos diversos exemplos de aplicabilidade de macros e VBA a seguir.
Utilizando macros para abrir e imprimir relatórios
Macros em Access representam uma classe distinta de objetos e não estão relacionados diretamente com o
VBA. Macros apresentam instruções prontas as quais podem ser utilizadas para efetuar as mais diversas
ações.
Neste exemplo, veremos como abrir e imprimir um relatório utilizando macros. Siga os passos abaixo para
completar o exercício:
Clique no objeto Macros;
Clique em Novo;
Na coluna Ação procure pela ação AbrirRelatório;
Ao selecionar esta ação, na parte inferior da ação da macro aparecerá diversas opções:
Nome do relatório à Permite escolher o nome do relatório que deve ser aberto;
Exibir à Permite escolher o tipo de exibição. Neste caso, queremos a exibição Imprimir;
Nome do filtro à Permite determinar o nome de uma consulta ou filtro utilizado durante a
abertura/impressão do relatório;
Condições onde à Permite determinar uma instrução SQL utilizando a cláusula WHERE (ONDE) que
permite filtrar os dados no processo de abertura e impressão, por exemplo;
Modo janela à Permite definir o modo da janela. Escolha entre os vários tipos de modo disponível. Caso
tenha alguma dúvida, pressione F1 durante a escolha.
A Figura 7‑1 mostra os passos acima visualmente:
KWWSMXOLREDWWLVWLFRPEUDUWLJRVOLYURDFFYEDFDSLWXORDVS
-XOLR%DWWLVWL
Figura 7‑1 Definindo as propriedades da macro
Utilizando macros com condicionalidade
Como vimos no tópico anterior, é possível adicionar condicionalidade no processo de abertura e impressão
em uma macro. Você pode definir um filtro, que funcionará como a condicionalidade, ou você pode utilizar
uma instrução SQL.
Neste caso, iremos inserir uma condicionalidade na opção Condição Onde. A condição a ser inserida é:
CódigoDoCliente]=[Tópico7_2]![IDCliente].
Note que o campo IDCliente não existe. Portanto, quando o usuário tentar acessar tal relatório para
impressão ele será solicitado a inserir o Código do Cliente para que o relatório possa ser impresso:
Figura 7‑2 Inserindo o parâmetro na condição WHERE
Agora, supondo que o relatório não possua dado algum para o ID digitado, o relatório ainda assim será
impresso. Para evitar tal erro, você pode adicionar o seguinte código no relatório para cancelar a operação
caso não exista dado algum para impressão:
Private Sub Report_NoData(Cancel As Integer)
Cancel = 1
MsgBox "Não há nenhuma informação para impressão!", _
vbCritical, "Sem dados..."
End Sub
Zebrando o relatório com VBA
Quando possuímos um relatório muito extenso, fica relativamente difícil ler cada linha do relatório e
associar os dados de uma mesma linha. Observe a figura abaixo:
KWWSMXOLREDWWLVWLFRPEUDUWLJRVOLYURDFFYEDFDSLWXORDVS
-XOLR%DWWLVWL
Figura 7‑3 Relatório não zebrado
O relatório acima representa despesas em uma conta pessoal (este BD completo não está diponível com
este curso, somente uma tabela e formulário para exemplo) em determinado período. Embora não exista
nada de errado com ele, note que a leitura pode ser melhorada se adicionarmos um zebramento no
relatório:
Figura 7‑4 Detalhes do relatório zebrados
Com o zebramento de cada linha na área de detalhes a leitura fica bem mais simples e organizada. Para
zebrar a área de detalhes, utilize o código abaixo:
' Variável global para contagem da linha atual
Private linCont As Long
Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer)
' Conta o número da linha e adiciona 1 durante o
' processo (evento) de formatação dos detalhes do relatório
linCont = linCont + 1
' Determina o resto da divisão do número da linha atual
' Se for zero, a cor de fundo é branca.
If linCont Mod 2 = 0 Then
Me.Detail.BackColor = 16777215
' Caso contrário, a cor é cinza.
Else
Me.Detail.BackColor = 15263976
End If
End Sub
KWWSMXOLREDWWLVWLFRPEUDUWLJRVOLYURDFFYEDFDSLWXORDVS
-XOLR%DWWLVWL
O que o leitor deve ter em mente diz respeito ao tamanho do conjunto de registros. Caso este seja muito
grande o tempo de processamento pode ser considerável.
Filtros por intervalo de datas
Um cenário comum é onde precisamos de um relatório que nos traga informações relativas a algum
intervalo de datas qualquer. Por exemplo, poderíamos querer um relatório para o ano fiscal e teríamos que
filtrálo para somente mostrar as informações para o Intervalo determinado.
Para resolvermos tal problema, precisaremos de um formulário de suporte o qual irá filtrar as informações
que desejamos.
Este formulário trabalhará em conjunto com o relatório. Desta forma, quebro abaixo em duas seções os
passos que devemos seguir para completar o exercício.
Criando o formulário de suporte
A nossa primeira tarefa é criar o formulário de suporte. Para tanto, siga os passos abaixo (utilizando os
dados do BD deste tópico):
Na janela do banco de dados clique em Formulários e em seguida em Design;
No modo de design adicione os seguintes controles:
Duas caixas de texto (nomeieas como txtDataInicial e txtDataFinal respectivamente);
Um botão de comando (nomeieo como cmdVisualizar e modifique o seu rótulo para Visualizar)
Modifique a máscara de entrada para as caixas de texto para aceitar datas abreviadas. Para tanto,
selecione o controle e acesse suas propriedades. Sob a guia Dados selecione a opção Máscara de
entrada a qual deve ser 99/99/00;0;_ (voce pode abrir o assistente de máscaras e criar sua
própria máscara ou selecionar uma da lista)
Figura 7‑5 Máscara de entrada para datas abreviadas
Neste ponto, teremos um formulário como segue abaixo:
Figura 7‑6 Layout do formulário de apoio
KWWSMXOLREDWWLVWLFRPEUDUWLJRVOLYURDFFYEDFDSLWXORDVS
-XOLR%DWWLVWL
Feito isso, selecione o botão de comando Visualizar e na guia Evento adicione um procedimento de
evento para o evento Ao Clicar utilizando o seguinte código (explicações acompanham o código):
Option Explicit
Private Sub cmdVisualizar_Click()
' Verifica se os campos para data inicial e final
' forma preenchidos antes de continuar. Caso ambos ou um esteja vazio, entao
If IsNull([txtDataInicial]) Or IsNull([txtDataFinal]) Then
' Mostrar mensagem de que ambos os campos devem ser preenchido
MsgBox "Você deve inserir datas de início e de fim.", vbExclamation
' Ir para o controle de data inicial
DoCmd.GoToControl "txtDataInicial"
Else
' Caso ambos campos tenha sido preenchidos, mas a data inicial
' seja maior do que a data final...
If [txtDataInicial] > [txtDataFinal] Then
' ... mostrar mensagem avisando do erro...
MsgBox "Data final deve ser maior do que a data inicial.", _
vbExclamation
' ... e ir para o controle de data inicial
DoCmd.GoToControl "txtDataInicial"
Else
' Se condicao for falsa, entao ocultar o formulário.
Me.Visible = False
End If
End If
End Sub
Isso é tudo que precisamos para o nosso formulário. O próximo passo requer a criação de nosso relatório o
qual discuto a seguir.
Criando o relatório, instrução SQL e VBA do relatório
Com o formulário fora do caminho, precisamos agora criar o nosso relatório. Utilizando o pequeno banco de
dados deste tópico, utilize o assistente de relatórios para criar um relatório contendo todos os campos da
tabela. Aqui, nós ainda não estamos interessados em filtragem.
Uma vez que o leitor tenha criado o relatório, abra a caixa de propriedades para o relatório onde
modificaremos a fonte de registros. A fonte de registro conterá o nome da tabela. O que desejamos fazer é
construir a instrução SQL para filtrar os registros requeridos.
Siga os passos abaixo:
Abra a caixa de propriedades e selecione Relatório na caixa de seleção;
Selecione a guia Dados e clique no botão de edição de consulta para abrir a janela do construtor de
consulta;
Selecione todos os campos da tabela de origem de dados, conforme mostra a figura:
KWWSMXOLREDWWLVWLFRPEUDUWLJRVOLYURDFFYEDFDSLWXORDVS
-XOLR%DWWLVWL
Figura 7‑7 Construtor de consultas
Para o campo DataDaTransação, adicione o seguinte critério na linha de critérios: >=[forms]!
[frmDatas]![txtDataInicial] E <=[Forms]![frmDatas]![txtDataFinal];
Finalmente, dê os toques finais no seu relatório conforme o gosto.
A primeira parte de nossa tarefa está pronta. O próximo passo requer a escrita do VBA.
Lembra que no código para o formulário nós o deixávamos invisível quando ele continha datas válidas? Pois
bem, a primeira coisa que precisamos fazer é criar uma função em VBA para determinar se o formulário
está ou não aberto.
Adicione um módulo comum onde o código abaixo deve ser entrado:
Option Explicit
Function EstáAberto(ByVal strNomeForm As String) As Boolean
' Constantes para os estados do formulário (fechado ou
' em "modo de design"). Note que as constantes não são
' necessárias. Elas apenas facilitam a leitura do código.
Const constFrmFechado = 0
Const constFrmDesign = 0
' Checa para saber se o formulário está aberto. Se sim...
If SysCmd(acSysCmdGetObjectState, acForm, strNomeForm) <> _
constFrmFechado Then
' Checar para saber não está aberto em modo de design.
' Se não estiver em modo de design, então...
If Forms(strNomeForm).CurrentView <> constFrmDesign Then
' formulário está aberto
EstáAberto = True
End If
End If
End Function
Com a função pronta, abra o VBE do relatório onde devemos inserir os seguintes procedimentos:
Private Sub Report_Close()
' Ao fechar o relatório, fechar o formulário também
DoCmd.Close acForm, "frmDatas"
End Sub
Private Sub Report_Open(Cancel As Integer)
' Abre o formulário e determina o seu título, pois o mesmo
' formulário pode ser usado por qualquer relatório
KWWSMXOLREDWWLVWLFRPEUDUWLJRVOLYURDFFYEDFDSLWXORDVS
-XOLR%DWWLVWL
' que necessite de filtro por datas.
DoCmd.OpenForm "frmDatas", , , , , _
acDialog, "Transações por datas"
' Se o formulário estiver fechado, cancelar operação
If Not EstáAberto("frmDatas") Then
Cancel = True
End If
End Sub
O leitor pode agora experimentar o trabalho feito. Abra o relatório através de um duploclique e o formulário
de apoio será aberto. Digite a data inicial e a data final e clique no botão de comando para visualização do
relatório.
Caso o período selecionado não contenha dados, a mensagem será mostrada e o relatório será cancelado.
Se houver dados, o relatório filtrará o período digitado.
Apenas como sugestão, o leitor pode inserir um rótulo o qual lê as datas do formulário e imprime no
relatório o período selecionado. Este fica como exercício para o leitor.
Filtros por contas
O exemplo anterior filtra por datas, porém poderíamos ter um cenário onde além de filtrarmos por datas
nós desejamos filtrar por conta também. Filtros como estes, embora aparentemente simples, causam
bastante confusão, pois geralmente a lista de contas é a partir de uma caixa de combinação.
Infelizmente, ao passarmos o parâmetro de filtro de uma caixa de combinação para a consulta o mesmo
não é passado, causando um erro no filtro do relatório.
Continuarei a partir do exemplo anterior, porém uma nova tabela é adicionada ao projeto contendo
algumas contas as quais serão relacionadas à tabela existente.
A primeira coisa que precisamos fazer é adicionar os novos controles ao formulário:
Figura 7‑8 Design do formulário
Agora, possuimos uma caixa de combinação e uma caixa de texto extra (no topo direito do formulário).
Modifique a propriedade Visível para Não desta caixa de texto, pois não desejamos que ela fique visível ao
usuário. Ela é apenas usada para armazer o número de identificação da conta.
O próximo passo requer a entrada do seguinte código para o evento Change da caixa de combinação:
Private Sub cboIDConta_Change()
Me.txtIDConta = Me.cboIDConta.Value
End Sub
O código acima simplesmente passa o valor da seleção da caixa de combinação para a caixa de texto.
Feito isso, precisamos adaptar o código original para o botão de visualização como segue:
Private Sub cmdVisualizar_Click()
' Verifica se os campos para data inicial e final
' forma preenchidos antes de continuar. Caso ambos ou um esteja vazio, entao
KWWSMXOLREDWWLVWLFRPEUDUWLJRVOLYURDFFYEDFDSLWXORDVS
-XOLR%DWWLVWL
If IsNull([txtDataInicial]) Or IsNull([txtDataFinal]) Then
' Mostrar mensagem de que as datas precisam ser preenchidas
' e uma conta selecionada.
MsgBox "Você deve inserir datas de início e de fim " _
& "e escolher uma conta válida.", vbExclamation
' Ir para o controle de data inicial
DoCmd.GoToControl "txtDataInicial"
Else
' Caso ambos campos tenha sido preenchidos, mas a data inicial
' seja maior do que a data final...
If [txtDataInicial] > [txtDataFinal] Then
' ... mostrar mensagem avisando do erro...
MsgBox "Data final deve ser maior do que a data inicial.", _
vbExclamation
' ... e ir para o controle de data inicial
DoCmd.GoToControl "txtDataInicial"
Else
' Se condicao for falsa, entao ocultar o formulário.
Me.Visible = False
End If
End If
End Sub
Agora que possuimos estes dois pontos prontos, nós precisamos adaptar o nosso relatório para incluir em
nossa consulta original o campo de identificação da conta e o nome da conta.
Abra o relatório em modo de design e efetue as seguintes modificações:
Adicione uma caixa de texto no cabeçalho do relatório. Nesta caixa de texto, adicione a seguinte
fórmula: ="Transações para a conta " & [NomeConta] & " para o período de " &
Forms!frmDatas!txtDataInicial & " a " & Forms!frmDatas!txtDataFinal & ".". O seu
cabeçalho deve ser algo como segue:
Figura 7‑9 Cabeçalho do novo relatório
Modifique a fonte de registros para incluir os dois novos campos (IDConte e NomeConta);
Adicione o critério: [forms]![frmDatas]![txtIDConta] ao campo IDConta na consulta.
KWWSMXOLREDWWLVWLFRPEUDUWLJRVOLYURDFFYEDFDSLWXORDVS
-XOLR%DWWLVWL
Figura 7‑10 Redefinindo a consulta
O leitor pode agora executar o relatórios e abrílo filtrando por data e número da conta.
4XHU'RPLQDURV5HFXUVRV$YDQoDGRVGR$FFHVV
"
Apre.nda com Júlio Battisti: "Access 2010
Avançado, Macros e Programação VBA
Através de Exemplos Práticos" 828 Páginas
-XQWRFRPROLYURYRFr5HFHEH9tGHR$XODVGH%{QXVKRUDV
Único Livro Sobre Access 2010 Avançado, Macros e
Programação VBA que Você irá Precisar. Será sua Fonte de
Referência.
Cli.que Aqui Para Baixar um Trecho Demonstração do Livro
É com alegria que Comunico o lançamento do meu 35º
Livro.
Eu garanto que você irá aprender os Recursos
Avançados do Access 2010, Inclusive Macros e
Programação VBA.
Será seu Livro de Referência, ao lado do seu
Computador.
Exemplos Práticos, Passo a Passo, no estilo de
Estudo Dirigido.
Todos os Exemplos Passo a Passo e com Telas
Ilustrativas.
KWWSMXOLREDWWLVWLFRPEUDUWLJRVOLYURDFFYEDFDSLWXORDVS
-XOLR%DWWLVWL
Muito Fácil de Acompanhar e de Praticar. De Fácil
Aprendizado.
Dou suporte, via email, a dúvidas sobre os Exemplos
do livro.
LIÇÕES DESTE MÓDULO SELECIONE UMA LIÇÃO:
« Anterior Δ Página principal ¤ Índice Próxima »
* Você pode baixar (fazer download) do conteúdo completo deste curso,
em formato PDF, com 38 páginas, comprando o seguinte ebook:
VBA NO ACCESS 2003
LIVROS INDICADOS DE ACCESS:
KWWSMXOLREDWWLVWLFRPEUDUWLJRVOLYURDFFYEDFDSLWXORDVS
-XOLR%DWWLVWL
Gostou deste artigo?
Ajude a divulgálo! Indiqueo para seus amigos.
Comente sobre este artigo, use o campo de comentários logo
abaixo.
Compartilhe através do Twitter, Facebook, Google+ ou Pinterest!
&XUWLU
KWWSMXOLREDWWLVWLFRPEUDUWLJRVOLYURDFFYEDFDSLWXORDVS
-XOLR%DWWLVWL
Dúvidas?
8WLOL]HDiUHDGHFRPHQWiULRVDVHJXLU
0HDMXGHDGLYXOJDUHVWHFRQWH~GRJUDWXLWR
8VHDiUHDGHFRPHQWiULRVDVHJXLUGLJDRTXHDFKRXGHVWDOLomRRTXHHVWi
DFKDQGRGRFXUVR
&RPSDUWLOKHQR)DFHERRNQR*RRJOH7ZLWWHUH3LQWHUHVW
,QGLTXHSDUDVHXVDPLJRV4XDQWRPDLVFRPHQWiULRVIRUHPIHLWRVPDLVOLo}HV
VHUmRSXEOLFDGDV
$GLFLRQDUXPFRPHQWiULR
)DFHERRN&RPPHQWV3OXJLQ
Quer receber novidades e ebooks gratuitos?
¾¾¾
,QIRUPHVHXPHOKRUHPDLO 4XHUR5HFHEHU
6HOHFLRQHDFDWHJRULDGHVHMDGD
VídeoAulas
$FFHVV
([FHO
3URJUDPDomR
:LQGRZV/LQX[
5HGHV
KWWSMXOLREDWWLVWLFRPEUDUWLJRVOLYURDFFYEDFDSLWXORDVS
-XOLR%DWWLVWL
7RGDVDVFDWHJRULDV
Ebooks
$FFHVV
([FHO
3URJUDPDomR
:LQGRZV/LQX[
5HGHV
7RGDVDVFDWHJRULDV
Livros
$GPLQLVWUDomR
([FHO
3URJUDPDomR
:LQGRZV/LQX[
5HGHV
7RGDVDVFDWHJRULDV
Cursos Online
%DQFRGH'DGRV
&DUUHLUD
&ULDomR:HE
([FHO3URMHWRV
)RUPDomR
7RGDVDVFDWHJRULDV
Conteúdo Gratuito
$UWLJRVH7XWRULDLV
$63
$631(7
$FFHVV%iVLFR
$FFHVV$YDQoDGR
([FHO%iVLFROLo}HV
([FHO$YDQoDGROLo}HV
64/6HUYHU
:LQGRZV
:LQGRZV;3
:LQGRZV6HUYHU
:LQGRZV6HUYHU
Novidades e Ebooks grátis
)LTXHSRUGHQWURGDVQRYLGDGHVODQoDPHQWRGHOLYURVFXUVRVHERRNVHYtGHRDXODVHUHFHEDRIHUWDVGH
HERRNVHYtGHRDXODVJUDWXLWDVSDUDGRZQORDG
6HXPHOKRUHPDLO
KWWSMXOLREDWWLVWLFRPEUDUWLJRVOLYURDFFYEDFDSLWXORDVS
-XOLR%DWWLVWL
4XHURUHFHEHU
Institucional
4XHPVRPRV
*DUDQWLDGH(QWUHJD
)RUPDVGH3DJDPHQWR
&RQWDWR
2$XWRU
Endereço
-~OLR%DWWLVWL/LYURVH&XUVRV/WGD
&13-
5XD9HUHDGRU,YR&OiXGLR:HLJHO8QLYHUVLWiULR
6DQWD&UX]GR6XO56
&(3
Atendimento:ZHEPDVWHU#MXOLREDWWLVWLFRPEU
7RGRVRVGLUHLWRVUHVHUYDGRV-~OLR%DWWLVWL
[CURSO ONLINE:] WINDOWS SERVER 2008 E ACTIVE DIRECTORY CURSO
COMPLETO
COM JULIO BATTISTI ÚLTIMAS VAGAS COM 50% DE DESCONTO CLIQUE
AQUI
KWWSMXOLREDWWLVWLFRPEUDUWLJRVOLYURDFFYEDFDSLWXORDVS