Вы находитесь на странице: 1из 22

versão 1.13.

00

1
Conteúdo

Apresentação................................................................................................................................................. 3
Compatibilidade ............................................................................................................................................ 4
Entenda as versões do componente ............................................................................................................ 4
Atualizações ................................................................................................................................................... 4
Suporte .......................................................................................................................................................... 5
Custo .............................................................................................................................................................. 5
Instalando o componente ............................................................................................................................. 6
Módulos e Funções: entenda o funcionamento ........................................................................................... 8
ADOCon ..................................................................................................................................................... 9
ADOConSeg.............................................................................................................................................. 11
Convert .................................................................................................................................................... 12
Cripto ....................................................................................................................................................... 12
Frm........................................................................................................................................................... 13
Mouse ...................................................................................................................................................... 14
Msg .......................................................................................................................................................... 15
Rede ......................................................................................................................................................... 16
Sound ....................................................................................................................................................... 17
Tratar ....................................................................................................................................................... 17
Valida ....................................................................................................................................................... 18
Wind ........................................................................................................................................................ 19
Prn............................................................................................................................................................ 20
System ..................................................................................................................................................... 20
Agradecimentos........................................................................................................................................... 22
Sobre a Kartoffel .......................................................................................................................................... 22

2
Apresentação

O componente VBA Access Collection , é uma coletânea dos melhores códigos para parametrização VBA
encontrados na internet, e reunidos aqui, em um só módulo.

Ele foi desenvolvido com o intuito de permitir que, extensas linhas de códigos VBA, muitas vezes
complexas, fossem parametrizadas de tal forma que permitisse ao programador Access, sua utilização
apenas na parametrização do comando, evitando assim a perda de tempo no desenvolvimento do código,
mas sim, investir o seu tempo no desenvolvimento do projeto.

Também foi desenvolvido para permitir atualizações rápidas, sem que para isso, fosse necessário atualizar
todo o projeto.

Ele é um extensão do Microsoft Access, desenvolvido no formato .accde e .mde, para integração com a
aplicação Access.

O componente, na sua atual versão 1.0, possui 14 módulos básicos, totalizando 34 funções disponíveis,
que poderão ser utilizadas na sua aplicação, e distribuídas livremente, desde que faça parte integrante da
sua aplicação.

A meta da Kartoffel System Developers é realizar atualizações periódicas e gratuitas do componente, até
que a ferramenta sustente um nível considerável de funções.

Com isso, o nosso objetivo é tornar esse componente uma biblioteca única com funções VBA para o
Microsoft Access, permitindo ao programador, que funções corriqueiras, não poluam os módulos e códigos
comum dos projetos em desenvolvimento, uma vez que os módulos não ficam visíveis na estrutura do seu
projeto.

Os comandos foram re-parametrizados permitindo uma interação mais simples entre o programador e o
código utilizado, realizando traduções aonde foi possível parametriza-las.

Espero que o fruto desse trabalho, seja de grande ajuda a todos os aficionados por Microsoft Access, que
tentam fazer dessa ferramenta, não só popular, mas eficiente e robusta.

Bom estudo a todos.

Jeferson Braz

3
Compatibilidade
O componente foi desenvolvido para trabalhar com Windows nas plataformas de 32 ou 64 bits. Contudo a
versão atual foi parametrizada apenas para trabalhar com o Office de 32 bits.

O componente possuir duas versões distintas:

Collection.accde para a versão Access 2007/2010


Collecton.mde para a versão Access 2003

Não há modulo de compatibilidade para verões anteriores a versão 2003 do Access.

Entenda as versões do componente


Padronizamos a versão do componente em três casas decimais. Cada um deles representa uma operação
que foi realizada no modulo para permitir identificar a versão que está atualizando para o seu cliente.

1ª Casa Decimal: Identifica a versão principal do componente. A modificação ocorrerá quanto alguma
mudança significativa ocorrer na aplicação, como logística de operação ou versões de compatibilidade;
2ª Casa Decimal: identifica a quantidade de módulos e ou funções que foram incluídos no componente;
3ª Casa Decimal: identifica a quantidade de correções que foram realizados nos módulos e ou funções,
mas não específica em quais foram realizados.

Exemplo: 1.02.03

Identifica que foram realizadas duas inclusões no componente e foram realizadas três correções.

