Anda di halaman 1dari 4

27/03/13

Usando Access - Manuteno e Sistema de Backup com Barra de Progresso

Usando Access
Home Vdeos-aulas Tutoriais Dicas Blog Downloads Contato Artigo

Manuteno e Sistema de Backup com Barra de Progresso


Assim que se iniciam as atividades de um Banco de Dados de fundamental importncia implementar um esquema de backup, que garanta o pronto restabelecimento dos dados, em qualquer situao de emergncia. Para garantir a qualidade das cpias de segurana, voc deve realizar manutenes regulares e preventivas do seu Banco de Dados. Veremos ento, como proceder para realizar a manuteno: O que leva uma Banco de Dados a ter problemas ? Um hardware defeituoso , queda de energia, sistema de rede precrio (fiao, conectores, hub e switch de pssima qualidade), um projeto mal estruturado e o Access sem as devidas atualizaes, so os maiores viles para acarretarem problemas. E quais os problemas que costumam ocorrer em um Banco de Dados? Lentido, surgimento de caracteres estranhos, no conseguir abrir um determinado formulrio ou relatrio, perda de dados e a pior de todas as situaes: ele se corromper, a ponto de ficar inutilizado. Existem programas oferecidos pela internet que conseguem, em algumas situaes, recuperar um banco corrompido, como por exemplo o JetComp. Tambm existem firmas especializadas e que cobram bem caro por esse servio de recuperao. Vale lembrar que o reparador do Access atua somente sobre tabelas, consultas e ndices. Se houver problemas em formulrios, relatrios, macros e mdulos, provavelmente ter que substituir estes objetos pelos de um backup. Como se prevenir de problemas deste tipo ? Use o compactar e o reparar do Access, com regularidade. Isso reduz consideravelmente as chances de pequenos problemas resultarem em um problema maior. Mantenha as atualizaes do Access em dia. Se o Office 2007 for original, configure o Windows para realizar atualizaes de forma automtica ou baixe diretamente do site da Microsoft o ltimo pacote de atualizaes. Acesse aqui o pacote SP2 Sempre que realizar alteraes no cdigo, use o compilador do VBA para sanar de imediato quaisquer erros de sintaxe e/ou comandos. Isto fundamental para que o seu aplicativo no apresente tais erros no momento de execuo e evite um bug do Access 2007 ao compactar e reparar, que causa a destruio do banco de dados. Veja em meu artigo como proceder, se este bug do compactar e reparar surgir para voc. Para compilar o cdigo, clique no menu Depurar e clique em compilar, conforme figura abaixo:

Divida o aplicativo em dois: um contendo as tabelas (back-end) e o outro contendo os restantes dos objetos (front-end). O back-end colocado numa pasta compartilhada e o front-end dever ser copiado para cada um dos micros. Cada front-end deve ser configurado para acessar o back-end compartilhado. Esta a forma estrutural mais empregada e facilita muito a manuteno da aplicao. Decompile o seu front-end sempre que fizer alteraes significativas na programao. Esse

www.usandoaccess.com.br/tutoriais/tuto14.asp?id=1#inicio

1/13

27/03/13

Usando Access - Manuteno e Sistema de Backup com Barra de Progresso

procedimento retira o lixo do cdigo compilado, diminui o tamanho do banco e melhora o seu rendimento. Crie um atalho no desktop do seu front-end e use o comando decompile no final da linha. Exemplo: "C:\Program Files\Microsoft Office\Office12\MSACCESS.EXE" c:\maestro\maestro.accdb /decompile Sempre que for fazer uma modificao, seja no back-end, seja no front-end, crie o hbito de fazer uma copia de segurana. Acredite, j me salvou muitas vezes de erros que cometi. Pode acontecer, por exemplo, de voc mandar compactar e reparar o banco de Dados e o Access, na tentativa de consertar uma falha, inutilizar de vez, o banco. Tendo a cpia, voc pode adotar medidas diferentes para tentar recuperar o banco, como por exemplo a cpia simples dos objetos (tabelas, consultas, formulrios, ...) para um novo arquivo ACCDB. No realize backup sobrepostos Depois do que voc j leu aqui, deu para perceber que realizar uma cpia, sobrepondo a anterior pode no lhe servir de nada. Realizando ento cpias sucessivas, aumenta as suas chances de recuperar dados e objetos de um dos backups que no tenha sofrido o dano. Quantas cpias devo guardar? A quantidade excessiva de cpias no tem sentido. O que vale voc ter a certeza de que as cpias esto livres de problemas. Testar ento periodicamente as cpias faz muito mais sentido do que ter mil cpias sem serem previamente avaliadas. O que costumo fazer: Realizo backups automticos dirios. A quantidade de vezes por dia depende do volume de dados do cliente. Tenho clientes que realizo at quatro backup num dia. Um dia por semana testo o ltimo backup do dia e destruo o restante. quatro backups devidamente testados. No final do ms fico com

