Access ListBar. Access Avançado



Documentos relacionados
Primeiros passos das Planilhas de Obra v2.6

Para o OpenOffice Impress, assim como para vários softwares de apresentação, uma apresentação é um conjunto de slides.

CADERNOS DE INFORMÁTICA Nº 1. Fundamentos de Informática I - Word Sumário

Manual das planilhas de Obras v2.5

Para o PowerPoint, assim como para vários softwares de apresentação, uma apresentação é um conjunto de slides.

FEMA Fundação Educacional Machado de Assis INFORMÁTICA Técnico em Segurança do Trabalho P OW ERPOI NT. Escola Técnica Machado de Assis Imprensa

Superintendência Regional de Ensino de Ubá - MG Núcleo de Tecnologia Educacional NTE/Ubá. LibreOffice Impress Editor de Apresentação

MANUAL DA SECRETARIA

Curso destinado à preparação para Concursos Públicos e Aprimoramento Profissional via INTERNET INFORMÁTICA AULA 11

UNIVERSIDADE FEDERAL DO AMAPÁ PRÓ REITORIA DE ADMINISTRAÇÃO E PLANEJAMENTO DEPARTAMENTO DE INFORMÁTICA. Manual do Moodle- Sala virtual

SOLID EDGE ST3 TUTORIAL 2 CRIANDO UM DESENHO NO AMBIENTE DRAFT

Criação da etiqueta para os cartões

SEI Superintendência de Estudos Econômicos e Sociais da Bahia Av Luiz Viana Filho, 435-4ª avenida, 2º andar CAB CEP Salvador - Bahia Tel.

O Windows também é um programa de computador, mas ele faz parte de um grupo de programas especiais: os Sistemas Operacionais.

Avançado. Visão geral do ambiente do VBA Retornar à planilha Excel

O EDITOR DE APRESENTAÇÕES POWER POINT

Sumário. 1. Instalando a Chave de Proteção Novas características da versão Instalando o PhotoFacil Álbum 4

Usando o Conference Manager do Microsoft Outlook

LASERTECK SOFTECK FC MANUAL DO USUÁRIO

Apostilas OBJETIVA Atendente Comercial / Carteiro / Op. Triagem e Transbordo CORREIOS - Concurso Público º CADERNO. Índice

Aula 01 Conceitos Iniciais sobre Excel 2010

Manual de Publicação Wordpress

A p o s t i l a M i c r o s o f t A c c e s s 97

ROBERTO OLIVEIRA CUNHA

O Sistema foi inteiramente desenvolvido em PHP+Javascript com banco de dados em MySQL.

Manual do Usuário ipedidos MILI S.A. - D.T.I.

LGTi Tecnologia. Manual - Outlook Web App. Soluções Inteligentes. Siner Engenharia

Criar formulários preenchidos pelos usuários no Word

Professor Paulo Lorini Najar

MANUAL MOODLE - PROFESSORES

Portal do Projeto Tempo de Ser

Iniciando o Word Criar um novo documento. Salvando um Documento. Microsoft Office Word

OFICINA DE POWER POINT

PowerPoint 2010 para o Office 365 para empresas

Manual de Utilizador. Caderno. Recursos da Unidade Curricular. Gabinete de Ensino à Distância do IPP.

Astra LX Resultados via MS-WORD Guia para a emissão de laudos personalizados via MS-WORD no Programa AstraLX.

Migrando para o Word 2010

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

Pró-Reitoria de Administração - PRAd Assessoria de Informática - AI SISTEMA DE PUBLICAÇÃO DE LICITAÇÕES. Manual de Procedimentos

Freedom Software. Sistema de Representação. Freedom Software Sistema de Representação Página 1

,QWURGXomRDR(GLWRUGH $SUHVHQWDo}HV3RZHU3RLQW

Estatística no EXCEL

Informática básica Telecentro/Infocentro Acessa-SP

Prof Rafael Guem Murakami

APOSTILA DE INFORMÁTICA MICROSOFT WORD 2012

Compositor de Impressão do QGIS

Como fazer um jogo usando o editor de apresentação

Vamos criar uma nova Página chamada Serviços. Clique em Adicionar Nova.

Conectar diferentes pesquisas na internet por um menu

Menus Personalizados

Prefeitura de Volta Redonda Secretaria Municipal de Educação Departamento Pedagógico Núcleo de Tecnologia Educacional Volta Redonda NTM