Atualizações
Os usuários da versão registrada do componente, receberam periodicamente entre 30 a 60 dias,
atualizações gratuitas do componente.

Cabe a Kartoffel determinar quais os módulos farão parte do componente, e o melhor momento de
encerrar a atualização da ferramenta. Isso se dará quando consideramos que o componente atingiu a meta
de atender pelo menos com módulo básico de desenvolvimento, 70% dos módulos comum da aplicação.

Usuários registrados e não registrados, poderão solicitar inclusão de componentes há biblioteca, sendo a
respectiva solicitação avaliada, e uma vez implantada, disponibilizado manual, correções e suporte.

Não realizaremos modificações personalizadas para atender a necessidades especificas de programadores.


O objetivo do componente, e possibilitar uma biblioteca comum de funções que permitam uma
padronização, atendendo assim inúmeros usuários.

4
Suporte
Usuários registrados do componente terão suporte gratuito, vitalício e ilimitado sobre a utilização do
componente, bem como atualizações periódicas do mesmo.

O suporte deverá ser aberto através de um ‘Ticket de Chamado’ em nosso site. Isso permitirá não só o
acompanhamento da sua solicitação, bem como permitirá manter um histórico da respectiva solicitação.

Alem do sistema de abertura de ticket, você conta ainda com um fórum de discussão dos componentes,
onde você poderá trocar informações e experiências da utilização dos componentes com outros usuários.

Para abrir um chamado ou utilizar nosso fórum de discussão, acesse o menu ‘Suporte’ em nossa página no
endereço www.kartoffel.com.br.

O prazo médio do atendimento dos tickets é em média de 72 horas. Solicitações de suporte através de e-
mail não terão prioridade de atendimento, devendo toda solicitação ser realizada através do nosso site.

Custo
Para manter a atualização do módulo, será cobrada uma única vez, valor pela aquisição do modulo
registrado, a fim de se manter as respectivas atualizações e suporte pelo componente.

A versão registra do componente poderá ser adquirida por R$ 20,00 (vinte reais) através da F2B no link
https://f2link.f2b.com.br/pedido/FP.asp?id=0002359081

Deixamos claro que, os valores cobrados são respectivos aos trabalhos realizados para padronização e
mantenimento do acervo, atualização do modulo e manual, e não pelos códigos, que foram fornecidos ou
disponibilizados gratuitamente, de forma direta ou indireta, por seus respectivos desenvolvedores.

5
Instalando o componente
O componente VBA Access Collection poderá ser instalado em qualquer pasta na unidade de disco, sendo
recomendada, instalação na pasta da sua aplicação.

O seu nome também poderá ser alterado sem interferir no funcionamento do componente, podendo
assumir qualquer nome que achar mais apropriado para sua aplicação.

Diferente dos outros componentes, não há necessite de registrá-la no Windows. Basta referenciá-lo no seu
projeto, através do Visual Basic Aplication, em ‘ferramentas’:

6
Após a instalação do componente você deverá importar a tabela “config” do arquivo ACCDE/MDE para
sua aplicação, para o correto funcionamento do módulo.

A tabela é composto pelos campos ‘Database’ e ‘AppName’.

O campo ‘Database’ é responsável por receber a informação da sua base de dados, necessária para o
correto funcionamento das funções utilizadas pelo ‘Data Access Objetc’.

O campo ‘AppName’ é responsável por receber o titulo da sua aplicação ou qualquer outra informação que
achar necessária. O conteúdo desse campo será exibidos nas caixas de mensagem da aplicação.

Após realizar a instalação e as devidas configurações, sua aplicação já está pronta para utilizar o VBA Access
Collection.

Qualquer duvida com relação a instalação ou a utilização das funções, conte o suporte da Kartoffel.

7
Módulos e Funções: entenda o funcionamento
A parametrização dos módulos foi feita para permitir que você visualize de imediato todas as funções
disponíveis nos módulos.

Embora possa ser utilizada, não há necessidade de utilização da instrução CALL, sendo suficiente
mencionar o nome do módulo em seu projeto VBA, e seleciona a função deseja, e passar os seus
respectivos parâmetros.

Quando você informar o nome do módulo, será exibida uma lista com as funções disponíveis. Após a
seleção da função, serão passados os parâmetros segundo a programação da função.

Exemplo da parametrização:

Dim sFile
sFile = Application.CurrentProject.Path & "\sons\abertura.wav."