No final do ano fico com o ltimo backup testado de cada ms. Passo pro meu cliente levar pra casa um cd com os 12 backups do ano. Bom, d trabalho mas eu cobro bem por isso. J tive casos em que o backup foi utilizado para recuperar informaes que haviam sido deletadas por alguma razo. Por isso que costumo guardar os 12 do ano. Backup manual do back-end Em todos os meus projetos inclu um sistema de backup para o usurio administrador utilizar. Tem clientes que no fecham contrato de manuteno comigo. Quando o projeto termina fica a critrio do cliente a realizao do backup. Backup automtico do back-end Tenho um script bem simples que utilizo com o Agendador de Tarefas do Windows, que aciona um aplicativo em Access, para realizar os backups dirios. Vou lhe fornecer este script e lhe mostrar em vdeo como configurar o Agendador de Tarefas do Windows Vista. Backup do front-end O front-end no precisa ser submetido backups constantes, apenas quando voc realiza alteraes na sua estrutura. Agora, na prtica, costumo deixar uma cpia de segurana numa pasta acessvel da rede, para o caso de uma rpida substituio, se o front-end do usurio se danificar. Qual o cdigo utilizado para montar um sistema de backup? No access 2007/2010 temos a classe FileSystem, que possui o mtodo FileCopy mas este tem um problema de no funcionar se o arquivo a ser copiado estiver em uso. A soluo ento usar o mtodo CopyFlie do Windows Scripting. Veja o exemplo abaixo como simples:
D i mo b j f sa so b j e c t S e to b j f s=C r e a t e O b j e c t ( " S c r i p t i n g . F i l e S y s t e m O b j e c t " ) o b j f s . C o p y F i l eO r i g e m ,D e s t i n o

Basta indicar a origem do back-end e o local de destino de cpia. Falei da questo primordial de se testar a integridade da cpia. O prprio Access tem como nos dar uma ajudinha neste teste. Se voc abrir o help do VBA e procurar a respeito de compactar e reparar, ir notar que ele gera um arquivo de log, caso tenha ocorrido uma reparao do banco de dados no processo. Ento o que fao pegar a cpia, j realizada pelo cdigo acima e executo o compactar e reparar sobre esta cpia, gerando uma nova cpia reparada e compactada, no prprio local de destino.
D i mb o o R e s u l t a d oa sb o o l e a n b o o R e s u l t a d o=A p p l i c a t i o n . C o m p a c t R e p a i r ( D e s t i n o ,D e s t i n o N o v o ,T r u e )

O valor true no ltimo argumento confirma que voc deseja que ele gere o arquivo log, caso tenha ocorrido uma reparao. A varivel booResultado retorna true se o processo de compactao e reparao ocorreu sem falhas. Um grande desafio que tive, foi como inserir a senha do back-end, exigida no processo de compactao e reparao, sem a interveno do usurio. Resolvi atravs do uso do SendKeys. Utilizei o SendKeys do Windows Scripting , pois o do Access acarreta numa alterao do estado da

www.usandoaccess.com.br/tutoriais/tuto14.asp?id=1#inicio

2/13

27/03/13
tecla NumLock.

Usando Access - Manuteno e Sistema de Backup com Barra de Progresso

I ff n c P r o t e g i d o=T r u eT h e n D i mo b j w sA sO b j e c t S e to b j w s=C r e a t e O b j e c t ( " w s c r i p t . s h e l l " ) o b j w s . S e n d K e y sf n c C a p t u r a S e n h a ,T r u e o b j w s . S e n d K e y s" { E N T E R } " E n dI f b o o R e s u l t a d o=A p p l i c a t i o n . C o m p a c t R e p a i r ( D e s t i n o , D e s t i n o N o v o ) ,T r u e )