G-Bar. Módulo Básico Versão 4.0

Guia de Início Rápido

MANUAL DO PEP ATUALIZADO EM PROPOSTA ELETRÔNICA DE PREÇOS REFERENTE A VERSÃO DO PEP:

Barra de Títulos. Barra de Menu. Barra de Ferramentas. Barra de Formatação. Painel de Tarefas. Seleção de Modo. Área de Trabalho.

Treinamento - Union Web

Microsoft Office PowerPoint 2007

AULA 2 Planos, Vistas e Temas

Para a utilização do WordPress são recomendadas as seguintes configurações:

UNIPAMPA Universidade Federal do Pampa. Núcleo de Tecnologia da Informação (NTI)

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

Guia do Usuário. idocs Content Server v

FCT Faculdade de Ciências e Tecnologia Serviço Técnico de Informática STI SGCD Sistema Gerenciador de Conteúdos Dinâmicos

INTRODUÇÃO À INFORMÁTICA GRUPO DE PESQUISA LEITURA NA TELA

Manual de Instalação SIM/SINASC

Criação de Formulários através do Access. Como criar formulários no Access para uma tabela do Banco de Dados:

Manual do Usuário Publicador

Recuperar Mensagens Excluídas no Office 365

Manual do Usuário CMS WordPress Versão atual: 3.0

Microsoft PowerPoint XP. Módulo I I

Do Word 2007 para o Office 365 para empresas

Dialux evo Cálculo de Iluminação artificial para ambientes

OpenOffice.org Impress

Microsoft Office Outlook Web Access ABYARAIMOVEIS.COM.BR

Unidade III 1. APRESENTANDO PLANILHAS ELETRÔNICAS. 1.1) Conceito de Planilha Eletrônica. 1.2) Inicializando o Excel e o Calc

Noções de Informática

Instituto Politécnico de Tomar Escola Superior de Tecnologia de Abrantes Curso Superior de Comunicação Social. Exercicio Nº 4 de Word

CRIANDO GRUPO DE CANAIS

PROGRAMAÇÃO EM C# COM VISUAL STUDIO.NET

Usando o NVU Parte 2: Inserindo imagens

Amostra OpenOffice.org 2.0 Writer SUMÁRIO

ALBUM DE FOTOGRAFIAS NO POWER POINT

Manual de AraWord 1.0.5

Entendendo as janelas do Windows Uma janela é uma área retangular exibida na tela onde os programas são executados.

Medical Office 2015 Instruções de Instalação e Configuração

..:Sgi-Plus:.. Manual completo do sistema de vendas Sgi-plus. Site..:

Questões de Informática Prova Comentada Ministério Público da União

..:Restaurantes:.. Manual completo do sistema de vendas Restaurantes. Site..:

Treinamento em BrOffice.org Writer

PRINCÍPIOS DE INFORMÁTICA PRÁTICA OBJETIVO 2. BASE TEÓRICA 3. SEQÜÊNCIA DA AULA. 3.1 Iniciando o PowerPoint

Figura 1: tela inicial do BlueControl COMO COLOCAR A SALA DE INFORMÁTICA EM FUNCIONAMENTO?

CRIANDO TEMPLATES E LEGENDAS

Sumário - Power Point

Word 1 - Introdução Principais recursos do word A janela de documento Tela principal

Lync Acessando o Lync Web App

Como incluir artigos:

IMPRESSÃO DE DADOS VARIÁVEIS usando Adobe InDesign e OpenOffice.org

Neste tópico, você aprenderá a criar facilmente um banco de dados para uma nova empresa e a definir configurações comuns de uma empresa no SAP

Transcrição:

Access ListBar Artigo para Access 2000, XP e 2003 Pré-requisitos: Conhecimentos de Access e VBA Paulo Sergio Sarraino* A LISTBAR (OU MENU VERTICAL) APARECEU COM ALGU- MAS VERSÕES MAIS ANTIGAS DO OUTLOOK. O CONCEITO DELA É ABRIGAR FUNÇÕES SEMELHANTES DENTRO DE GRU- POS QUE, QUANDO CLICADOS, ABREM-SE VERTICALMEN- TE PARA ACESSAR AS FUNÇÕES RELACIONADAS. COMO UMA BARRA DE MENU, PORÉM NA VERTICAL, EXIBE TEX- TOS E ÍCONES COM CONFIGURAÇÕES DIFERENTES E ES- SES ELEMENTOS PODEM SER REORDENADOS E REAGRUPA- DOS LIVREMENTE, A GOSTO DO USUÁRIO. 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 manutenção dos dados. Mas esse componente nunca foi inserido no Access (até a versão 2003) para uso em sistemas construídos nessa plataforma. Surgiram, então, através 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 FórumAccess, localizei alguns deles com custos tanto para o desenvolvimento quanto para o uso desses componentes. Daí pensei: é possível desenvolver algo semelhante apenas usando os objetos do Access? Mãos à obra, pesquisas, testes, e hoje posso dizer: sim! Com algumas limitações, porém bem funcional. Nesta matéria vou demonstrar isso com 2 exemplos: um usando apenas textos (com uma caixa de listagem) e outro usando ícones/textos (com um subformulário). No arquivo disponibilizado para essa matéria há, além do mdb de demonstração, diversos bmp s para os ícones; ao descompactar o zip, mantenha todos os arquivos na mesma pasta. Atenção, é importante destacar que a versão do Access seja 2000 ou posterior, pois há algumas referências que não são suportadas em versões anteriores (usadas no exemplo com subformulário). DISPONÍVEL PARA DOWNLOAD LISTBAR.ZIP (ACCESS 2000, XP E 2003) Disponível para download em www.forumaccess.com.br A NECESSIDADE Em sistemas que desenvolvemos sempre há cadastros que considero como básicos: Cidades, Estados, Produtos, Funcionários, 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 opções para cada cadastro necessário e um subformulário não-vinculado. Conforme clicamos no item do grupo de opções o subformulário exibe o formulário desenvolvido para o item (tipo datasheet) ou podese até mesmo exibir a própria tabela ou consulta dos dados (conceito usado nessa matéria). Essa estrutura fornece uma interface única, consistente e fácil para o usuário nesta parte do sistema. O problema surge quando temos muitos cadastros para gerenciar de tal forma que o espaço físico de um formulário não comporta todos os itens no grupo de opções. O layout fica comprometido e perde a eficiência. Com uma ListBar seria possível exibir todos os itens de cadastros que precisamos, agrupando-os sob alguma classificação e permitindo adotar o mesmo estilo de layout citado. Para começar, é necessária 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 Descrição IDGrupo Número (Inteiro) [chave] Identifica o Grupo Item Texto (20) [chave] Identifica o Item do Cadastro Objeto Texto (20) Identifica o Objeto que deverá ser aberto quando o Item selecionado Tabela 1 Estutura da tabela tbl_listbar Nos dados da tabela, observe que existem 4 grupos identificados (de 1 a 4) e uma tabela física correspondente para cada Objeto citado. Algumas delas vieram do banco de dados Northwind Traders, de outros projetos, e usei também o assistente de criação de tabela do próprio Access para enriquecer ainda mais esta matéria. Para esse exemplo, a estrutura e os dados de cada tabela dessas não têm importância. LISTBAR COM CAIXA DE LISTAGEM Esta interface corresponde ao formulário frm_cadastros_ listbox. Veja a Figura 1 com a estrutura do formulário na primeira fase da construção. 23