Sound.Play (sFile)

As vantagens de se utilizar o componente, e que você poderá realizar upgrades apenas do componente,
sem a necessidade de atualizar toda sua aplicação.

Nota: a parametrização irá varia segundo o modulo e função escolhida. Algumas funções não tem
parametrização.

8
ADOCon
O módulo ADOcon foi desenvolvido para permitir a conexão entre front-end e back-end sem a necessidade
de vinculação de tabelas através do MS-Jet, utilizando o ADO.

As vantagens em utilizar o ADO no lugar do MS-Jet:

 Não há conexão permanente com a tabela deseja. A conexão é realizada somente no momento de
troca de informações, e em seguida fechada. Com isso, em teoria, se ganha uma conexão
praticamente ilimitada, de usuários conectados simultaneamente;
 O back-end em Access corre menor risco de se corromper, visto que os usuários não estão
conectados permanentemente;
 O processo pode ser utilizado em qualquer tipo de banco de dados, sem necessidade de mudar a
forma de conexão, sendo suficiente a parametrização do driver de conexão

Ele trabalha na utilização de um formulário desacoplado aonde os dados são carregados e manipulados
através de uma ‘Caixa de Listagem’.

O primeiro requisito é que o campo do formulário tenha o mesmo nome da tabela. O segundo é que os
campos que foram alimentados no formulário, deverão ter propriedade ‘Marca’ com os valores 1 ou 2.

Isso foi utilizado para que o sistema possa distinguir os campos do seu formulário em contra partida com o
da tabela, sem que sejam necessários outros ajustes, não havendo interferência de campos não
relacionados.

Para um correto funcionamento em seu formulário desacoplado, será necessária a utilização das funções
abaixo descriminadas.

Todos os parâmetros da função são passados através de um Select.

9
Exemplo:

Dim sSQL
sSQL = "Select id_cli, nome_cli from clientes where nome_cli Like '" & Me.sClientes & "' & '*' order by
nome_cli"

ADOCon.Alimenta_ListaB (sSQL)

Função Descrição
Utilizado para carregar os dados desejados, e alimentá-los em uma caixa de
Alimenta_ListaB combinação. Esse comando exibe uma barra de progresso e contagem dos
registros durante o seu carregamento.

Utilizado para carregar os dados desejados, e alimentá-los em uma caixa de


combinação. Esse comando não exibe uma barra de progresso e contagem dos
Alimenta_Lista registros durante o seu carregamento.
Nessa função os parâmetros são passados através de um Select para alimentar
o seu recordeset.

Seleciona um registro carregado na caixa de listagem, e alimentar os campos


Dados_Selecionado
relacionados no formulário

Limpa_Campos Limpa as informações dos campos.

Salvar_Dados Salva o registro alterado no formulário.

Adicionar_Dados Adiciona um novo registro na tabela.

Excluir_Dados Exclui um registro na tabela

Na aplicação exemplo, foram carregados 3.000 registros em uma caixa de combinação, em um tempo
médio de 42,75 segundos.

10
Nota: é necessário realizar a referência aos seguintes objetos:
Microsoft ActiveX Data Objects x.x library
Microsoft ADO Ext. x.x DLL and Security

Exemplo disponível: formulário ‘Clientes’ demonstra a utilização das funções

ADOConSeg
O módulo ADOconSeg é uma extensão do ADOCon para permitir a usuários que utilizam banco de dados
.accdb protegido por senha, se conectarem a base de dados. Observe que, foi colocado os sufixo ‘Seg’ na
função para identificar que deverá passar o parâmetro ‘senha’.

Função Descrição
Utilizado para carregar os dados desejados, e alimentá-los em uma caixa de
Alimenta_ListaBSeg combinação. Esse comando exibe uma barra de progresso e contagem dos
registros durante o seu carregamento.

Utilizado para carregar os dados desejados, e alimentá-los em uma caixa de


combinação. Esse comando não exibe uma barra de progresso e contagem dos
Alimenta_ListaSeg registros durante o seu carregamento.
Nessa função os parâmetros são passados através de um Select para alimentar
o seu recordeset.

Seleciona um registro carregado na caixa de listagem, e alimentar os campos


Dados_SelecionadoSeg
relacionados no formulário.

Salvar_DadosSeg Salva o registro alterado no formulário.

Adicionar_DadosSeg Adiciona um novo registro na tabela.