Pode parecer estranho o sendkeys est passando a senha ANTES de se abrir o compactar e reparar. O segredinho aqui que a velocidade de processamento das linhas de cdigo muito mais rpida do que o envio da seqncia dos caracteres pelo sendkeys. Ento a janela da solicitao de senha j estar aberta e com o foco, ANTES do envio dos caracteres. Excluo a cpia no compactada e reparada do local de destino.
I fb o o R e s u l t a d o=T r u eT h e nF i l e S y s t e m . K i l lD e s t i n o

Se o usurio optar pelo uso do WinRAR para compactao , utilizado o comando shell para executar o programa.
D i mc o m p r i c o m p r i=S h e l l ( " C : \ A r q u i v o sd ep r o g r a m a s \ W i n r a r \ W i n R A R . E X Ea"&_ R e p l a c e ( D e s t i n o N o v o ," . a c c d b " ," " )&" . r a r"&D e s t i n o N o v o ,v b H i d e )

E por ltimo, verifico se o arquivo de log foi gerado, comunicando o problema ocorrido. If Len(Dir(Left(LocalDestino, InStrRev(LocalDestino, "\")) & "*.log", vbArchive) & "") > 0 Then MsgBox "Foi detectado problemas no arquivo de backup." & vbCrLf & _ vbCrLf & "Entre em contato imediatamente com o administrador do Banco de Dados", vbCritical, "Aviso" End If Faltava algo primordial, ao meu ver, que era uma indicao visual de todo o processo. uma barra de progresso para o usurio ficar com um indicativo. Observe a barra de progresso no processo de backup: Ento criei

O cdigo completo e comentado est disponvel no aplicativo Maestro, que disponibilizo abaixo para download.

E qual o cdigo usado para o backup automtico? O Agendador de Tarefas do Windows no permite abrir direto um arquivo de Access. Ento gerei um pequeno script, que pode ser disparado pelo agendador.
D i ms t r l o c a l D i mo b j w s o ne r r o rr e s u m en e x t S e to b j w s=C r e a t e O b j e c t ( " w s c r i p t . s h e l l " )

www.usandoaccess.com.br/tutoriais/tuto14.asp?id=1#inicio

3/13

27/03/13

Usando Access - Manuteno e Sistema de Backup com Barra de Progresso

s t r l o c a l=" c : \ m a e s t r o \ b a c k u p \ b a c k u p _ a t . a c c d b " s t r l o c a l=C h r ( 3 4 )&" M S A C C E S S . E X E "&C h r ( 3 4 )&""&C h r ( 3 4 )&s t r l o c a l&C h r ( 3 4 ) O b j W S . R u ns t r l o c a l ,0 , " f a l s e "

Este pequeno script, ao ser executado, abrir o aplicativo backup_at.accdb no modo oculto. A macro Autoexec do backup_at.accdb dispara na inicializao, a funo, com os cdigos necessrios para copiar, compactar e reparar a base de dados, conforme descrevi acima. O backup_at.accdb, contm no cdigo, a senha da base de dados. Recomendo, ento, que voc transforme este accdb em accde, impedindo com isso o acesso ao cdigo fonte. Altere tambm a extenso para accde, na linha strlocal do script acima. Exemplo para voc baixar e usar nos seus aplicativos livremente Inseri o sistema de backup no arquivo exemplo Maestro, usado no artigo sobre Controle de Acesso de Usurios. Para entrar no modo estrutura do aplicativo Maestro, segure a tecla shift ao carreg-lo. Senha dos usurios do formulrio de Login: Usurio admin > admin Usurio Avelino > 1234 O arquivo zipado abaixo, contm os seguintes arquivos: Maestro.accdb - front-end Maestro_be.accdb - back-end (possui a senha: a1234) Backup_at.accdb - Contm o cdigo para realizar o backup pelo Agendador de Tarefas Backuk_at.vbs - Script usado no Agendador de Tarefas do Windows para disparar o backup_at.accdb
B a i x ea q u ioa r q u i v oe x e m p l o

Vdeo-aula Ver como compilar e decompilar um aplicativo. Farei uma breve demonstrao de uso do sistema de backup, do exemplo Maestro. Vou ensinar a configurar o Agendador de Tarefas do Windows Vista para implementar o backup automtico. Como EXIBIR a vdeo-aula em tela cheia? 1. clique na seta executar da tela abaixo para iniciar a exibio do vdeo; 2. d dois cliques rpidos na tela, quando o vdeo comear a ser exibido.

www.usandoaccess.com.br/tutoriais/tuto14.asp?id=1#inicio

4/13