Access Access Avançado Avançado Figura 1 - Estrutura do formulário na primeira fase da construção Segue um descritivo dos objetos utilizados: Objeto Tipo Descrição boxgrupo caixa Efeito visual para a ListBar cmd1 até cmd4 botões de comando Exibe os grupos desejados (a nomenclatura padronizada facilita a manipulação dos botões na tela) lstgrupo caixa de listagem Exibe os itens do grupo selecionado através de pesquisa na tabela tbl_listbar Tabela 2 - Objetos utilizados Após configurar esses objetos, coloque-os sobrepostos para montar o layout da ListBar e insira um subformulário ao lado. Veja a fase 2 na próxima figura. Figura 2 - Fase 2 Para movimentar os botões de Grupos, reposicionar e atualizar a caixa de listagem, há uma função chamada ListBar(Grupo), que pode ser usada para quantos grupos forem necessários. Veja, em cada botão, a propriedade Ao clicar (On Click). Figura 3 - Propriedade Ao clicar (On Click) Detalhando melhor - a função ListBar é responsável por: Receber, através do parâmetro i, o código de grupo clicado. Identificar, numa matriz (matgrupo), os valores de Top de cada botão de grupo que criamos. Ocultar a caixa de listagem lstgrupo. Alinhar, no topo da caixa boxgrupo, os botões de grupo até o grupo clicado (usando um For... com Step -30, teremos um efeito de deslize da posição atual do botão até o limite possível do topo da caixa boxgrupo). Alinhar, na base da caixa boxgrupo, os botões de grupo depois do grupo clicado (também usando um For... com Step 30 para termos o efeito de deslize do botão até o limite possível 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 botão de grupo clicado e reexibi-la atualizada. Function ListBar(i As Integer) Dim matgrupo(1 To 4) As String Dim j As Integer, p As Long, X As Long Dim strlistbox As String 'matriz de grupos matgrupo(1) = Me.cmd1.Top matgrupo(2) = Me.cmd2.Top matgrupo(3) = Me.cmd3.Top matgrupo(4) = Me.cmd4.Top 'esconde opções Me.lstGrupo.Visible = False 'alinha grupos até o selecionado p = Me.boxGrupo.Top For j = 1 To i For X = Me("cmd" & j).top To p Step -30 Me("cmd" & j).top = X Me.Repaint p = p + Me("cmd" & j).height 'alinha grupos após o selecionado p = Me.boxGrupo.Height + 190 For j = UBound(matGrupo) To i + 1 Step -1 For X = (Me("cmd" & j).top) To (p - Me("cmd" & j).height) Step 30 Me("cmd" & j).top = X Me.Repaint p = p - Me("cmd" & j).height 'monta opções conforme o grupo strlistbox = "SELECT Item, Objeto " & _ "FROM tbl_listbar " & _ "WHERE IDGrupo = " & i & " " & _ "ORDER BY Item;" 'reexibe opções With Me.lstGrupo.Top = Me("cmd" & j).top + Me("cmd" & j).height.rowsource = strlistbox.visible = True End Function 24 SETEMBRO/OUTUBRO 2006 - REVISTA Nº 74 WWW.FORUMACCESS.COM.BR

Para iniciar a nossa ListBar o formulário tem no evento Ao Abrir (On Open) uma chamada à função ListBar com o parâmetro de grupo igual a 1 e assim, exibe o primeiro grupo automaticamente. As outras rotinas que precisamos são: o cmdfechar_click (o botão que fecha o formulário), o Form_Load (para iniciarmos o formulário com o primeiro cadastro disponível já selecionado) e o lstgrupo_afterupdate (para atualizarmos o SourceObject do subformulário conforme alteramos a seleção do item na caixa de listagem lst_grupo). Vamos primeiro trabalhar com o subformulário que exibirá os ícones ( frm_itemlist Bar ), veja na figura 5. Private Sub cmdfechar_click() DoCmd.Close Private Sub Form_Load() Me.lstGrupo.Selected(0) = True lstgrupo_afterupdate Private Sub lstgrupo_afterupdate() With Me.subfCadastros.SourceObject = "Table." & Me.lstGrupo.Column(1).SetFocus DoCmd.RunCommand accmdselectrecord Veja agora o formulário em execução. Clique sobre cada grupo e veja como os controles são atualizados dinamicamente na tela. É possível perceber que facilmente podem-se criar mais grupos e manipular os itens desses grupos apenas relacionando corretamente a tabela tbl_listbar com os botões do formulário. A função ListBar varrerá todos os itens encontrados conforme os critérios de nomenclatura para os objetos definidos. Figura 5 - Subformulário que exibirá os ícones Defini um máximo de 9 ícones por grupo. Por isso, temos aqui 9 objetos do tipo Imagem formatados e posicionados como vimos na figura anterior. Elas não possuem bordas, não indicam nenhuma imagem inicial e são nomeadas seguindo o formato Item<n> (de 1 a 9) para facilitar a atualização dos objetos. Cada objeto Imagem possui chamadas para as rotinas MouseClick(n), no evento Ao Clicar (On Click), para simular o click do mouse como se fosse um botão de comando e realizar a atualização do subformulário de cadastros; e a MouseMove(n), no evento Ao Mover Mouse (On MouseMove), para simular o efeito visual de um botão alterando as bordas da Imagem. Para alterar as bordas das imagens, usa-se a propriedade SpecialEffect, onde cada número corresponde a um tipo de borda suportada pelo objeto. Veja na tabela 3 a explicação extraída do próprio Help do Access. Figura 4 - Formulário em execução LISTBAR COM SUBFORMULÁRIO Esta interface corresponde aos formulários frm_cadastros_ subform e frm_itemlistbar. O uso de subformulário permite usar ícones, já que, nele, podemos construir um layout mais parecido com o que o Outlook exibia. Para desenvolver essa interface, a complexidade aumenta um pouco, mas não são necessárias muitas alterações nas rotinas que já desenvolvemos. Por isso, recomendo duplicar o formulário frm_cadastros_listbox e realizar as mudanças que descreverei em seguida. Configuração Visual Basic Descrição Plano 0 O objeto aparece plano, com as cores padrão do sistema ou cores personalizadas que tenham sido definidas no modo de design. Alto relevo 1 O objeto tem um brilho acima e à esquerda e uma sombra embaixo e à direita. Baixo relevo 2 O objeto tem uma sombra acima e à esquerda e é realçado embaixo e à direita. Esboçado 3 O objeto tem uma linha em baixo relevo ao redor do controle. Sombreado 4 O objeto tem uma sombra abaixo e à direita do controle. Cinzelado 5 O objeto tem uma linha em baixo relevo, abaixo do controle. Tabela 3 Explicação sobre bordas no Access Option Compare Database Option Explicit Dim ctl As Control Sub MouseClick(i As Integer) If ctl.specialeffect = 2 Then 25

Access Access Avançado Avançado If ctl.specialeffect = 1 Then ctl.specialeffect = 2 Me("Item" & i).specialeffect = 2 With Me.Parent!subfCadastros.SourceObject = "Table." & Me("Item" & i).tag.setfocus DoCmd.RunCommand accmdselectrecord Sub MouseMove(i As Integer) If ctl.specialeffect <> 2 Then If Right(ctl.Name, 1) = i Then ctl.specialeffect = 1 Como teremos ícones e quantidades de ícones diferentes para cada grupo, há a função UpdateItens para que as imagens sejam atualizadas e sincronizadas com a ListBar. Essa rotina substitui o RowSource dinâmico do lstgrupo, que não teremos nesse exemplo. Detalhando melhor a função, ela é responsável por: Receber o grupo clicado através do parâmetro X. Construir um RecordSet (com referência ao DAO 3.6) da tabela tbl_listbar, conforme o parâmetro X informado, respeitando o limite de até 9 ícones no formulário. Atribuir à propriedade Picture de cada imagem o arquivo bmp criado conforme a concatenação dos parâmetros. Atribuir à propriedade Tag de cada imagem o valor do campo Objeto relacionado (para ser usado posteriormente na atualização do subformulário subfcadastros). Ocultar as imagens não utilizadas Redimensionar as imagens conforme as configurações definidas e ajustar a altura da seção Detalhe para não sobrar espaço no final do formulário (otimizando a barra de rolagem do formulário). E ainda, caso o subformulário de Cadastros (subfcadastros) esteja exibindo algum item, localizar o ícone correspondente e alterar suas bordas para indicar que o botão foi pressionado (isso não era necessário no exemplo com a caixa de listagem, pois o item selecionado fica guardado na memória). Public Function UpdateItens(X As Integer) Dim rst As Recordset Dim i As Integer, j As Integer, qt As Integer 'quantidade de ícones qt = 9 Set rst = CurrentDb.OpenRecordset("SELECT Item, Objeto " & _ "FROM tbl_listbar " & _ "WHERE IDGrupo = " & X & ";", dbopensnapshot) i = 1 With rst Do While Not.EOF Me("Item" & i).picture = Application.CurrentProject.Path & "\img" & Mid(!Objeto, 5) & ".bmp" Me("Item" & i).tag =!Objeto Me("Item" & i).visible = True i = i + 1 If i > qt Then Exit Do.Move Loop.Close j = i For i = i To qt Me("Item" & i).visible = False 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 Me("Item" & i).top = 0 Me.Section(0).Height = ((j - 1) * Me.Item1.Height) + 300 If InStr(Me.Parent!subfCadastros.SourceObject, ctl.tag) > 0 Then ctl.specialeffect = 2 End Function Agora voltemos ao formulário de Cadastros que, após a duplicação, chamei de frm_cadastros_subform. Como dito antes, as alterações são simples. Primeiro, apague a caixa de listagem (e a sua rotina AfterUpdate) e, no lugar dela, insira um subformulário do objeto frm_itemlistbar (sem vínculos de campos filho/mestres). Pra facilitar, chame-o de frm_itemlistbar e formate-o como a figura 6. Figura 6 Formatando o frm_itemlistbar Para melhorar a visualização, aumentei a largura da boxgrupo e dos botões de Grupo. No evento Form_Load, exclua as linhas existentes e inclua apenas uma, chamando a função MouseClick do subformulário para o grupo 1, conforme código: Private Sub Form_Load() Me.frm_ItemListBar.Form.MouseClick (1) Acrescente também uma rotina para o evento Ao Mover Mouse da seção Detalhe (Detail_MouseMove) para realinhar as bordas das imagens quando navegamos pelo formulário: 26 SETEMBRO/OUTUBRO 2006 - REVISTA Nº 74 WWW.FORUMACCESS.COM.BR

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 Para a função ListBar, faça as seguintes alterações: Mude as referências da caixa de listagem lstgrupo para o subformulário frm_itemlistbar. Exclua a definição e a montagem da variável strlistbox. Mude a linha.rowsource = strlistbox para.form. UpdateItens (i). Atenção para o acesso a propriedades e métodos, já que utilizei blocos With... em algumas partes do aplicativo. Compile e veja o formulário em execução (figura 7). Clique sobre cada grupo e veja como os controles são atualizados dinamicamente na tela. Todas as observações notadas no exemplo com a caixa de listagem também podem ser aplicadas aqui. Figura 9 Modificando Nível de Segurança Depois de mudar o nível de segurança para Baixo, o Access mostrará a mensagem de alerta da figura 10. Figura 10 - Mensagem de alerta Após a confirmação, uma nova mensagem indica que a aplicação precisa ser reiniciada (fechar e abrir novamente o Access). Veja na figura 11. Figura 11 Mensagem para reiniciar a aplicação Figura 7 - Formulário em execução OPS, ALGO ESTRANHO OCORREU, O QUE EU FIZ DE ERRADO? Mesmo que você tenha seguido corretamente os passos demonstrados neste exemplo, poderá se deparar com a tela seguinte ao abrir o formulário frm_cadastros_subform e passar o mouse sobre a barra lateral (figura 8). Figura 8 Mensagem de erro A explicação para o erro acima está na própria ajuda que obtemos ao clicar no botão Show Help dessa tela. O problema ocorre, pois o nível de segurança do Access está configurado para Médio ou Alto e o service pack 8 ou superior do Jet não está instalado. Para começar, feche a caixa de mensagem. Ela poderá aparecer novamente se você mover o mouse sobre a barra lateral ou clicar em um de seus botões. Para solucionar o problema, você pode escolher entre instalar a atualização do Service Pack mais recente (recomendado) ou mudar o nível de segurança do Access para Baixo. Note que essa última opção expõe o computador a macros maliciosos, portanto, fique bastante atento para o risco envolvido neste procedimento. O nível de segurança pode ser verificado ou modificado através do menu Ferramentas Macro Nível de segurança (figura 9). Ao mudar o nível de segurança para Médio ou Alto, o Access poderá mostrar um novo alerta incentivando você a instalar o Microsoft Jet 4.0 Service Pack 8. CONCLUSÃO Usando o subformulário, temos mais liberdade para a construção dos itens da ListBar, pois podemos utilizar ícones e posicioná-los aonde for desejado, porém, usando a caixa de listagem, temos uma manutenção 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 série de tipos de cadastros, mas pode-se usar esse recurso para outras situações semelhantes, como relatórios, interfaces e menus de controle. Espero que esta matéria ilumine o caminho de diversos projetos semelhantes para serem aprimorados com as técnicas aqui apresentadas. Fiquem à vontade para mandar idéias, sugestões e críticas. Bom estudo a todos! * Paulo Sergio Sarraino (pss@sarraino.com.br) é analista de sistemas e sócio da Sarraino Systems. Possui graduação de Tecnologia em Processamento de Dados pela FASP (1997) e pós-graduação em Análise de Sistemas c/ Ênfase em Gerência de Projetos pela FIAP (2000). Atua como consultor em Análise e Desenvolvimento de Sistemas em ambiente MS Office e Internet (especialista em Access, VBA e ASP) há mais de 10 anos. 27