Excluir_DadosSeg Exclui um registro na tabela

Exemplo:

Dim sSQL, mSenha


mSenha=”123456”
sSQL = "Select id_cli, nome_cli from clientes where nome_cli Like '" & Me.sClientes & "' & '*' order by
nome_cli"

ADOCon.Alimenta_ListaBSeg sSQL, mSenha

11
Convert
O módulo Convert disponibiliza funções de conversões de tipos de dados.

Função Descrição
BinaryToDecimal Converte uma numero binário em um numero decimal

DecimalToBinary Converte um numero binário em um numero decimal

Exemplo:

MsgBox Convert.BinaryToDecimal(10001010)

Exemplo disponível: formulário ‘Geral’ demonstra a utilização das funções

Cripto
O módulo Cripto disponibiliza funções para Criptografia e Descriptografia simples.

O módulo foi desenvolvido com base em informações encontradas na internet e em fóruns de discussão,
tendo sua função modificada para dificultar a utilização dos códigos encontrados, com relação ao código
utilizado no componente.

Função Descrição
Encrypt Criptografa dados

Decrypt Descripgrafa dados

Exemplo:

MsgBox Cripto.Encrypt("Projeto")

Exemplo disponível: formulário ‘Geral’ demonstra a utilização das funções

12
Frm
O módulo Frm disponibiliza funções desenvolvidas para o trabalho com formulários, vinculados ou não.

Função Descrição
Transparencia Permite tornar transparentes objetos do formulário ativo

Realiza a verificação para os preenchimentos obrigatórios de campos no


formulário. Para o correto funcionamento da função, os campos que forem de
preenchimento obrigatório, deverão ter a propriedade ‘Marca’ com o valor
2 ou 3.
O campo que for de preenchimento obrigatório encontrado vazio emitirá
mensagem ao usuário, recebera automaticamente o foco, e será destacado na
Verifica_Preenchimento
cor vermelha para melhor visualização pelo usuário. A propriedade ‘Texto da
Barra de Status’ deverá ser preenchida com o valor que devera ser retornado
ao usuário sobre o preenchimento do respectivo campo.
A função conta ainda com a variável NotExit. Atraves dela será possível abortar
o procedimento seguinte, quanto trabalhando em conjunto com outra função.
A variável é chamada através do parâmetro: Frm.NotExit

Permite mover o foco para o registro selecionado em uma ‘caixa de listagem’


Filtro
ou uma ‘caixa de combinação’

Permite realizar a tradução do seu formulário em tempo de execução. A função


trabalha sempre da tradução do ‘portugues’ para o idioma desejado, com base
em uma tabela interna que deverá ser alimentada, conforme os dados da sua
aplicação. Você deverá passar o parâmetro do idioma a ser utilizado pela
função.
Traduzir
Uma vez executada, a função percorrerá o seu formulário e realizará a tradução
de todos os labels.
Para o correto funcionamento da função, requer a construção da tabela
‘dicionario’ que poderá ser importada para o seu projeto.

A função percorre o formulário atual e extrai as informações dos label, e


alimenta a tabela ‘dicionario’, permitindo com isso, você preocupar-se apenas
Alimenta_Dicionario
em alimentar os campos dos demais idiomas com as respectivas traduções. Não
há parâmetros para essa função.

Exemplo:

Private Sub Salvar_Click()


Dim MyIco1 As String
Dim MyIco2 As String
MyIco1 = Application.CurrentProject.Path & "\img\eye_scan.ico"
MyIco2 = Application.CurrentProject.Path & "\img\alarm.ico"

13
Dim Resp

Resp = MSG.Personalizada("Salvar os registros?", vbYesNo, NomeAplicativo, , , MyIco1, MyIco2, , , , , ,


"Desejo Salvar", "Não quero")

If Resp = 6 Then

Frm.Verifica_Preenchimento

If Frm.NotExit = 1 Then
DoCmd.CancelEvent
Exit Sub
End If

End If

End Sub

Exemplo disponível: formulário ‘Clientes3’ demonstra a utilização das funções

Mouse
O módulo Mouse disponibiliza funções para habilitar e desabilitar a “roda do mouse” através de DLL
MouseHook.dll.

Função Descrição
Desabilita_Roda Desabilita a roda do mouse

Habilita_Roda Habilita a roda do mouse

