Beruflich Dokumente
Kultur Dokumente
Metodologias
.NET
Forms
Access Bsico
Capa
Conhea o novo (mesmo) Excel
Conhea as principais novidades na estrutura e na
interface do Excel 2007. P. 28
NESTA EDIO
04 Metodologias
14 Access Bsico
23 Access Avanado
28 Office Bsico
SQL Server
51 SQL Server
59 Frutos do Suporte
locking
Nesta matria so discutidos os principais problemas
Access Avanado
Access ListBar
Monitor
Server. P. 55
Frutos do Suporte
Aprenda mais com as dvidas selecionadas pelo nosso
Office Bsico
Quer ajudar o meio ambiente? Use sua
impressora virtual!
Impressora virtual: uma simples atitude, uma grande
diferena. P. 35
suporte tcnico. P. 59
41 .NET
Upgrade de verdade
Internet, .NET, Visual Basic, SQL Server, Access e Office.
Qual a melhor verso do Office? Esta pergunta tem enorme potencial para gerar discusses
apaixonadas, capazes de competir com futebol e outros temas polmicos. As verses 2000 e 2003
so as mais utilizadas hoje, mas ainda h quem utilize o Office 97. Se transportarmos a pergunta para
cada aplicativo do pacote isoladamente, a divergncia de opinies tende a aumentar. Para dar um
exemplo, h quem defenda com bons argumentos que o Access 2 foi at hoje o melhor.
No toa que a prpria Microsoft reconhea na verso anterior de cada Office seu maior
concorrente.
2007 est chegando e com ele a nova verso do Microsoft Office. Como aconteceu em lanamentos
anteriores, deve levar um bom tempo para a grande maioria dos usurios migrarem. Desenvolvedores
e analistas de suporte, acompanhados por entusiastas e apaixonados por Tecnologia, certamente
sero os primeiros.
Tenho um sentimento de que, ao contrrio de outras vezes, esta verso ser percebida como um
upgrade de verdade, com mudanas significativas, a comear pelo visual de sua nova interface grfica.
H quem diga que tantas mudanas podem atrapalhar. Talvez. Mas uma coisa certa: cedo ou tarde o
Mercado vai adotar o novo Office. Se voc ainda no comeou a avali-lo, este pode ser um timo
momento. Convido voc para a leitura da matria de capa sobre o novo Excel 2007.
Nesta edio
Alm das dicas escritas por Luiz Cludio C.V da Rocha, a sesso Access traz mais trs matrias
abordando a integrao com o Outlook, Recursos XML e ListBar. Nesta ltima, Paulo Sarraino mostra
como desenvolver passo a passo uma interface bem interessante para navegao s com recursos do
prprio Access. Mais sobre Access pode ser encontrado em Frutos do Suporte, com perguntas
Editor
Jacques Zetune
Coordenao e reviso geral
Julie Annie Dantas
Reviso tcnica
Fernando Pessoa e Ricardo Pessoa
Reviso Gramatical
Tatiana Meneses
Colaboraram nesta edio
Adriano Marques Pereira Brazo, Alex Prado de Carvalho,
Fernando Pessoa, Frank Rice, Gabriel Pitgoras Silva e Brenner,
Joo Talles Dantas Batista, Keidy Marcelo Sakamoto,
Luiz Cludio C. V. da Rocha, Maurcio Martins e
Paulo Sergio Sarraino.
Administrativo Financeiro
Carlos Burd
Jornalista Responsvel
Renato Vaisbih - MTB 23605
Diagramao
Carlos Relva
Capa
Patricia Candido
Alterao de dados
Fone: (11) 2168.0688
ou e-mail para:
info@forumaccess.com.br
A sesso SQL Server mostra como resolver problemas de Locking e como criar um Custom Monitor
em duas matrias assinadas por Adriano Brazo. Gabriel Brenner mostra passo a passo como
Anncios
Fone: (11) 2168.0688
ou e-mail para: info@forumaccess.com.br
Jacques Zetune
editor@forumaccess.com.br
Opinies
Fax: (11) 2168.0688. a/c:Opinio
ou e-mail para: info@forumaccess.com.br
Fale com o editor
Fone/fax: (11) 2168.0688. a/c:Editor
ou e-mail para: editor@forumaccess.com.br
Inscrio em eventos
Site: www.forumaccess.com.br ou envie e-mail para:
eventos@forumaccess.com.br
Exemplares avulsos e produtos FrumAccess
Fone: (11) 2168.0688
ou envie e-mail para: vendas@forumaccess.com.br
Suporte Tcnico para
Site: www.forumaccess.com.br/suporte
Grupos de Discusso
Acesse www.forumaccess.com.br
Impresso e Fotolito
Multiformas
Fone (11) 2188 1111
FrumAccess uma publicao bimestral da DJB
Informtica, Publicao e Comrcio Ltda. info@forumacess.
com.br, Caixa Postal 26.001 CEP 05599-970 - So Paulo - SP.
Metodologias
vida em meados de 1996 por Kent Beck e tem sido utilizada com
sucesso em equipes de desenvolvimento de software at hoje.
Essa metodologia foi criada pensando nos problemas que muitas equipes de desenvolvimento encontram ao lidar com clientes que no tm certeza do que esperam do seu produto. A XP
permite que a especificao dos requisitos do software seja alterada freqentemente, de forma a no prejudicar o rendimento
da equipe. Isso se d por meio da participao do cliente no
processo de desenvolvimento.
Para tanto, a equipe precisa passar por uma mudana de cultura. Todos, desde o programador at o cliente, precisam entender que a forma de trabalho ser baseada em quatro princpios
bsicos, sendo eles:
INTRODUO
Neste artigo apresentaremos uma metodologia de trabalho denominada Extreme Programming ou simplesmente XP, que tem como
objetivo auxiliar pequenas e mdias equipes de desenvolvimento
de software em projetos onde os requisitos encontram-se pouco
definidos ou necessitando de constantes alteraes.
O QUE XP?
A Extreme Programming uma metodologia gil para desenvolvimento de software em equipes pequenas e mdias, que visa
tornar a programao mais simples e eficiente. Ela foi desenvol-
WWW.FORUMACCESS.COM.BR
Metodologias
Metodologias
Comunicao
Deve existir a toda hora. A burocracia para comunicao na equipe deve ser a mnima possvel. O cliente no participa com a
equipe, ele participa na equipe.
Simplicidade
Apenas o necessrio deve ser feito, sempre com um cdigo limpo, da forma mais simples possvel e gerando o mnimo de documentao.
Coragem
Todo problema encontrado deve ser reportado de imediato. Se
houver necessidade de refazer um cdigo, ele deve ser feito o
quanto antes. A coragem necessria em diversas situaes,
desde uma conversa desagradvel para o cliente at uma pausa
para descanso durante a programao. Fazer sempre a coisa
certa, mesmo que isso cause um desgaste momentneo.
FeedBack
Ocorre no momento em que o cliente comea a receber pequenos pacotes do software contendo determinadas funcionalidades. Com isso possvel determinar se os requisitos esto seguindo um caminho correto ou precisam de atualizaes.
Todo software pode ter seus requisitos alterados ao longo do
tempo e a equipe deve estar preparada para isso. Se uma atualizao nos requisitos tornar o prazo de concluso do projeto
impossvel de ser atendido, o cliente saber de imediato, porque agora ele estar envolvido diretamente com as atividades
previstas no cronograma. Com isso, os prazos podem aumentar, porm a qualidade nunca sair prejudicada.
AS TCNICAS DA XP
Kent Beck sugeriu que uma srie de tcnicas fossem adotadas
pelas equipes de desenvolvimento de forma a disciplin-las a
tornarem-se menos dispersivas e mais produtivas. A seguir encontra-se um breve resumo sobre algumas dessas tcnicas.
Programao em pares
Provavelmente essa a
tcnica mais polmica da
XP, trata-se de colocar dois
programadores em um s
computador. Isso nos remete quelas escolas de
informtica, que, visando
entupir as classes com alunos, colocam duas pessoas estudando em cada computador, mas essa uma experincia bem diferente.
A programao em pares funciona da seguinte forma: dois programadores sentam-se frente de um micro, um deles ser o
condutor e o outro ser o observador. O condutor aquele
que far a codificao, ele dominar o teclado e o mouse por
WWW.FORUMACCESS.COM.BR
Metodologias
licitou como requisito do produto. Funcionalidades extras para
impressionar o cliente devem ficar para o fim do projeto.
Metfora do sistema
Deve-se criar uma metfora para lidar com o sistema. O seu
software pode ser como uma linha de produo, onde a cada
tela uma informao acrescida de outras informaes. Pode
ser como um correio, onde a informao precisa passar por diversos setores at chegar ao destinatrio. A metfora do sistema pode ser definida pela prpria equipe, seu objetivo dar
nomes mais comuns aos objetos que manipulamos na programao e com isso facilitar o seu entendimento.
Em uma metfora de correio, por exemplo, ao invs de termos
os objetos setor1, arquivo_resumo e setor2, podemos ter: remetente, mensagem e destinatrio. No incio pode parecer algo
banal, mas muito mais simples lidar com o sistema desta forma, pois mesmo uma pessoa leiga no assunto pode intuir as
funcionalidades de cada pedao do software, facilitando a comunicao entre os membros da equipe.
Cliente est sempre disponvel
De acordo com Kent Beck, XP uma disciplina para desenvolvimento de software com a mnima documentao e a mxima
comunicao. Por isso o cliente no participa do projeto somente como um auxiliar. O cliente deve ser parte da equipe, se
possvel at participando das reunies pessoalmente.
obvia a dificuldade em convencer um cliente a participar fulltime do projeto de seu software, mas existe uma srie de adaptaes que podem ser feitas visando possibilitar a comunicao necessria equipe. Isso pode ser feito por meio da nomeao de um representante do cliente. Esse representante deve
ser uma pessoa que sabe exatamente do que o cliente precisa
ou ento que tem disponibilidade total para comunicar-se com
o cliente a fim de tirar alguma dvida.
CONCLUSO
A XP uma metodologia que trouxe poucas inovaes. Na
verdade, a principal inovao que ela trs a de unir diversas metodologias de programao gil pr-existentes com o
objetivo de agregar qualidade e produtividade a uma equipe
de desenvolvimento. Outra concluso importante a respeito
da XP que ela pode ser utilizada em vrios tipos de projeto
e no s nos que dizem respeito a desenvolvimento de
software.
Para se aprofundar
Descrio
GoldOwner
GoalDonor
www.xispe.com.br
www.extremeprogramming.org
Manager
www.pairprogramming.com
Acceptance Tester
Tracker
obtidos.
automao bancria.
Coach
FRUMACCESS
Metodologias
COM O AUMENTO DO NVEL DE QUALIDADE DOS SERVIOS DE TI DAS EMPRESAS E DA COMPLEXIDADE DAS
TAREFAS, TORNA-SE CADA VEZ MAIS COMPLEXA A GESTO E RASTREABILIDADE DESSES SERVIOS E TAMBM
SUA MANUTENO. A ADOO DE METODOLOGIAS QUE
VISAM APOIAR ESSA GESTO TEM SIDO UMA SADA
MUITO PROCURADA, MAS AINDA NO SUFICIENTEMENTE MADURA NO MERCADO BRASILEIRO. SEGUNDO ESTATSTICAS RECENTES, APENAS GRANDES EMPRESAS
INVESTEM REALMENTE VALORES SIGNIFICATIVOS EM
P&D E EM ESFOROS PARA A UTILIZAO DESSAS METODOLOGIAS. PORM,
O SUCESSO ALCANADO POR ESSAS
METODOLOGIAS ATRAI A ATENO DE
TODOS AO SEU REDOR DE COMO TIRAR
PROVEITO DENTRO DA REALIDADE DE
CADA UM. ESTE ARTIGO APRESENTA
UMA DESSAS METODOLOGIAS, O ITIL
INFORMATION TECNOLOGY INFRASTRUCTURE LIBRARY, AINDA NO TO
CONHECIDO, MAS J MUITO ADMIRADO
PELOS RESULTADOS QUE PODE TRAZER
COM SUA ADOO.
O QUE O ITIL
O ITIL, cuja sigla significa IT Information Infrastructure Library,
uma biblioteca criada pelo governo britnico nos anos 80 (atualmente sob custdia da OGC Office of Government Commerce)
e composta por um conjunto de recomendaes e melhores prticas para operaes e gerenciamento de servios de TI. Ele proporciona uma abordagem efetiva e eficiente no uso de sistemas
de informao, alm de fomentar o alinhamento estratgico com
os negcios.
O ITIL um framework aberto, ou seja, qualquer empresa
pode usar livremente a sua biblioteca (ou parte dela), o que
tem contribudo para o aumento exponencial da utilizao
de seus processos. O foco da metodologia mostrar o que
fazer e no como fazer, dando nfase aos objetivos, ativi-
10
Desses, os dois primeiros livros citados acima formam os pilares fundamentais da gesto de servios de TI, que so:
Service Support (o livro azul composto por cinco disciplinas
e uma funo).
Service Delivery (o livro vermelho com tambm cinco disciplinas).
Esses livros definem disciplinas fortemente relacionadas, que
por sua vez esto dividas em processos, conforme mostrado
no esquema a seguir:
WWW.FORUMACCESS.COM.BR
Metodologias
partes afetadas, buscando entender e controlar seus impactos para a intra-estrutura de TI e os negcios da organizao.
Permite tambm avaliar os prazos e riscos inerentes s mudanas propostas.
Release Management
Responsvel por planejar e gerenciar recursos e meios para testar, liberar, distribuir e implantar mudanas (ou atualizaes) em ambiente de operao/produo de forma sistmica e controlada.
Configuration Management
Assegura que apenas componentes
mapeados e autorizados (tambm chamados de Itens de Configurao - IC:
softwares, hardwares, documentos, processos, procedimentos, etc.) sejam usados no ambiente de TI, e que todas as
mudanas nestes componentes sejam
gravadas e rastreadas durante todo o seu
ciclo de vida. Estes dados ficam armazenados em uma estrutura chamada CMDB
(Configuration Management Data Base).
SERVICE DELIVERY
Service Support
Service Desk
Distingui-se como uma funo e no uma disciplina. Atua
como um ponto focal para o atendimento a usurios, clientes
e pessoal interno da organizao. Caminha pela estrutura
organizacional para prover um contato mais centralizado com
a rea de TI.
Incident Management
Responsvel por restaurar e normalizar a operao de um servio ou produto com o menor tempo possvel, a fim de
minimizar os impactos sobre a operao dos negcios e conseguir os melhores nveis de qualidade e disponibilidade de
servio possvel.
Problem Management
Visa minimizar o impacto e reincidncia de problemas
gerenciais sobre os negcios de uma organizao atravs da
investigao, diagnstico e soluo de problemas. D-se atravs da preveno pr-ativa de incidentes e auto-aprendizado
(base de dados de erros conhecidos, solues, tempos de soluo, etc.).
Change Management
Garante o rastreamento de todas as mudanas e respectivas
Availability Management
Realiza o desenho, implementao, medio e gerenciamento
da disponibilidade da infra-estrutura de TI para garantir que
os requisitos de disponibilidade dos negcios sejam constantemente satisfeitos.
IT Service Continuity Management
Proporciona mecanismos pra garantir que qualquer servio
de TI seja capaz de sobreviver e continuar a prover valor para
seus clientes e usurios, mesmo em situaes com restrio
ou em que as solues de disponibilidade normais falhem.
Capacity Management
Planeja, justifica e gerencia nveis apropriados de recursos,
negcios e/ou servios necessrios para uma dada soluo
de TI, evitando e controlando baixas ou excessos.
Financial Management
Administrar de forma slida e concisa os recursos monetrios
FRUMACCESS
11
Metodologias
Metodologias
da organizao (custos efetivos, contabilidade, alocao e retorno do investimento), fornecendo suporte no planejamento
financeiro e execuo dos objetivos de negcios.
NVEIS DE CERTIFICAO
Atualmente existem trs nveis de certificao para o ITIL:
Foundation Certificate in IT Service Management
Destinado s pessoas que atuam na rea de Gerenciamento
de Servios de TI, essa a primeira das certificaes do ITIL e
pr-requisito para as demais.
Practitioner's Certificate in IT Service Management
Para se certificar, o candidato deve se especializar em pelo
menos uma disciplina especfica (de Service Support ou
Service Delivery), com foco na sua experincia na rea escolhida.
Manager's Certificate in IT Service Management
Este o nvel mais avanado dos programas de certificao
em ITIL. Com essa qualificao, o profissional deve ser capaz
de analisar uma organizao existente e definir estratgias para
o gerenciamento da intra-estrutura de TI. Deve tambm conseguir avaliar os processos existentes e organiz-los de maneira sistemtica.
12
WWW.FORUMACCESS.COM.BR
Metodologias
Atuao na causa raiz dos problemas, com foco no negcio.
Definio clara e transparente de funes e responsabilidades.
Eliminao de redundncia de tarefas e aes.
Maior qualidade nos servios prestados.
Elevao dos nveis de satisfao dos usurios internos e clientes com relao disponibilidade e qualidade dos servios
de TI.
Reduo de custos de TI e aumento do ROI (Return on Investment).
Flexibilidade e menores impactos na gesto de mudanas.
Processos mais geis e organizados graas organizao e
relacionamento entre eles.
Melhor relacionamento com os fornecedores e com os servios prestados.
As prticas do ITIL so extremamente bem estruturadas e implicam, na maioria dos casos, em uma criteriosa ao de mudana
cultural, o que provavelmente tenha impacto direto na razo do
ITIL ainda no ter uma aplicao to ampla no cenrio atual das
empresas que necessitam de um gerenciamento de seus servios de TI. Contudo, sua aplicabilidade e os benefcios que vem
comprovadamente trazendo esto fazendo com que seja cada
dia maior a procura por informaes e tentativas concretas de
adoes de suas melhores prticas.
CONCLUSO
Este artigo fez uma breve introduo ao ITIL, metodologia ainda pouca conhecida mas em uso crescente por profissionais e
corporaes.
Mercado de TI
O mercado de TI conta ainda com outras metodologias e "modelos de negcios" dispostos em frameworks, com similaridades e complementaridade tais como Control Objectives for
Information and related Technology (COBIT), Capability Maturity
Model Integration (CMMI), as boas prticas na gesto de projetos segundo o PMBoK, entre outros. Alm disso, dispe de vrios pacotes corporativos que so comumente usados para promover a Governana de TI, como Balanced Scorecard (BSC),
Business Intelligence (BI), Customer Relationship Management
(CRM), Enterprise Resource Planning (ERP) e Supply Chain
Management (SCM).
Para se aprofundar
OGC. ITIL The key to managing IT Services: Service Delivery. Cronw
Copyright, 2003.
OGC. ITIL The key to managing IT Services: Service Support. Cronw
Copyright, 2003.
Artigo feito pela interPromUSA: Justification of ITIL, www.interpromusa.com, 2002.
Artigo feito pela interPromUSA: What is ITIL, www.interpromusa.com, 2002.
White Paper feito pela organizao PinkElephant: The benefits of ITIL, www.
pinkelephant.com, 2004.
Site da COMPUTERWORLD (http://computerworld.uol.com.br), 2006.
Site do EXIN (www.exin-exams.com/), 2006.
FRUMACCESS
13
Access Bsico
No MDB de destino, para usar a especificao, basta fazer a importao/vinculao do TXT (por meio do menu Arquivo Obter dados
externos), assim que o assistente for aberto, clique no boto Avanado para exibir a janela de especificao e, em seguida, no boto
Especificaes para trazer a lista de especificaes salvas (Figura 3).
2003)
14
WWW.FORUMACCESS.COM.BR
Access Bsico
2) COMO CENTRALIZAR UM FORMULRIO NA TELA POR
MEIO DE CDIGO?
R. Abrir um formulrio centralizado na tela fcil, basta configurar a propriedade AutoCentralizar para Sim na janela de propriedades do formulrio (Figura 4). Isso geralmente feito em
formulrios popup e em janelas de dilogo. Observao: ao alternar do modo estrutura para o modo formulrio, a centralizao automtica no feita. necessrio fechar e abrir o formulrio para que funcione corretamente.
mlngLeft = Me.WindowLeft
End Sub
FRUMACCESS
15
Access Bsico
Access
Bsico
Resume ExitHere
End Sub
4) COMO FIXAR A LARGURA DE COLUNAS EM UM FORMULRIO FOLHA DE DADOS PARA QUE O USURIO NO AS
ALTERE?
R. A largura de uma coluna de um formulrio folha de dados
definida pela propriedade ColumnWidth. Para impedir que o
usurio altere a largura das colunas, no h uma propriedade
especfica, mas possvel usar o VBA para se obter o resultado desejado.
A lgica adotada a seguinte: ao abrir o formulrio, voc armazena a largura de todas as colunas; ao clicar no formulrio
para redimensionar alguma coluna, voc restabelece as larguras originais.
Para armazenar as larguras das colunas, voc pode usar uma
varivel Collection, declarada na seo geral do formulrio:
Dim i As Integer
'Limpa a Collection
For i = 1 To colColumns.Count
colColumns(i).Remove
Next i
End Sub
ExitHere:
Exit Sub
ErrHandler:
MsgBox Err.Description & vbCrLf & Err.Number & vbCrLf & _
Err.Description, vbCritical, "Form_frmLarguraFixa_Form_Open"
16
Com isso, ao abrir o formulrio, voc ter todas as colunas corretamente ajustadas e as larguras armazenadas na varivel
mcolColumns.
Quando um usurio quer alterar a largura de alguma coluna, ele
clica no ttulo, arrasta o mouse e libera na posio desejada. A
liberao do mouse pode ser feita no prprio cabealho do formulrio, em alguma coluna da grade de dados e at mesmo fora
do formulrio.
Quando o usurio clica sobre o ttulo de alguma coluna, o even-
WWW.FORUMACCESS.COM.BR
Access Bsico
to Ao Apertar Mouse disparado. Crie na seo geral do formulrio uma varivel booleana e use o evento Ao Apertar Mouse
do formulrio para passar o valor True a essa varivel. A finalidade indicar que as colunas devero ser posteriormente reajustadas:
Private mblnClicked As Boolean
mblnClicked = True
End Sub
A Inputbox seria bem mais funcional se permitisse a configurao de mscaras de entrada, porm no possui tal recurso. A soluo acaba sendo a criao de um formulrio popup personalizado, com botes de comando e caixa de texto com mscara.
No caso de mscara de senha, entretanto, existe uma soluo
criada pelo ingls Daniel Klann (www.danielklann.com). Tratase de uma InputBox comum, mas com a entrada na forma de
senha (Figura 10).
lngWidth = colColumns(ctl.Name)
If lngWidth > 0 And ctl.ColumnHidden = True Then
ctl.ColumnHidden = False
End If
ctl.ColumnWidth = lngWidth
End If
Next ctl
End Sub
Este procedimento FixColumns deve ser chamado nos eventos Ao Liberar Mouse do formulrio e de todas as colunas (pois
ao redimensionar alguma coluna, o usurio pode liberar o
mouse sobre qualquer campo). A chamada feita da seguinte
forma:
Private Sub Form_MouseUp(Button As Integer, _
Shift As Integer, X As Single, Y As Single)
'////////////////////////////////////////////////////////////////////
End If
End Sub
'
'Code written by Daniel Klann
FRUMACCESS
17
Access Bsico
Access
Bsico
'March 2003
'////////////////////////////////////////////////////////////////////
'This changes the edit control so that it display the password character *.
'API functions to be used
&H0
End If
End If
'This line will ensure that any other hooks that may be in place are
"SetWindowsHookExA" _
'called correctly.
"SendDlgItemMessageA" _
lngThreadID = GetCurrentThreadId
lngModHwnd = GetModuleHandle(vbNullString)
lngThreadID)
UnhookWindowsHookEx hHook
End Function
End Function
CONCLUSO
Para se aprofundar
Inputbox com mscara de senha:
http://www.danielklann.com/excel/hiding_text_in_a_vba_inputbox.htm
18
WWW.FORUMACCESS.COM.BR
Access Bsico
ANTES DE COMEAR
Extraia o contedo dos arquivos deste artigo em uma pasta de
trabalho do seu computador, note que h uma pasta BR e outra
EN para verso em portugus e ingls do banco de dados de
exemplo Northwind:
Pasta: BR
Figura 1 - Exemplo1.xml
Pasta: EN
-Funcionarios_Saida.xsl
- Employees_Out.xsl
-Funcionarios_Entrada.xsl
- Employees_In.xsl
-Funcionarios_Entrada.xsd
- Employees_In.xsd
-Funcionarios_Entrada.xml
- Employees_In.xml
FRUMACCESS
19
Access Bsico
Access
Bsico
10. Na caixa de dilogo Exportar Transformaes, selecione
Funcionarios_Saida.xsl e, ento, clique em OK.
</td>
</tr>
</xsl:template>
</xsl:stylesheet>
Lista 1 - O arquivo transformao Funcionarios_Saida.xsl
<td>Andrew</td>
<td>Fuller</td>
</tr>
<tr>
<td>Janet</td>
<td>Leverling</td>
</tr>
<tr>
<td>Margaret</td>
<td>Peacock</td>
</tr>
<tr>
<td>Steven</td>
<td>Buchanan</td>
</tr>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
<tr>
version="1.0">
<td>Michael</td>
<td>Suyama</td>
<xsl:template match="dataroot">
</tr>
<html>
<tr>
<body>
<td>Robert</td>
<table>
<td>King</td>
<xsl:apply-templates select="Funcionrios"/>
</tr>
</table>
<tr>
</body>
<td>Laura</td>
</html>
<td>Callahan</td>
</xsl:template>
</tr>
<tr>
<xsl:template match="Funcionrios">
<td>Anne</td>
<tr>
<td>Dodsworth</td>
<td>
</tr>
<xsl:value-of select="Nome"/>
</table>
</td>
</body>
<td>
<xsl:value-of select="Sobrenome"/>
</html>
Lista 2 - Sada ao exportar para XML usando arquivo de transformao
20
WWW.FORUMACCESS.COM.BR
Access Bsico
IMPORTANDO DADOS DE XML
Nas verses anteriores, o Access permitia que voc importasse
dados no padro XML em tabelas novas ou acrescentasse dados a tabelas j existentes. Esta verso do Access permite que
voc transforme os dados antes de criar tabelas novas ou
adicion-los s tabelas existentes. Os procedimentos a seguir
demonstram a transformao de um arquivo de dados de funcionrios durante a importao. Isso um detalhe muito importante quando tentamos importar dados de arquivos XML e
adicion-los a tabelas j existentes.
1. Inicie o Access 2003 e abra novamente o banco de dados de
exemplo Northwind.
2. No menu Arquivo, v em Obter dados externos e clique em
Importar.
3. Na caixa de dilogo Importar, na lista Arquivos do tipo, clique
em XML (*.xml, *.xsd).
4. Se necessrio, procure pelos arquivos de exemplo e ento
clique no arquivo Funcionarios_Entrada.xml.
</xsl:template>
<xsl:template match="Funcionrios">
5. Clique em Importar.
<Funcionrios>
<Nome><xsl:value-of select="Nome"/></Nome>
<Sobrenome><xsl:value-of select="Sobrenome"/></
Sobrenome>
</Funcionrios>
</xsl:template>
</xsl:stylesheet>
Lista 3 - Arquivo de transformao Funcionarios_Entrada.xsl
6. Na caixa de dilogo Importar XML, abaixo do n da tabela, clique em Funcionrios, clique em Opes e, ento,
clique em Transformao.
7. Na caixa de dilogo Importar Transformao, clique em Adicionar.
8. Na caixa de dilogo Adicionar Nova Transformao,
clique em Funcionarios_Entrada.xsl e, ento, clique em
Adicionar.
9. Na caixa de dilogo Importar Transformaes, clique em
Funcionarios_Entrada, clique em OK e, ento, clique em
OK novamente.
FRUMACCESS
21
Access Bsico
Access
Bsico
INCLUINDO TABELAS RELACIONADAS AO EXPORTAR UM XML
<DataDoPedido>1996-07-04T00:00:00</DataDoPedido>
<DataDeEntrega>1996-08-01T00:00:00</DataDeEntrega>
<DataDeEnvio>1996-07-16T00:00:00</DataDeEnvio>
<Via>3</Via>
<Frete>32.38</Frete>
</Detalhes_x0020_do_x0020_Pedido>
</Pedidos>
CONCLUSO
Neste artigo, mostrei as caractersticas de XML da verso mais
recente do Access. No Microsoft Office Access 2003, voc pode
aplicar XSL para transformar dados na importao e na exportao. Voc pode tambm exportar tabelas relacionadas ao exportar para arquivos XML.
* Frank Rice acumulou vasta experincia como desenvolvedor e engenheiro
de suporte em aplicaes Access. Atua hoje na Microsoft na criao de docu-
22
WWW.FORUMACCESS.COM.BR
Access Avanado
Access ListBar
Paulo Sergio Sarraino*
A LISTBAR (OU MENU VERTICAL) APARECEU COM ALGUMAS VERSES MAIS ANTIGAS DO OUTLOOK. O CONCEITO
DELA ABRIGAR FUNES SEMELHANTES DENTRO DE GRUPOS QUE, QUANDO CLICADOS, ABREM-SE VERTICALMENTE PARA ACESSAR AS FUNES RELACIONADAS. COMO
UMA BARRA DE MENU, PORM NA VERTICAL, EXIBE TEXTOS E CONES COM CONFIGURAES DIFERENTES E ESSES ELEMENTOS PODEM SER REORDENADOS E REAGRUPADOS LIVREMENTE, A GOSTO DO USURIO.
Logo, sua utilidade foi percebida para sistemas em Access que
administram grande quantidade de tipos de dados. Assim, esses tipos poderiam ser agrupados e disponibilizados numa
interface mais simples para manuteno dos dados. Mas esse
componente nunca foi inserido no Access (at a verso 2003)
para uso em sistemas construdos nessa plataforma.
Surgiram, ento, atravs de empresas de ferramentas de
software, componentes semelhantes que permitem explorar esse
recurso no Access incorporando-os aos sistemas desenvolvidos. Pesquisando na internet e no GD da FrumAccess, localizei alguns deles com custos tanto para o desenvolvimento quanto para o uso desses componentes.
Da pensei: possvel desenvolver algo semelhante apenas usando
os objetos do Access? Mos obra, pesquisas, testes, e hoje posso dizer: sim! Com algumas limitaes, porm bem funcional.
Nesta matria vou demonstrar isso com 2 exemplos: um usando apenas textos (com uma caixa de listagem) e outro usando
cones/textos (com um subformulrio).
No arquivo disponibilizado para essa matria h, alm do mdb de
demonstrao, diversos bmps para os cones; ao descompactar
o zip, mantenha todos os arquivos na mesma pasta.
Ateno, importante destacar que a verso do Access seja 2000
ou posterior, pois h algumas referncias que no so suportadas em verses anteriores (usadas no exemplo com
subformulrio).
2003)
A NECESSIDADE
Em sistemas que desenvolvemos sempre h cadastros que considero como bsicos: Cidades, Estados, Produtos, Funcionrios, Projetos, Fornecedores, Clientes e muitos outros. Por isso,
na maioria dos meus projetos sempre h uma tela de Cadastros
com 2 componentes: um grupo de opes para cada cadastro
necessrio e um subformulrio no-vinculado. Conforme
clicamos no item do grupo de opes o subformulrio exibe
o formulrio desenvolvido para o item (tipo datasheet) ou podese at mesmo exibir a prpria tabela ou consulta dos dados (conceito usado nessa matria). Essa estrutura fornece uma interface
nica, consistente e fcil para o usurio nesta parte do sistema.
O problema surge quando temos muitos cadastros para
gerenciar de tal forma que o espao fsico de um formulrio no
comporta todos os itens no grupo de opes. O layout fica
comprometido e perde a eficincia.
Com uma ListBar seria possvel exibir todos os itens de cadastros que precisamos, agrupando-os sob alguma classificao e
permitindo adotar o mesmo estilo de layout citado.
Para comear, necessria uma tabela que permita registrar os
itens da nossa tela de cadastros. Veja os dados da tabela
tbl_ListBar e a sua estrutura:
Campo
Tipo
IDGrupo
Descrio
Item
Objeto
Texto (20)
Nos dados da tabela, observe que existem 4 grupos identificados (de 1 a 4) e uma tabela fsica correspondente para cada
Objeto citado. Algumas delas vieram do banco de dados
Northwind Traders, de outros projetos, e usei tambm o assistente de criao de tabela do prprio Access para enriquecer
ainda mais esta matria. Para esse exemplo, a estrutura e os
dados de cada tabela dessas no tm importncia.
23
Access
Avanado
Access
Avanado
Detalhando melhor - a funo ListBar responsvel por:
Receber, atravs do parmetro i, o cdigo de grupo clicado.
Identificar, numa matriz (matGrupo), os valores de Top de cada
boto de grupo que criamos.
Ocultar a caixa de listagem lstGrupo.
Alinhar, no topo da caixa boxGrupo, os botes de grupo at o
grupo clicado (usando um For...Next com Step -30, teremos
um efeito de deslize da posio atual do boto at o limite
possvel do topo da caixa boxGrupo).
Alinhar, na base da caixa boxGrupo, os botes de grupo depois do grupo clicado (tambm usando um For...Next com Step
30 para termos o efeito de deslize do boto at o limite possvel da base da caixa boxGrupo na mesma velocidade).
Montar um SELECT da tabela tbl_ListBar conforme o grupo clicado.
Posicionar a caixa de listagem lstGrupo abaixo do boto de
grupo clicado e reexibi-la atualizada.
Tipo
Descrio
boxGrupo
caixa
lstGrupo
caixa de listagem
Figura 2 - Fase 2
24
WWW.FORUMACCESS.COM.BR
Access Avanado
Para iniciar a nossa ListBar o formulrio tem no evento Ao Abrir
(On Open) uma chamada funo ListBar com o parmetro de grupo igual a 1 e assim, exibe o primeiro grupo automaticamente.
As outras rotinas que precisamos so: o cmdFechar_Click (o
boto que fecha o formulrio), o Form_Load (para iniciarmos o
formulrio com o primeiro cadastro disponvel j selecionado)
e o lstGrupo_AfterUpdate (para atualizarmos o SourceObject do
subformulrio conforme alteramos a seleo do item na caixa
de listagem lst_Grupo).
Private Sub cmdFechar_Click()
DoCmd.Close
End Sub
Private Sub Form_Load()
Me.lstGrupo.Selected(0) = True
lstGrupo_AfterUpdate
End Sub
Private Sub lstGrupo_AfterUpdate()
With Me.subfCadastros
.SourceObject = "Table." & Me.lstGrupo.Column(1)
.SetFocus
End With
DoCmd.RunCommand acCmdSelectRecord
End Sub
Descrio
O objeto aparece plano, com as cores padro
do sistema ou cores personalizadas que
tenham sido definidas no modo de design.
Alto relevo
Baixo relevo
Sombreado
Cinzelado
FRUMACCESS
25
Access
Avanado
Access
Avanado
If ctl.SpecialEffect = 1 Then ctl.SpecialEffect = 2
Next
Me("Item" & i).SpecialEffect = 2
With Me.Parent!subfCadastros
.SourceObject = "Table." & Me("Item" & i).Tag
.SetFocus
End With
DoCmd.RunCommand acCmdSelectRecord
End Sub
Sub MouseMove(i As Integer)
For Each ctl In Me.Controls
If ctl.SpecialEffect <> 2 Then
If Right(ctl.Name, 1) = i Then
ctl.SpecialEffect = 1
Else
ctl.SpecialEffect = 0
End If
End If
Next
End Sub
i=i+1
If i > qt Then Exit Do
.MoveNext
Loop
.Close
End With
j=i
For i = i To qt
Me("Item" & i).Visible = False
Next
Me.Section(0).Height = (qt * Me.Item1.Height) + 300
For i = 2 To qt
If Me("Item" & i).Visible Then
Me("Item" & i).Top = Me("Item" & i - 1).Top + Me("Item" & i - 1).Height
+ 20
Else
Me("Item" & i).Top = 0
End If
Next
Me.Section(0).Height = ((j - 1) * Me.Item1.Height) + 300
For Each ctl In Me.Controls
If InStr(Me.Parent!subfCadastros.SourceObject, ctl.Tag) > 0 Then
ctl.SpecialEffect = 2
Else
ctl.SpecialEffect = 0
End If
Next
End Function
Agora voltemos ao formulrio de Cadastros que, aps a duplicao, chamei de frm_Cadastros_subform. Como dito antes,
as alteraes so simples.
Primeiro, apague a caixa de listagem (e a sua rotina AfterUpdate) e,
no lugar dela, insira um subformulrio do objeto frm_ItemListBar
(sem vnculos de campos filho/mestres). Pra facilitar, chame-o de
frm_ItemListBar e formate-o como a figura 6.
26
WWW.FORUMACCESS.COM.BR
Access Avanado
Private Sub Detail_MouseMove(Button As Integer, Shift As Integer, X As Single,
Y As Single)
Dim ctl As Control
For Each ctl In Me.frm_ItemListBar.Controls
If ctl.SpecialEffect <> 2 Then
ctl.SpecialEffect = 0
End If
Next
End Sub
Aps a confirmao, uma nova mensagem indica que a aplicao precisa ser reiniciada (fechar e abrir novamente o Access).
Veja na figura 11.
CONCLUSO
Usando o subformulrio, temos mais liberdade para a construo
dos itens da ListBar, pois podemos utilizar cones e posicion-los
aonde for desejado, porm, usando a caixa de listagem, temos uma
manuteno mais simples e performance melhor. De qualquer forma, o desenvolvimento facilitado quando usamos os objetos nomeados como a estrutura de uma matriz (como cmd1, cmd2, ... e
item1, item2, ...). Aplicativos podem ser facilmente dimensionados
nesse ambiente com uma boa interface e, o melhor, sem custo para a
empresa e o desenvolvedor.
Aqui usei uma srie de tipos de cadastros, mas pode-se usar esse
recurso para outras situaes semelhantes, como relatrios, interfaces
e menus de controle.
Espero que esta matria ilumine o caminho de diversos projetos semelhantes para serem aprimorados com as tcnicas aqui apresentadas. Fiquem vontade para mandar idias, sugestes e crticas.
Bom estudo a todos!
* Paulo Sergio Sarraino (pss@sarraino.com.br) analista de sistemas e scio
da Sarraino Systems. Possui graduao de Tecnologia em Processamento de
Dados pela FASP (1997) e ps-graduao em Anlise de Sistemas c/ nfase
em Gerncia de Projetos pela FIAP (2000). Atua como consultor em Anlise e
Desenvolvimento de Sistemas em ambiente MS Office e Internet (especialista
em Access, VBA e ASP) h mais de 10 anos.
FRUMACCESS
27
Office Bsico
Nos ltimos anos, o pacote Microsoft Office teve diversas atualizaes: Office 7.0 (1995), Office 97, Office 2000, Office XP
(2002) e Office 2003.
A cada verso, novas funcionalidades e recursos foram introduzidos, mantendo fielmente a identidade visual das ferramentas
e a compatibilidade entre verses. Muitos usurios nem se importam com a verso do produto, basta que seja o Excel ou o
Word, que ele conseguir trabalhar da mesma forma.
O Office 2007 foge desta curva crescente: ele representa um
grande salto na famlia dos produtos, no apenas em termos
visuais, mas tambm de estrutura e de recursos.
Com base em um grande estudo de usabilidade e comportamento do usurio, foi feita uma completa reorganizao dos
menus e botes do Office, agora substitudos pelo chamado
Ribbon, um conjunto de guias de comandos separadas por funcionalidades (veja a comparao nas Figuras 1 e 2).
28
WWW.FORUMACCESS.COM.BR
Office Bsico
apenas 25% do tamanho original, e os do PowerPoint com 75%.
A taxa de compresso pode variar em razo das imagens utilizadas nos documentos, as quais no so compactadas. Como os
documentos do PowerPoint, por sua natureza, costumam conter mais imagens, a reduo do seu tamanho menor.
Arquivos menores, alm de ocuparem menos espao no disco
rgido e em mdias removveis (pen drives, disquetes, CDs), so
mais rpidos para transmisso via e-mail.
Os documentos do Office so agora constitudos de uma coleo de arquivos menores, contidos em um nico arquivo zip.
Para ver quais so os arquivos que compem o documento,
basta renomear sua extenso (xlsx no caso do Excel) para zip e
abri-lo com qualquer utilitrio que funcione com essa tecnologia.
O mais popular o WinZip (www.winzip.com), mas tambm h
outros, como o brasileiro BraZip (www.arquivonacional.com.br/
brazip) e o gratuito FilZip (www.filzip.com).
Para testar, percorremos os seguintes passos:
Criamos no Excel 2003 uma pasta de trabalho com diversos
elementos: nmeros, frmulas, comentrios, uma figura, um
diagrama, um documento do Word e um grfico (Figura 3 e
Figura 4).
Figura 3 - Pasta de trabalho do Excel 2003 a ser convertida para o Excel 2007
Figura 4 - Objetos adicionais da pasta de trabalho a ser convertida para o Excel 2007
FRUMACCESS
29
Office Bsico
Office
Bsico
Copiamos este arquivo para uma mquina com o Office
2007 instalado. Veja na Figura 5 que o cone do arquivo
traz o nome da verso do arquivo (2003).
Figura 5 - cone do arquivo Excel 2003 exibido na mquina com Excel 2007
30
WWW.FORUMACCESS.COM.BR
Office Bsico
Na restaurao, a planilha no pde ser recuperada (pois o arquivo Sheet2.xml foi apagado), mas o restante do documento
aberto (Figura 10).
praticamente todos os usurios. O termo mais correto, entretanto, pasta de trabalho. Uma pasta de trabalho pode conter
diversas planilhas, ou seja, diversas folhas quadriculadas representadas pelas abas inferiores (Figura 12).
Assim, desde j, vamos usar os termos corretos: um arquivo xlsx (ou xls) do Excel uma pasta de trabalho, enquanto cada aba representa uma planilha. Estes so os
termos usados nos menus e janelas do programa, nos
arquivos de Help, nos livros e tambm neste treinamento.
Cada planilha da pasta de trabalho uma grade de linhas
e colunas. O cruzamento de uma linha com uma coluna
representado por uma clula.
Portanto, temos a seguinte hierarquia: aplicao Excel Pasta
de trabalho Planilha Linha/Coluna Clula (Figura 13).
Para se referir a:
Use:
A10
A10:A20
B15:E15
5:5
5:10
H:H
H:J
ESTRUTURA DO EXCEL
FRUMACCESS
31
Office Bsico
Office
Bsico
Por ser o padro do Excel, estilo A1 o utilizado pela grande
maioria dos usurios.
L1C1
ber que a coluna X est 12 posies frente de L, e que a coluna AJ est 12 posies frente de X? Seguramente no.
Usando a notao L1C1, a funo teria a seguinte sintaxe:
=RC[-25]+RC[-13]+RC[-1]
Pela posio relativa das colunas, fica fcil saber que elas esto
posicionadas com 12 unidades de diferena (Figura 16).
O estilo L1C1, embora bastante simples, costuma ser usado apenas por usurios mais avanados. Ele torna mais produtivo e
confivel o trabalho de criar e conferir frmulas, pois as posies
das colunas so representadas por nmeros, no por letras, o
que facilita sua localizao e a noo de seu posicionamento.
Veja alguns exemplos deste tipo de notao:
A referncia
Significa
R[-2]C
R[2]C[2]
Para escolher a notao a ser usada, clique no menu File (representado pelo cone do Office) e no boto Excel Options. Ser
aberta a janela de opes do Excel, onde voc deve escolher a
guia Formulas. Na seo Working with formulas, assinale o item
R1C1 reference style (Figura 17).
direita.
R2C2
R[-1]
32
WWW.FORUMACCESS.COM.BR
Office Bsico
QUANTIDADE DE LINHAS E COLUNAS
O Excel 2007 tem 16.384 colunas (vai da coluna A at a coluna
XFD) e 1.048.575 linhas (Figura 19).
ZOOM NA TELA
NOVOS ELEMENTOS
Veja alguns dos novos elementos criados na interface do Office 2007:
Figura 20 - Setas para rolagem horizontal das abas
RIBBON
O ribbon um elemento que contm diversos comandos, divididos em guias (abas) conforme a funcionalidade (Figura 23).
FRUMACCESS
33
Office Bsico
Office
Bsico
CONTEXTUAL TABS
Dependendo do objeto em que o usurio est trabalhando, o ribbon
pode exibir guias de contexto. Se, por exemplo, voc selecionar
um grfico na tela, aparecer a guia de contexto Chart Tools, com
as abas Design, Layout e Format (Figura 24); se selecionar uma
tabela, aparecer a guia de contexto Table Tools, com a aba Design.
LIVE PREVIEW
Ao passar o mouse sobre itens de uma galeria, possvel ver na
tela o resultado da seleo, sem que para isto o usurio precise
confirmar clicando no OK (Figura 28).
GALLERIES
CONCLUSO
Neste artigo mostrei as principais novidades na estrutura e na
interface do Excel 2007, que mudou consideravelmente em relao verso 2003. O produto deve ser lanado pela Microsoft
no incio do ano que vem.
Para se aprofundar
http://www.microsoft.com/brasil/2007office/default.mspx
Figura 26 - Galerias
* Luiz Cludio C. V. Rocha (luiz@mvps.org) coordenador de projetos da
34
WWW.FORUMACCESS.COM.BR
Office Bsico
1 - NUNCA use impressora de papel para fazer testes de relatrios de sistemas em desenvolvimento, a no ser
em casos de absoluta necessidade. Imprima sempre em tela.
2 - Em caso de documentos comuns, que precisaro ser impressos em papel de qualquer forma, faa sempre uma impresso virtual antes, como teste.
FRUMACCESS
35
Office Bsico
Office
Bsico
Esse o procedimento que deve ser sempre seguido para testar
relatrios de um sistema em desenvolvimento.
Em caso de documentos comuns do escritrio, como arquivos
de Word, Excel e PowerPoint, voc desejar, depois disso, fazer
uma impresso real, em papel. Para isso, siga o passo 3.
CONCLUSO
Como se v, no nada complicado. uma atitude simples que, seguida por muitos, faz uma imensa diferena. Portanto, no se esquea: da
prxima vez que for imprimir, use sempre uma impressora virtual!
Figura 3 Alterando para uma impressora de verdade
36
WWW.FORUMACCESS.COM.BR
Office Bsico
With objOutlookMsg
' Adicione os destinatrios To mensagem. Substitua os nomes aqui
FRUMACCESS
37
Office Bsico
Office
Bsico
Set objOutlookRecip = .Recipients.Add("Nancy Davolio")
objOutlookRecip.Type = olTo
' Adicione os destinatrios Cc mensagem
Set objOutlookRecip = .Recipients.Add("Andrew Fuller")
objOutlookRecip.Type = olCC
' Configura o Assunto, Corpo e Prioridade da mensagem
.Subject = "This is an Automation test with Microsoft Outlook"
.Body = "Last test." & vbCrLf & vbCrLf
.Importance = olImportanceHigh 'High importance
Documents\Customers.txt"
objOutlookMsg.Display
End If
Next
.Send
sbSendMessage
End With
Set objOutlookMsg = Nothing
Nome do campo
Tipo de
Tamanho
dados
do campo
50
Else
Appt
Texto
ApptStartDate
Data/Hora
Formato
Valor
Requerido
Sim
Data
Sim
abreviada
End If
ApptEndDate
End Sub
Data/Hora
Data
Sim
abreviada
ApptTime
Data/Hora
Hora
Sim
Normal
ApptLength
Nmero
Inteiro
15
Sim
Longo
ApptNotes
Memorando
ApptLocation
Texto
ApptReminder
Sim/No
ReminderMinutes Nmero
No
50
No
No
Inteiro
15
No
Longo
AddedToOutlook
38
Sim/No
No
2. Configure os campos ApptStartDate e o ApptTime como chaves primrias concatenadas (selecione os dois campos e
clique em Chave Primria). Feche e salve a tabela.
Obs: Neste exemplo, a chave primria na tabela de compromissos composta pela data e hora do compromisso. Voc pode
WWW.FORUMACCESS.COM.BR
Office Bsico
remover ou mudar a chave primria se voc quiser adicionar
mltiplos compromissos para a mesma data e hora.
3. Use o assistente - para criao de formulrios - para criar um
formulrio baseado na tabela tblAppointments e salve o form
como frmAppointments.
4. Abra o frmAppointments em modo Design e mude as seguintes propriedades:
Propriedade do formulrio: Legenda Formulrio de Compromisso
Cabealho do formulrio: Altura 1cm
AddedToOutlook Checkbox: Ativado No
5. Adicione um CommandButton ao cabealho e configure as
seguintes propriedades:
Nome: cmdAddAppt
Legenda: Envie ao Outlook
Largura: 4cm
6. Configure o evento Ao clicar do CommandButton para o
seguinte procedimento:
Private Sub cmdAddAppt_Click()
On Error GoTo Add_Err
'Salva registro antes para ter certeza de que os campos requeridos 'esto
End With
.Save
.Close (olSave)
End With
'Release the AppointmentItem object variable.
Set objAppt = Nothing
End If
'Libera as variveis
Set objOutlook = Nothing
Set objRecurPattern = Nothing
'Configura a flag AddedToOutlook, salva o registro e mostra uma 'mensagem
Me!AddedToOutlook = True
DoCmd.RunCommand acCmdSaveRecord
MsgBox "Appointment Added!"
Exit Sub
Add_Err:
MsgBox "Error " & Err.Number & vbCrLf & Err.Description
Exit Sub
End Sub
preenchidos
DoCmd.RunCommand acCmdSaveRecord
ApptTime: 02:00 PM
Exit Sub
ApptLength: 120
Else
ReminderMinutes: 15
8. Clique em Enviar ao Outlook, inicie o Outlook e veja os compromissos de amanh no seu calendrio.
.Duration = Me!ApptLength
.Subject = Me!Appt
If Not IsNull(Me!ApptNotes) Then .Body = Me!ApptNotes
If Not IsNull(Me!ApptLocation) Then .Location = Me!ApptLocation
If Me!ApptReminder Then
.ReminderMinutesBeforeStart = Me!ReminderMinutes
.ReminderSet = True
End If
Set objRecurPattern = .GetRecurrencePattern
With objRecurPattern
.RecurrenceType = olRecursWeekly
.Interval = 1
'Once per week
'You can hard-wire in these dates or get the
'information from text boxes, as used here.
'.PatternStartDate = #12/1/2003#
.PatternStartDate = Me!ApptStartDate
'.PatternEndDate = #12/30/2003#
.PatternEndDate = Me!ApptEndDate
FRUMACCESS
39
Office Bsico
Office
Bsico
ADICIONE UMA TAREFA OU UM LEMBRETE AO OUTLOOK
Ns podemos querer adicionar uma tarefa ou um lembrete de
forma programtica no Outlook a partir do Access. Esta seo
fornece cdigo de exemplo que permite a voc criar uma tarefa
e tocar um arquivo WAV como um lembrete sonoro.
Obs: No cdigo a seguir, voc deve apontar a propriedade
.ReminderSoundFile para um som vlido em seu HD. O exemplo usa o arquivo C:\Windows\Media\Ding.wav.
Realize os seguintes passos:
1. Crie um mdulo adicional no Automacao.mdb.
2. Digite ou cole o seguinte procedimento em VBA:
Option Explicit
Function fncAddOutlookTask()
Dim OutlookApp As Outlook.Application
'Compromisso = olAppointmentItem
With OutlookTask
.Subject = "This is the subject of my task"
'Email = olMailItem
.ReminderSet = True
'Anotao = olNoteItem
'Post = olPostItem
'Tarefa = olTaskItem
objItem.Display
'Fecha o Outlook
.ReminderPlaySound = True
'Modify path.
Exit Sub
StartError:
.ReminderSoundFile = "C:\Windows\Media\Ding.wav"
MsgBox "Error: " & Err & " " & Error
.Save
Exit Sub
End With
End Sub
End Function
CONCLUSO
CRIE UM ITEM DE CONTATO NO OUTLOOK
Esta seo mostra como usar automao em um Form do Access
para iniciar o Outlook e mostrar um novo Contato a ser inserido.
Voc pode mudar apenas uma linha do cdigo para fazer este exemplo funcionar para um novo Compromisso, entrada do Dirio, mensagem de e-mail, anotao, post ou tarefa.
O exemplo mostra como criar um formulrio no Access que roda o
Outlook a partir de um boto de comando. Ento, o cdigo de
automao abre uma tela de novo contato para insero de dados.
Depois que voc adiciona o contato, salva e fecha o formulrio, o
cdigo fecha o Outlook e retorna para o formulrio inicial no Access.
Siga os passos abaixo:
1. No Automacao.mdb, crie um formulrio que no est basea-
40
WWW.FORUMACCESS.COM.BR
.NET
PLANEJANDO O CONTROLE
O componente que est sendo criado receber uma coleo
de controles atravs de sua interface e, cada controle, ser manipulado pelo validador. O controle que estamos criando prev a validao de um grupo de controles (coleo) e tratar o
conjunto. Cada controle que for adicionado coleo receber sua configurao atravs das propriedades disponveis e
poder ser manipulado de acordo com as funcionalidades expostas pelo mesmo.
Aps a definio de como o validador receber os controles,
necessrio isolar as atividades que sero exercidas pelo mesmo. No caso de validao de entradas de dados, essas atividades so muito bem definidas e facilmente isolveis. Este artigo
mostra as atividades atravs de uma tabela contendo todas as
responsabilidades que o controle possui, definindo assim os
requisitos para o seu desenvolvimento. Poderia ser utilizado UML
para definir o funcionamento do controle, no entanto, neste artigo, utilizaremos uma tcnica mais simples baseada em tabelas
e descrio das funcionalidades. As funcionalidades que o controle possuir so detalhadas na Tabela 1.
Funcionalidade
HabilitaControles
Descrio
Habilita ou desabilita o conjunto de controles passado
para o componente.
LimpaControles
isValid
Controle Numrico
Controle Moeda
Controle Data
FRUMACCESS
41
.NET.NET
estiver vazio, permite que o foco saia do controle, caso
Controle CNPJ
Controle CPF/CNPJ
Requerido
OuExclusivo
Imports System.ComponentModel
Legenda
NaoValida = 0
ao controle.
SomenteCPF = 1
SomenteCNPJ = 2
Ambos = 3
Uma vez identificadas as funcionalidades que o controle possuir, pode-se comear o trabalho de codificao do mesmo.
End Enum
Public Enum enumTipoCampo
SemTipo = 0
CODIFICANDO A SOLUO
SomenteData = 1
SomenteHora = 2
DataHora = 3
Numerico = 4
End Enum
Public Property Controle() As System.Windows.Forms.Control
Get
Return lControle
End Get
42
WWW.FORUMACCESS.COM.BR
.NET
lNomeCampo = lControle.Name
End Set
End Property
<DesignerSerializationVisibility(DesignerSerializationVisibility.Content)> _
Public ReadOnly Property ControlesOuExclusivo() As SubControlCollection
Get
Return lControlesOuExclusivo
End Get
End Property
Essa classe contm a estrutura de cada controle que ser adicionado ao validador atravs da janela de propriedades do IDE.
Cada item adicionado, receber o controle que ser validado
atravs da propriedade Controle. A propriedade
ControlesOuExclusivo recebe uma coleo de controles que
sero utilizados para esse tipo de validao e, as demais propriedades, configuram o controle passado, que passar a se comportar de acordo com o valor das propriedades. Os enumeradores
so utilizados para auxiliar o trabalho de configurao na janela
de propriedades aps o objeto estar pronto.
Um dos grandes problemas de manter colees de controles
ter que informar como os mesmos sero serializados, seno o
IDE se perde na hora de criar e manter os valores das propriedades. Para que as propriedades sejam mantidas necessrio, em
toda a propriedade que corresponder uma coleo, atribuir um
identificador informando o IDE que a propriedade ser serializada
no cdigo (<DesignerSerializationVisibility(Designer
SerializationVisibility.Content)>). Aps essa identificao, ao
adicionar novos controles dentro da propriedade que estiver
identificada dessa forma, o prprio IDE se encarregar de criar
o cdigo necessrio para persistir essa informao.
A coleo de objetos MyControl representado pela classe
ControlCollection, que herda da classe System.Collections.
CollectionBase. A CollectionBase possui uma interface padro
que a IDE do Visual Studio entende e consegue, atravs da
PropertiesWindow, adicionar itens sem um esforo adicional,
o que facilita muito a criao de controles que possuam colees. Classes que herdam suas caractersticas da
CollectionBase possuem automaticamente os mtodos Add,
Insert, Remove, IndexOf, Item e um objeto interno chamado
List, que nada mais do que uma Collection, onde sero adicionados os controles. Como as caractersticas padres da classe sero alteradas, esses mtodos precisaram ser recodificados.
Para melhor entendimento, dividiremos a classe
ControlCollection em 3 partes. A primeira parte da Classe
ControlCollection est ilustrada na Lista 3.
Return lDecimalPlaces
End Get
Imports System.ComponentModel
<TypeConverterAttribute(GetType(System.ComponentModel.ExpandableObjectConverter))>
lDecimalPlaces = Value
End Set
_
Public Class ControlCollection
End Property
Inherits System.Collections.CollectionBase
Get
Return lCPFCNPJ
End Get
Set(ByVal Value As enumCPFCNPJ)
MyBase.New()
End Sub
Default Public ReadOnly Property Item(ByVal index As Int32) As MyControl
Get
lCPFCNPJ = Value
End Set
End Property
End Class
Lista 2 Classe MyControl
FRUMACCESS
43
.NET.NET
seus eventos atravs da utilizao de Delegates. Isso permite
que eventos sejam pr-codificados a controles em tempo de
execuo. Esses eventos foraro o funcionamento dos controles de acordo com suas caractersticas.
A classe ControlCollection possui ainda os eventos que esto
sendo associados aos controles e esto disponveis na Lista 5.
AssociaControle(Item)
Return List.Add(Item)
End Function
Public Sub Remove(ByVal Item As MyControl)
List.Remove(Item)
End Sub
Public Function IndexOf(ByVal value As MyControl) As Integer
Return List.IndexOf(value)
End Function
System.Windows.Forms.KeyPressEventArgs)
AssociaControle(value)
System.Windows.Forms.KeyPressEventArgs)
List.Insert(index, value)
End Sub
System.EventArgs)
Para que o IDE do Visual Studio entenda qual objeto est sendo
adicionado na PropertiesWindow necessrio informar o seu
tipo. O comando TypeConverterAttribute serve exatamente para
isso, ou seja, ele expe o tipo do objeto de forma que o Visual
Studio no encontrar problemas em manipul-lo. Para evitar
conflitos, todas as colees tero que ter esse identificador, que
possui uma assinatura padro.
Os mtodos Item, Add, Remove, IndexOf e Insert tiveram que
ser modificados e seus parmetros alterados para receberem
controles do tipo MyControl e para associarem o controle aos
seus respectivos eventos. Isso forar o IDE a expor controles
desse tipo na Properties Windows, permitindo a configurao
de cada um dos controles da coleo.
A Segunda parte da classe ControlCollection est ilustrada na
Lista 4 e contm o cdigo que associa o controle com os eventos necessrios para manter sua integridade.
Descrio
MySubControl
mensagem.
pControle.Controle.Tag = pControle.DecimalPlaces
OuExclusivo.
pControle.DecimalPlaces = 0 Then
AddHandler pControle.Controle.KeyPress, AddressOf NumericKeyPress
ValidaCPFCNPJ
Then
44
O cdigo completo de cada uma dessas classes deve ser conferido pelo leitor no exemplo completo disponibilizado pela revista.
Aps termos as classes, que expem o controle e a coleo de
controles, devidamente codificadas, deve-se codificar o componente (a classe inicial, do tipo Component Class, que foi adicionada no incio do artigo) e definir a exposio das propriedades. A classe Validador, para facilitar o entendimento, teve o
seu cdigo dividido em duas partes. A Lista 6 ilustra a primeira
parte do cdigo.
WWW.FORUMACCESS.COM.BR
.NET
Else
Imports System.ComponentModel
NomeCampo = Objeto.Controle.Name
End If
If gExibeMensagem Then
As String)
MsgBoxStyle.Information, My.Application.Info.ProductName)
As String)
End If
Mensgem As String)
Return False
End If
Get
Return gExibeMensagem
End Get
If gExibeMensagem Then
gExibeMensagem = True
MsgBoxStyle.Information, My.Application.Info.ProductName)
End Set
End Property
End If
DesignerSerializationVisibility(DesignerSerializationVisibility.Content)>_
Return False
Get
End If
Return lControles
End Get
End Property
If gExibeMensagem Then
'***************************************************************************
If gExibeMensagem Then
NomeCampo = Objeto.NomeCampo
FRUMACCESS
45
.NET.NET
ElseIf lType.Name = "MaskedTextBox" Then
End If
TotalPreenchidos += 1
End If
Return False
If TotalPreenchidos = 0 Then
End If
If gExibeMensagem Then
If gExibeMensagem Then
My.Application.Info.ProductName)
MsgBoxStyle.Critical, My.Application.Info.ProductName)
End If
End If
If gExibeMensagem Then
Return False
End If
End If
If gExibeMensagem Then
Return False
End If
MsgBoxStyle.Critical, My.Application.Info.ProductName)
If Objeto.Controle.Enabled = True Then Objeto.Controle.Focus()
'***************************************************************************
Next
Return True
Return False
End Function
End If
End If
End If
'***************************************************************************
'***************************************************************************
Return Valida()
End If
Return True
End Function
Objeto.Controle.Enabled = Acao
TotalPreenchidos += 1
Next
End Sub
Public Sub LimpaControles()
TotalPreenchidos += 1
TotalPreenchidos += 1
Objeto.Controle.Text = ""
End If
Objeto.Controle.Text = ""
DirectCast(Objeto.Controle, ListControl).SelectedIndex = -1
TotalPreenchidos += 1
46
Next
End If
End If
Objeto.Controle.Text = ""
ElseIf TypeOf Objeto.Controle Is RadioButton Then
WWW.FORUMACCESS.COM.BR
.NET
DirectCast(Objeto.Controle, RadioButton).Checked = False
ElseIf TypeOf Objeto.Controle Is NumericUpDown Then
DirectCast(Objeto.Controle, NumericUpDown).ResetText()
End If
Next
End Sub
Lista 7 Segunda parte da Classe Validador.vb
UTILIZANDO O COMPONENTE
O objetivo , atravs deste formulrio, demonstrar o potencial
do controle abordado no artigo e como utiliz-lo em um sistema WindowsForms.
Aps o componente estar criado e testado, basta utilizar o mesmo para fazer o que lhe proposto, ou seja, validar as entradas
de dados Windows. Crie um projeto WindowsForms e adicione
a DLL na ToolBox com o ChooseItens (boto direito sobre a
ToolBox Choose Items ...). A partir da ToolBox, adicione o
controle Validador no formulrio, configure-o conforme ilustrado na Figura 1.
Aps a correta configurao dos controles, utilizar seus mtodos uma tarefa extremamente simples, fornecendo agilidade,
praticidade e confiabilidade no desenvolvimento de crticas de
interface em Windows Forms.
CONCLUSO
Aps ler esse artigo, o leitor, alm de possuir um novo componente que ir auxili-lo no trabalho de validao, adquiriu conhecimento
para a criao de novos controles para agilizar e padronizar sua
codificao. Com toda a certeza, as situaes de validao podem
se expandir para novas necessidades e, caso o leitor venha a identificar novas situaes, j possuir um excelente ponto de partida,
bastando customiz-lo de acordo com suas necessidades.
Mais uma vez, espero ter contribudo com o crescimento profissional do leitor, fica aqui o meu abrao e at o prximo artigo.
* Gabriel Brenner Bacharel em Sistemas de Informao e Ps-Graduado em Anlise, Projeto e Gerncia de Sistemas. Trabalha atualmente como desenvolvedor de
sistemas Windows e WEB pelas Indstrias Nucleares do Brasil S/A e como professor
titular do curso de graduao em Sistemas de Informao da Faculdade de Cincias
Econmicas, Administrativas e da Computao Dom Bosco (http://www.aedb.br).
FRUMACCESS
47
.NET
EM NOVEMBRO PASSADO, A MICROSOFT LANOU AS NOVAS VERSES DO VISUAL STUDIO E, COM ISSO MUDOU
UMA SRIE DE CONCEITOS: PASSOU A OFERECER FERRAMENTAS GRATUITAS DE DESENVOLVIMENTO AS EXPRESS
EDITIONS - E, PARA GRANDES EQUIPES E FBRICAS DE
SOFTWARE, FERRAMENTAS PARA GERENCIAMENTO DE TODO
O CICLO DE DESENVOLVIMENTO DE SOFTWARE.
ESTE ARTIGO TEM COMO OBJETIVO APRESENTAR AS VERSES DO VISUAL STUDIO E AS PRINCIPAIS CARACTERSTICAS DE CADA UMA DELAS.
Caracterstica(s)
Desenvolvimento de aplicaes
console, windows e biblioteca de
classes reutilizveis, utilizando
C# como linguagem.
Desenvolvimento de aplicaes
console, windows e biblioteca de
classes reutilizveis, utilizando
Visual Basic .NET como
linguagem.
Desenvolvimento de aplicaes
console, windows e biblioteca de
classes reutilizveis, utilizando
C++ .NET como linguagem (MFC
e ATL no esto includas).
Desenvolvimento de aplicaes
console, windows e biblioteca de
classes reutilizveis, utilizando J#
EXPRESS EDITIONS
como linguagem.
As Express Editions so ferramentas de desenvolvimento gratuitas indicadas para amadores, estudantes e entusiastas que
querem utilizar a tecnologia .NET como plataforma de desenvolvimento de aplicaes Web e Windows. Vale ressaltar que a
Microsoft no coloca restries quanto ao uso dessas ferramentas por desenvolvedores profissionais, que oferecem total compatibilidade com suas equivalentes pagas. Desta forma, as
48
WWW.FORUMACCESS.COM.BR
.NET
fissionais no incio de carreira que no
precisam dos recursos mais avanados
oferecidos pelas verses Professional e
Team System.
Neste diagrama temos uma soluo composta de diversos sistemas. Para cada um,
podemos especificar restries, tais como
verso do sistema operacional, services
packs e verso do ISS dentre outras. Todas as restries informadas neste momento sero utilizadas para validao junto aos diagramas de distribuio de nossa soluo.
Anlise de cdigo esttica e dinmica: o Visual Studio analisa o cdigo desenvolvido em busca de padres que no foram atendidos ou possveis problemas de
desempenho. Existem muitas possibilidades, cada uma com
opes de parametrizao. Esses so apenas dois exemplos
do poder que existe por trs desse recurso.
Code Coverage: veja em termos percentuais as linhas de sua
classe que foram executadas. Essa viso pode ser obtida por
mtodos, classes ou namespaces.
Unit Testing: a um clique de distncia, gere unidades de testes
para as suas classes. Com isso, voc poder facilmente testar
os mtodos de sua classe.
A Figura 4 demonstra o recurso Code Coverage em ao.
FRUMACCESS
49
.NET .NET
MICROSOFT VISUAL STUDIO 2005 TEAM SUITE
uma edio que inclui as verses Architect, Developer
e Tester do Visual Studio Team System. Voltada para
times de desenvolvimento em que uma pessoa desempenha mais de um papel (arquiteto-desenvolvedor ou
desenvolvedortestador, por exemplo).
1. Work Items: representam as tarefas no ciclo de desenvolvimento de software. Toda e qualquer tarefa executa por qualquer pessoa na equipe ser representada por um work item.
2. Documentao: repositrio de documentos da equipe de desenvolvimento visando facilitar a comunicao
entre os membros da equipe. Baseado no Windows
SharePoint Services, o que possibilita o acesso aos documentos atravs da Internet.
3. Reporting: todas as atividades da equipe alimentam ndices
que vo possibilitar a extrao de relatrios diversos sobre o
andamento dos projetos. Baseado no SQL Server 2005
Reporting Services, o que significa que, alm dos relatrios
oferecidos pelo Team Foundation Server, podemos customizar
e/ou criar nossos prprios relatrios.
4. Build: automao dos processos de Build com possibilidade de
efetuar testes e anlise de cdigo no pacote que ser gerado.
5. Controle de verso: uma das melhores caractersticas do Team
Foundation Server. O sistema de controle de verso totalmente
baseado no SQL Server 2005 e no mais em sistema de arquivos como o Visual Source Safe. Alm disso, oferece diversas
novas caractersticas e escalvel at 500 desenvolvedores.
CONCLUSO
Na Figura 5 temos um exemplo de um teste de carga sendo executado em uma aplicao web.
50
WWW.FORUMACCESS.COM.BR
SQL Server
FRUMACCESS
51
SQL Server
Server
SQL
executado por uma determinada conexo e pode ajudar na tarefa investigativa:
DBCC INPUTBUFFER(52)
Natureza
Shared (S)
Update (U)
Exclusive (X)
Intent
Schema
52
Key-range
Imaginando que a coluna ContactId no fosse indexada, a operao resultante de um table scan geraria o lock compartilha-
WWW.FORUMACCESS.COM.BR
SQL Server
do de tabela, impedindo comandos de update em toda sua extenso,
enquanto durar o comando. Esse aumento na granularidade do lock
normalmente referenciado por lock escalation.
Parmetros discrepantes
Outro problema que pode levar o SQL a gerar um lock com
granularidade maior que a normal so parmetros inconsistentes. Esse comportamento pode ser observado em vrias
circunstncias no SQL 7.0 e SQL 2000 (o SQL 2005 tem um
otimizador de consultas mais avanado que no revela o
mesmo problema). O exemplo a seguir ilustra o problema,
criando equivocadamente uma coluna com tipo decimal com
o atributo identity e fazendo a procura de formas distintas
no campo com dois tipos de parmetros:
SET NOCOUNT ON
WHILE 1=1
INSERT tb_indxtest DEFAULT VALUES
SET STATISTICS IO ON
SELECT c2 FROM tb_indxtest WHERE c1 = 3.00
SET STATISTICS IO ON
FRUMACCESS
53
SQL Server
Server
SQL
aguarda a finalizao da mesma). Outra considerao seria a
criao de um servidor espelho dedicado para os relatrios ou
mesmo tabelas histricas na mesma base.
Transaes muito grandes
Uma transao de atualizao de registros que envolva toda a
massa de dados de uma tabela, como por exemplo, o clculo e
atualizao de comisses de vendas, pode gerar um lock de tabela por tempo exagerado em horrio de produo, concorrendo com operaes de leitura.
Quebrar transaes grandes em pedaos menores, executando
5% ou 10% do update por vez pode ser um exemplo de tentativa de evitar que o SQL aumente o lock para um lock de tabela.
Esse procedimento poderia ser facilmente implantado em muitos casos controlando-se pela chave primria da tabela ou outras tcnicas.
O QUE SO DEADLOCKS?
Alm dos problemas de lock citados ao longo do artigo,
existe o deadlock, um tipo especial de situao de lock. No
deadlock duas transaes entram em conflito, onde uma
espera a outra avanar e vice-versa, mas nenhuma pode
prosseguir pois esto mutuamente bloqueadas.
Esse estado detectado pelo SQL e, ao invs das conexes
esperarem eternamente pela resoluo do conflito, o prprio
SQL se encarrega de terminar uma das conexes envolvidas
de modo que a restante possa prosseguir (por default terminada a conexo que tem a menor quantidade de trabalho empenhado). Essa uma situao no muito freqente nas aplicaes de banco de dados, porm extremamente grave quando de sua ocorrncia, uma vez que transaes so terminadas
forosamente com gerao do erro correspondente.
CONCLUSO
O conhecimento dos problemas mais comuns relacionados a locks
pode levar ao desenvolvedor de aplicaes a chance de criar aplicaes estveis e com alta performance, mesmo nos cenrios mais
agressivos em relao concorrncia de conexes. Esse objetivo
est de acordo com a inteno de ajudar o leitor a cada vez mais
se destacar pela proficincia de seus sistemas e atuao em seu
campo.
Foram explanadas as principais ferramentas de investigao de forma que o leitor certamente conseguir identificar no apenas os casos citados, mas quaisquer outros que eventualmente surjam em
seu banco de dados. indicado ao final, um link para o artigo clssico da TechNet sobre a resoluo dos problemas de locking.
No novo recurso do SQL 2005 em relao concorrncia, o snapshot
isolation um novo e poderoso aliado na melhoria da concorrncia
de conexes e ser tema de artigos no futuro. At l.
Para se aprofundar:
Books on line:
Transaction Isolation Levels
Locking Hints
Edio 57 - Artigo Melhore a performance das consultas do SQL Server (mais informaes sobre tratamento transacional adequado).
54
WWW.FORUMACCESS.COM.BR
Microsoft e Oracle.
SQL Server
CDIGO EXEMPLO
FRUMACCESS
55
SQL Server
Server
SQL
dores utilizando uma frmula matemtica para prover a variao numrica.
SELECT @valorb = 0
WHILE 1=1
BEGIN
SELECT @count = @count + .01
SELECT @valor = cos(@count)* 50 +50
CONTADORES E ALERTAS
importante ressaltar que os contadores descritos podem ser utilizados com alertas do SQL Server Agent, cadastrando-se limites superiores ou inferiores para os valores que, caso ultrapassados, podem gerar uma notificao por e-mail, uma entrada no event viewer
do Windows ou at mesmo a execuo de um job em resposta.
END
CONCLUSO
O uso deste recurso praticamente desconhecido pode tornar possvel identificar problemas na aplicao de forma muito rpida,
e assim tomar as devidas providncias com agilidade.
Se bem utilizado, uma fonte adicional de subsdios aos administradores de banco de dados e desenvolvedores para atingir
um de seus principais objetivos: uma aplicao com boa
performance e estabilidade.
Operadores do CPD, administradores e outros profissionais podem utilizar esses contadores em conjunto com os usuais para
garantir este objetivo, com a vantagem de utilizar uma ferramenta que j de seu conhecimento e uso corrente ao invs de
criar uma para o propsito.
with(nolock)
Para se aprofundar:
56
WWW.FORUMACCESS.COM.BR
FRUTOS DO SUPORTE
Valor
Export Delimited
coloque o nome do arquivo
With objOutlookMsg
.HTMLBody = strBodyMail
objOutlookRecip.Resolve
Next
FRUMACCESS
59
A propriedade RecordSource do subformulrio define a origem dos registros que ele exibir. Por exemplo, se a consulta que mostra estes dados chama-se qryInscricoes, este
ser o valor definido em Record Source.
Para que sejam exibidos apenas 12 registros, voc pode
utilizar a clusula TOP como mostrado abaixo:
SELECT TOP 12 * FROM qryInscricoes
FRUMACCESS
61
strTaskName = "iexplore.exe"
If KillApp(strTaskName) Then
MsgBox "A tarefa " & strTaskName & " foi encerrada com sucesso."
Else
MsgBox "No foi possvel encerrar a tarefa " & strTaskName & "."
End If
Figura 5 Resultado
62
WWW.FORUMACCESS.COM.BR
Option Explicit
Const MAX_PATH& = 260
Declare Function TerminateProcess _
Lib "kernel32" (ByVal ApphProcess As Long, _
ByVal uExitCode As Long) As Long
Declare Function OpenProcess Lib _
cntUsage As Long
th32ProcessID As Long
th32DefaultHeapID As Long
th32ModuleID As Long
cntThreads As Long
th32ParentProcessID As Long
pcPriClassBase As Long
dwFlags As Long
appCount = appCount + 1
End If
End If
FRUMACCESS
63
Loop
Call CloseHandle(hSnapshot)
Exit Function
Finish:
MsgBox "Error!"
End Function
End If
End If
If OpenProcessToken(GetCurrentProcess(),
TOKEN_ADJUST_PRIVILEGES Or TOKEN_QUERY, hToken) = 0 Then
GoTo CleanUp
End If
CleanUp:
If hToken Then CloseHandle hToken
64
End If
End Function
* Fernando Pessoa (fernando.pessoa@forumaccess.com.br) Analista de Suporte da Revista FrumAccess.
WWW.FORUMACCESS.COM.BR