Permite atribuir um cursor ao seu ponteiro do mouse, contando com 15 opções


Cursor
de ponteiro disponíveis.

Exemplo:

Mouse.Cursor APPSTARTING

Exemplo disponível: formulário ‘Geral’ demonstra a utilização das funções

14
Msg
O módulo Msg disponibiliza funções que permitem exibir caixa de mensagens personalizadas

A API foi traduzida para permitir fácil utilização da função proposta:

Função Descrição
Permite personalizar o comando MSGBOX padrão do Access,com ícones e
Personalizada
substituição ao retorno padrão do botão escolhido.

Permite exibir uma caixa de mensagem para a entrada de dados de forma que
possa atribuir uma mascara de entrada, permitindo ainda a limitação de
caracteres na masca de entrada.

Estão disponíveis as seguintes mascaras de entrada:


InputBoxEx
 Senha
 Numérica
 Maiúscula
 Minúscula

Exemplo:

Dim Resp
Dim MyApp
Dim MyIco1 As String
Dim MyIco2 As String

MyIco1 = Application.CurrentProject.Path & "\img\eye_scan.ico"


MyIco2 = Application.CurrentProject.Path & "\img\alarm.ico"
MyApp = "Minha Aplicação"

Resp = MSG.Personalizada("Salvar os registros?", vbYesNo, MyApp, , , MyIco1, MyIco2, , , , , , "Desejo


Salvar", "Não quero")

Nota: Na função você deverá informar o parâmetro do tipo de ‘Caixa de Mensagem’ a ser exibida e realizar
a alteração da mensagem padrão pela sua. Ao escolher a opção vbYesNo, por exemplo, você deverá passar
os parâmetros para o botão Yes e No

15
Exemplo:

Dim Resp
Resp = InputBoxEx("Informe sua senha", "Segurança", , , , , SPassword, 4)

Rede
O módulo Rede disponibiliza funções que permite interagir com o seu ambiente de rede.

Função Descrição
ConexaoInternet Verifica se há uma conexão ativa com a internet

MapearRede Realiza o mapeamento de uma unidade de rede em seu computador

DesconectarRede Desconecta o mapeamentos realizados em seu computador

Verifica se há uma conexão ativa com a internet. Diferente da função


ConexaoXML ‘ConexaoInternet’, há a necessidade de se habilitar nas referencias do Access
Microsoft XML 3.0

Exemplo:

Rede.DesconectarRede "G:\"

16
Sound
O módulo Sound disponibiliza funções que permite reproduzir e gerenciar arquivos de áudio na sua
aplicação.

Função Descrição
Play Permite reproduzir arquivos do tipo .wav, .wma dentre outros

Exemplo:

Dim sFile
sFile = Application.CurrentProject.Path & "\sons\abertura.wav."

Sound.Play (sFile)

Exemplo disponível: formulário ‘Geral’ demonstra a utilização das funções

Tratar
O módulo Tratar disponibiliza funções que permite processar um conjunto de informações recebidas, em
um novo conjunto modulado para atender a necessidade do usuário.

Função Descrição
Retorna a rota curta de uma pasta informada.
RotaCurta Assim informando C:\Program Files\Windows Defender será retornado
C:\PROGRA~1\WINDOW~3

Retorna somente as letras em uma seqüência de caracteres.


SoLetras
O valor na string informado como GPL-1020, retornara apenas GPL

Retorna somente os números em uma seqüência de caracteres.


Numeros
O valor na string informado como GPL-1020, retornara apenas 1020

Converte a primeira letra de cada seqüência de string em maiúscula.


Maiuscula Assim, o valor passado, por exemplo, como kartoffel system developers será
retornado Kartoffel System Developers

Em uma string e caracteres, remove todas as acentuais encontradas.


RemoveAcentos
Assim, o valor passado, por exemplo água, será retornado agua

Converte uma seqüência de caracteres em ordem inversa.


Reverso
Assim, o valor passado, por exemplo, como kartoffel será retornado leffotrak

Retorna o valor por extenso de um numeral.


Valor_Extenso
Assim, informado em um capo R$ 2,00, será retornado Dois reais.

17
Exemplo:

Dim sFile
sFile = Application.CurrentProject.Path & "\sons\abertura.wav."

Sound.Play (sFile)
Exemplo disponível: formulário ‘Geral’ demonstra a utilização das funções

Valida
O módulo Valida disponibiliza um conjunto de funções para validar informações no seu formulário

Função Descrição
Realiza a validação do CNPJ ou CPF informado de forma inteligente.
Quando um número é informado e não atendi o digito verificador, o campo
aonde a informação é digitado, é destacado em vermelho para alertar ao
CNPJ_CPF
usuário que o referido documento não é valido. O mesmo ocorre para
documentos válidos (destacando na cor verde) e números que não atendem aos
requisitos do documento (destacando na cor azul)

Exemplo:

Private Sub cnpj_cli_BeforeUpdate(Cancel As Integer)

valida.CNPJ_CPF (Me.cnpj_cli)

End Sub

Exemplo disponível: formulário ‘Clientes3 demonstra a utilização das funções

18
Wind
O módulo Wind disponibiliza funções que permite o usuário interagir com o Access através de janelas
especificas, realizando tarefas parametrizadas

Função Descrição
Oculta a janela de fundo da aplicação.
Para utilizar esse recurso é necessário que os formulários estejam com os
seguintes parâmetros:
Oculta_Janela Pop-up: Sim
Janela Restrita: sim

A imagem abaixo ilustra os parâmetros.

Seleciona_Pasta Realiza o mapeamento de uma unidade de rede em seu computador

Seleciona_Arquivo Desconecta o mapeamentos realizados em seu computador

Exemplo:

Wind.Oculta_Janela (Oculta)

19
Prn
O módulo PRn disponibiliza um conjunto de funções que permite carregar um ambiente personalizado
para impressão de relatórios

Função Descrição
Exibe um ‘Painel de Impressão’ onde você poderá selecionar uma entre as
Printer_Report impressoras disponíveis em seu ambiente de trabalho (local ou rede), desde que
devidamente instalada e configurada (Img: 01)

Permite definir a impressora padrão do Windows através da sua aplicação, sem


Printer_Def a necessidade de acessar a opção Dispositivos e Impressoras (Img: 02). Não há
parâmetros para essa função.

Exemplo:

prn. Printer_Report (nome_relatorio)

System
O módulo System disponibiliza um conjunto de funções que permite tratar operações relacionados ao
sistema da sua aplicação, do código utilizado ou de hardware.

Função Descrição
Pausa a execução do seu código VBA, passando parâmetros de quantos
Pausa
segundos o código deverá ser pausado

Copia um arquivo para local especificado, através do Windows, exibindo janela


para confirmação e cancelamento da operação (img:01), passando parâmetros
CopiarArq
de arquivo de origem e arquivo de destino

20
Exemplo:

system.Pause (10)’onde 10 representa 10 segundos

21
Agradecimentos

Agradecemos a todos os usuários que contribuíram direta ou indiretamente com os códigos que são
utilizados nesse componente, com idéias, sugestões, verificações ou publicações.

Sem vocês, esse módulo não teria sido concebido.

 Alexandre Minato  Klaus Probst


 Allan Neros  Luiz Cláudio C. V. Rocha
 Avelino Sampaio  Moacir Ribeiro
 Claudio Más  Murilo Gonçalves
 Elton John  Osmar Júnior
 Fábio Trindade  Plínio Mabesi
 Felipe Cortes  Renato Santos
 Flávio Nascimento  Rogério Oliveira
 Gilberto Mendes  Ronaldo Ramires
 João Rodrigues (JR)  Sampaio Lima
 Juan M. Afan de Ribera  Stephen Lebans

Peço desculpas caso não tenha mencionado algum desenvolvedor. Entre em contato que me retratarei,
atualizando a lista dos desenvolvedores, na próxima edição.

Sobre a Kartoffel

A Kartoffel Desenvolvimento de Sistemas Ltda é uma empresa


especializada exclusivamente no desenvolvimento para Microsoft Access,
atuando no mercado há mais de 17 anos.

Nossa missão e garantir componentes e recursos em Microsoft Access, que


possam ser implantados e utilizados de forma simples e descomplicada,
permitindo assim, atender as necessidades e as demandas do
desenvolvedor.

Com isso contribuímos para que o Microsoft Access se solidifique e se popularize ainda mais no mercado
quanto ferramenta de desenvolvimento.

Para conhecer nosso trabalho acesse:

www.kartoffel.com.br
www.usandoaccess.com.br
www.comunidade.itlab.com.br

22