Você está na página 1de 12

Usando Access - Manutenção e Sistema de Backup com Barra de Progresso Página 1 de 12

Usando Access
Home Vídeos-aulas Tutoriais Dicas Blog Downloads Contato Artigo

Manutenção e Sistema de Backup com Barra de Progresso

Assim que se iniciam as atividades de um Banco de Dados é de fundamental importância implementar


um esquema de backup, que garanta o pronto restabelecimento dos dados, em qualquer situação de
emergência.

Para garantir a qualidade das cópias de segurança, você deve realizar manutenções regulares e
preventivas do seu Banco de Dados. Veremos então, como proceder para realizar a manutenção:
O que leva uma Banco de Dados a ter problemas ?

Um hardware defeituoso , queda de energia, sistema de rede precário (fiação, conectores, hub e switch
de péssima qualidade), um projeto mal estruturado e o Access sem as devidas atualizações, são os
maiores vilões para acarretarem problemas.
E quais os problemas que costumam ocorrer em um Banco de Dados?

Lentidão, surgimento de caracteres estranhos, não conseguir abrir um determinado formulário ou


relatório, perda de dados e a pior de todas as situações: ele se corromper, a ponto de ficar inutilizado.
Existem programas oferecidos pela internet que conseguem, em algumas situações, recuperar um
banco corrompido, como por exemplo o JetComp. Também existem firmas especializadas e que
cobram bem caro por esse serviço de recuperação.
Vale lembrar que o reparador do Access atua somente sobre tabelas, consultas e índices. Se houver
problemas em formulários, relatórios, macros e módulos, 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 atualizações do Access em dia. Se o Office 2007 for original, configure o Windows para
realizar atualizações de forma automática ou baixe diretamente do site da Microsoft o último pacote de
atualizações. Acesse aqui o pacote SP2
Sempre que realizar alterações no código, use o compilador do VBA para sanar de imediato quaisquer
erros de sintaxe e/ou comandos. Isto é fundamental para que o seu aplicativo não apresente tais erros
no momento de execução e evite um bug do Access 2007 ao compactar e reparar, que causa a
destruição do banco de dados. Veja em meu artigo como proceder, se este bug do compactar e
reparar surgir para você.

Para compilar o código, 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 manutenção da
aplicação.
Decompile o seu front-end sempre que fizer alterações significativas na programação. Esse
procedimento retira o lixo do código 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

http://www.usandoaccess.com.br/tutoriais/tuto14.asp?id=1 24/04/2013
Usando Access - Manutenção e Sistema de Backup com Barra de Progresso Página 2 de 12

Sempre que for fazer uma modificação, seja no back-end, seja no front-end, crie o hábito de fazer uma
copia de segurança. 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 cópia, você pode adotar medidas diferentes para tentar
recuperar o banco, como por exemplo a cópia simples dos objetos (tabelas, consultas, formulários, ...)
para um novo arquivo ACCDB.
Não realize backup sobrepostos

Depois do que você já leu aqui, deu para perceber que realizar uma cópia, sobrepondo a anterior pode
não lhe servir de nada. Realizando então cópias sucessivas, aumenta as suas chances de recuperar
dados e objetos de um dos backups que não tenha sofrido o dano.
Quantas cópias devo guardar?

A quantidade excessiva de cópias não tem sentido. O que vale é você ter a certeza de que as cópias
estão livres de problemas. Testar então periodicamente as cópias faz muito mais sentido do que ter
mil cópias sem serem previamente avaliadas.
O que costumo fazer:

Realizo backups automáticos diários. 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. No final do mês fico com quatro
backups devidamente testados.
No final do ano fico com o último backup testado de cada mês. 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 informações que haviam sido deletadas por
alguma razão. 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 usuário administrador utilizar.

Tem clientes que não fecham contrato de manutenção comigo. Quando o projeto termina fica a critério
do cliente a realização do backup.

Backup automático 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 diários. Vou lhe fornecer este script e lhe mostrar em
vídeo como configurar o Agendador de Tarefas do Windows Vista.

Backup do front-end

O front-end não precisa ser submetido à backups constantes, apenas quando você realiza alterações na
sua estrutura. Agora, na prática, costumo deixar uma cópia de segurança numa pasta acessível da
rede, para o caso de uma rápida substituição, se o front-end do usuário se danificar.

Qual é o código utilizado para montar um sistema de backup?


No access 2007/2010 temos a classe FileSystem, que possui o método FileCopy mas este tem um
problema de não funcionar se o arquivo a ser copiado estiver em uso. A solução então é usar o
método CopyFlie do Windows Scripting. Veja o exemplo abaixo como é simples:

Dim objfs as object


Set objfs = CreateObject("Scripting.FileSystemObject")
objfs.CopyFile Origem, Destino

Basta indicar a origem do back-end e o local de destino de cópia.

Falei da questão primordial de se testar a integridade da cópia. O próprio 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 reparação do banco de dados no
processo.
Então o que faço é pegar a cópia, já realizada pelo código acima e executo o compactar e reparar sobre
esta cópia, gerando uma nova cópia reparada e compactada, no próprio local de destino.

Dim booResultado as boolean


booResultado = Application.CompactRepair(Destino, DestinoNovo, True)

O valor true no último argumento confirma que você deseja que ele gere o arquivo log, caso tenha
ocorrido uma reparação.
A variável booResultado retorna true se o processo de compactação e reparação ocorreu sem falhas.
Um grande desafio que tive, foi como inserir a senha do back-end, exigida no processo de compactação
e reparação, sem a intervenção do usuário. Resolvi através do uso do SendKeys. Utilizei o SendKeys
do Windows Scripting , pois o do Access acarreta numa alteração do estado da tecla NumLock.

If fncProtegido = True Then


Dim objws As Object
Set objws = CreateObject("wscript.shell")
objws.SendKeys fncCapturaSenha, True
objws.SendKeys "{ENTER}"
End If
booResultado = Application.CompactRepair(Destino,DestinoNovo), True)

http://www.usandoaccess.com.br/tutoriais/tuto14.asp?id=1 24/04/2013
Usando Access - Manutenção e Sistema de Backup com Barra de Progresso Página 3 de 12

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 código é muito mais rápida do que
o envio da seqüência dos caracteres pelo sendkeys. Então a janela da solicitação de senha já estará
aberta e com o foco, ANTES do envio dos caracteres.
Excluo a cópia não compactada e reparada do local de destino.

If booResultado = True Then FileSystem.Kill Destino

Se o usuário optar pelo uso do WinRAR para compactação , é utilizado o comando shell para executar o
programa.

Dim compri
compri = Shell("C:\Arquivos de programas\Winrar\WinRAR.EXE a " & _
Replace(DestinoNovo, ".accdb", "") & ".rar " & DestinoNovo, vbHide)

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 indicação visual de todo o processo. Então criei uma
barra de progresso para o usuário ficar com um indicativo.
Observe a barra de progresso no processo de backup:

O código completo e comentado está disponível no aplicativo Maestro, que disponibilizo abaixo para
download.

E qual é o código usado para o backup automático?

O Agendador de Tarefas do Windows não permite abrir direto um arquivo de Access. Então gerei um
pequeno script, que pode ser disparado pelo agendador.

Dim strlocal
Dim objws

on error resume next

Set objws = CreateObject("wscript.shell")

strlocal = "c:\maestro\backup\backup_at.accdb"

strlocal = Chr(34) & "MSACCESS.EXE" & Chr(34) & " " & Chr(34) & strlocal & Chr(34)

ObjWS.Run strlocal, 0,"false"

Este pequeno script, ao ser executado, abrirá o aplicativo backup_at.accdb no modo oculto. A macro
Autoexec do backup_at.accdb dispara na inicialização, a função, com os códigos necessários para
copiar, compactar e reparar a base de dados, conforme descrevi acima.
O backup_at.accdb, contém no código, a senha da base de dados. Recomendo, então, que você
transforme este accdb em accde, impedindo com isso o acesso ao código fonte. Altere também a
extensão para accde, na linha strlocal do script acima.

http://www.usandoaccess.com.br/tutoriais/tuto14.asp?id=1 24/04/2013
Usando Access - Manutenção e Sistema de Backup com Barra de Progresso Página 4 de 12

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
Usuários.

Para entrar no modo estrutura do aplicativo Maestro, segure a tecla shift ao carregá-lo.
Senha dos usuários do formulário de Login:
Usuário admin > admin
Usuário Avelino > 1234
O arquivo zipado abaixo, contém os seguintes arquivos:
Maestro.accdb - front-end
Maestro_be.accdb - back-end (possui a senha: a1234)
Backup_at.accdb - Contém o código 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

Baixe aqui o arquivo exemplo

Vídeo-aula

Verá como compilar e decompilar um aplicativo.


Farei uma breve demonstração de uso do sistema de backup, do exemplo Maestro.
Vou ensinar a configurar o Agendador de Tarefas do Windows Vista para implementar o backup
automático.
Como EXIBIR a vídeo-aula em tela cheia?
1. clique na seta executar da tela abaixo para iniciar a exibição do vídeo;

2. dê dois cliques rápidos na tela, quando o vídeo começar a ser exibido.

Os dez artigos mais visitados

MontaRibbons v.4.0 - Assistente completo para criar ribbons no Access

Capturando informações do Windows e do Hardware

Vídeo - Controle personalizado de Acesso de Usuários

Vídeo - Segurança máxima, usando o OPEN

Vídeo - Programação de relatórios - Parte 1

Vídeo - Criando Ribbons parte 1 - Conhecendo a estrutura Xml

Vídeo - Aprenda sobre filtragens

Uma ajuda para quem está começando um negócio ou um projeto

http://www.usandoaccess.com.br/tutoriais/tuto14.asp?id=1 24/04/2013
Usando Access - Manutenção e Sistema de Backup com Barra de Progresso Página 5 de 12

Navegação em Mapas com três ambientes

Como montar um sistema com seleção de idiomas

| Home | Vídeos-aulas | Tutoriais | Dicas | Blog | Downloads | Contato | Artigo |

59 comentários

Luís Augusto 11/05/2010 22:51:56


Que belo trabalho Avelino. Como sempre muito claro. Este artigo veio a esclarecer muitas dúvidas que pairavam sobre o Assunto. Muito
Obrigado.
Parabéns!

STELLA MARIS 13/05/2010 16:47:08


Avelino, seu trabalho está fantástico.
É muito bom ter alguém que está sempre ensinando aqueles que quase nunca sabem !
Essa Manutenção e Sistema e backup somente podem ser utilizadas no Windows Vista?
Tenho o XP e outra maquina com o windows 2007 e gostaria de saber se posso aplicar.
Sucesso

Avelino Sampaio 14/05/2010 04:20:39


Luís e Stella,

fico feliz em poder ajudar.

Stella,

pode ser usado no Windows Xp sem problemas. Se tiver alguma dificuldade, volte a entrar em contato.

Luiz Roberto 19/06/2010 14:14:37


Avelino, boa tarde.

Quero agradecer pela dica dada no Forum do access outro dia, quando eu tentava gerar um arquivo extensão .PDF e não aparecia as opções
do mesmo no computador do meu cliente, foi quando você me informou para atualizar com SP2, e deu certo.

Você realmente está de parabéns, e eu fico contente por ter pessoas assim no mundo que prestam informações precisas.

Um abraço.

William Paiva 06/07/2010 23:22:59


Uma Dica simples que pode evitar problemas absurdos !!! Parabéns amigo abraço...

Rui Gonçalves 19/08/2010 10:05:44


Olá Avelino
Em primeiro lugar queria dar-lhe os parabéns, está excelente.
Não tem a parte do backup para o access 2003?
Cumprimentos
Rui

Avelino Sampaio 20/08/2010 10:37:41


Rui,

peço desculpas , não tenho não.

grato

gilberto 20/09/2010 19:12:39


gostava de comecar a usar acess porque preciso desenvolver uma aplicacao para uso profissional e nao tenho conhecimentos de acess 2007
gostava que me pudesse ajudar com video aulas ou documentos como usar acess2007.

Obrigado

gilberto 20/09/2010 19:17:54


gostava de comecar a usar acess porque preciso desenvolver uma aplicacao para uso profissional e nao tenho conhecimentos de acess 2007
gostava que me pudesse ajudar com video aulas ou documentos como usar acess2007.
o meu email giltec2003@hotmail.com
Obrigado

http://www.usandoaccess.com.br/tutoriais/tuto14.asp?id=1 24/04/2013
Usando Access - Manutenção e Sistema de Backup com Barra de Progresso Página 6 de 12

Alexsandro 10/10/2010 09:15:12


Sou servidor publico, nao tenho conhecimento avancado em access. Quando assumi a atual funcao percebi que os documentos que
chegavam da unidade central eram distribuidos em protocolos escritos e quando alguem queria saber pra onde fora distribuido era aquela
agonia, então desenvolvi um banco de dados em access com alguns recursos bem interessantes de controle como pesquisas, informação e
baixa de protocolos pendentes, alem de imprimir a relação de protocolos para oficializar que o setor de fato recebeu o documento. É meio
que um "Frankstein" pois peguei muitas dicas e copiei muitos recursos da net graças a pessoas como você. Meu problema agora é que há
muita informação no BD e tenho medo de perder, não estou conseguindo associar a quais controles associo os códigos aciam descritos. Peço
sua ajuda. adm.alexsandro@hotmail.com

Alexandre Toebe Gadelha 01/02/2011 19:04:42


Olá,

desculpe mas não entendi direito como fazer este processo.. Estou montando um programa já montei todo o formulário, eu ainda posso
enserir esse sistema de backup?

aletoebegadelha@hotmail.com

Avelino Sampaio 02/02/2011 14:20:24


Olá Alexandre

Sim, perfeitamante!

Rode o banco de dados exemplo MAESTRO.

Usuario: Admin
Senha: admin

Lei no painel informativo , na guia backup, as instruções de como adaptar ao seu projeto.

Para abrir o Maestro no modo estrutura , mantenha a techa SHIFT pressionada ao rodar o MAESTRO

Sucesso

Alexandre Toebe Gadelha 03/02/2011 18:38:54


Olá,

obg por responder minha pergunta, tenho outra duvida,


eu fiz o curso do office 98/2000 e durante o curso montamos um programa de escola de cadastro alunos, funcionários, pagamentos. Depois
que terminamos de montar criamos um icone na area de trabalho que ia direto para um menu com as opções. Gostaria de saber se consigo
fazer isto nesta versão 2007 e se vc poderia me ajudar.

Fico grato e aguardo resposta.

aletoebegadelha@hotmail.com

Avelino Sampaio 06/02/2011 05:31:57


Alexandre,

consegue sim.

Se este seu menu se tratar de um formulário, acesse o link abaixo.

http://www.usandoaccess.com.br/dicas/dica15.asp?id=1#inicio

Acesse também.

http://www.usandoaccess.com.br/dicas/dica14.asp?id=1#inicio

Sucesso

Alexandre Toebe 06/02/2011 18:28:29


Sim, bem mas não me lembro, mas eu acho que criamos como um formulário mesmo...
neste caso eu preciso criar os botões seguintes:

vizualisar cadastro
adiconar cadastro
relatorio
fechar

Vou exemplificar a função que eles tem que ter:

vizualizar cadastro - quando eu acionar este botão deverá surgir um caixa pedindo o código, nome.
após preencher os campos, ele levará para ficha de cadastro desta pessoa.

adiconar cadastro - quando eu acionar este botão deverá surgir um caixa para efetuar o cadastro

relatório - quando eu acionar este botão deverá surgir um caixa com todos os cadastro, para que eu possa imprimir, como se fosse uma
planilha.

fechar - seria sair do programa.

---------------------------------------------------------------------------------------------------------------------

Só relembrando eu já tenho tudo pronto o formulário para o cadastro, é o relatório para a planilha, e até a consulta (que serve eu não sei
qual a função).

Aí eu desejo criar este menu, colocar senha, há e criar um botão dentro do formulário cadastro para que eu possa editar um cadastro, e
também outro botão para salvar, as edições. Entende ?

http://www.usandoaccess.com.br/tutoriais/tuto14.asp?id=1 24/04/2013
Usando Access - Manutenção e Sistema de Backup com Barra de Progresso Página 7 de 12

Desculpe pelo transtorno mas espero que possa me ajudar, ficarei muito grato se vc me ajudar, desde jáh obrigado !

Paulo Cesar - paulo.cesar@mail.com 07/03/2011 02:03:20


Olá Avelino,
Mais uma vez meus parabéns pelo conteúdo apresentado. Mas neste comentário não vou só agradecer, mas também pedir agora a
ferramenta de retorno do backup (caso tenha), pois não adianta muito uma ferramenta de backup sem um retorno, rsrs.
Grande abraço e sucesso!!!

Avelino Sampaio 09/03/2011 09:59:31


Paulo,

Obrigado pela sugestão. Vou ver se crio uma solução simples para montar um restaurador.

Sucesso

Bruno Pereira de Avila 28/03/2011 18:32:00


Simplesmente Ótimo!

Só não estou conseguindo adaptar no meu bd... quando abro o formulário dá um aviso: "Acesso Bloqueado"

Que será que deu errado?!?

Avelino Sampaio 28/03/2011 19:44:08


Bruno,

desabilite a função de permissões do evento "Ao carregar"

Private Sub Form_Load()


'Call fncPermissões(Me)
End Sub

Marcelo David 08/05/2011 04:43:26


Bom dia Avelino,
Seu exemplo de backup é muito bom! Eu gostaria de saber se é possível
fazer backup de todos os objetos da pasta onde está o back-end?
Grato

Avelino Sampaio 09/05/2011 08:41:50


Marcelo,

é possível sim. Por exemplo, use o asterísco (*) para susbstituir os nomes dos arquivos e das extensões no copyFile.

objfs.CopyFile "c:\suaPasta\*.*, "c:\SuaPasta\backup"

A tradução do código acima é : copie qualquer arquivo com qualquer extensão para a pasta backup

Sucesso

Roni Lupe 10/05/2011 10:20:45


Bom dia!

Avelino,

eu coloquei senha no meu back-end e ao realizar o backup é soliciado a senha e se eu selecionar a opção compactar com o Winrar também é
solicitado a senha mas ao concluir o backup aparece uma mensagem "70 - Permissão negada". Eu uso as tabelas vinculadas. O que eu devo
alterar nos codigos do formulario de backup?

Abraço!

Roni Lupe 10/05/2011 11:40:54


Avelino,

O problema com a solicitação da senha eu consegui solucionar, mas com a opção compactar com o Winrar a mensagem "70 - Permissão
negada" insiste em aparecer e o arquivo não é compactado. Vou gastar os poucos neuronios que me sobraram para tentar achar a
solução...rsrs, mas se você puder me ajudar agradeço.

Abraço!

Avelino Sampaio 11/05/2011 05:58:15


Roni,

esse erro acontece, geralmente, quando se está em uma área aonde se exige permissão do windows para realizar alterações. Por exemplo,
tente zipar um arquivo com o Wiinrar, direto na unidade C e veja o que acotece.

Sucesso

http://www.usandoaccess.com.br/tutoriais/tuto14.asp?id=1 24/04/2013
Usando Access - Manutenção e Sistema de Backup com Barra de Progresso Página 8 de 12

Roni Lupe 12/05/2011 07:59:58


Avelino,

não entendo...antes de inserir senha no meu back-end a opção compactar com o Winrar funcionava perfeitamente. Caso eu não consiga
encontrar uma solução para o problema até a conclusão do meu projeto vou ter que descartar esse recurso do Winrar, pois, não posso deixar
o banck-end sem proteção. De qualquer forma, obrigado pela atenção!

Abraço

Avelino Sampaio 13/05/2011 05:22:19


Roni,

entre em contato comigo, pela seção Contato do site e me forneça mais detalhes sobre o seu problema. Voltei a realizar teste aqui e o erro
só acontece no caso em que as pasta exigem permissões do Windows.

Vamos tentar resolver esta questão.

No aguardo

João Paulo 19/05/2011 10:30:57


Avelino, olá!

É possível fazer uma adaptação para o reconhecimento do sistema de backup do winrar no modelo portable ?

Em algumas máquinas para não ter que instalar o winrar (politicas internas) utilizamos o programa portátil. Ele fica disponível no executar
(run) da máquina e o maestro não reconhece.

Aguardo comentários.

João Luiz Perosini 11/06/2011 16:00:33


Avelino, o agendamento do backup para várias vezes ao dia não pode comprometer ou até mesmo corromper a base de dados existindo
vários usuários utilizando o front-end. É possível fazer este backup com o sistema aberto ?

Avelino Sampaio 13/06/2011 05:13:59


João Luiz,

nunca tive problema neste sentido. Lembre-se que o Windows é multitarefa e gerencia isso muito bem.

Se estiver inseguro, procure executar os backup em horários de pouco uso, como a hora do almoço, parada para o lanche da tarde e um
pouco antes do expediente começar.

Sucesso!

Marcelo 06/07/2011 15:11:16


Não Consigo entrar no arquivo beckup_at para editar o mod_beckup.....dá erro 76.caminho não localizado
Quero utilizar agendador de tarefas windows.......

já implementei o Beckup (seu modelo do maestro) em meu projeto

Avelino Sampaio 08/07/2011 05:51:50


Marcelo,

Mantenha precionado a tecla SHIFT ao abrir o arquivo.

Sucesso!

Roberto Santos 15/07/2011 07:07:01


Avelino, adicionei no meu Banco de Dados o "Revinculando tabelas com barra de progresso". e o "Beckup automático" mas cada um deles
vem acompanhado de uma macro

AutoExec, nesse caso as duas macros trabalhando juntas não criaria um conflito? se a resposta for sim como faço para evitar tal problema?

Grato pela sua ajuda

Adilson 16/09/2011 10:00:36


Meu bd não é back end, como faço para alterar a rotina de backup para tal forma?

Avelino Sampaio 18/09/2011 10:06:10


Roberto,

não porque a rotina de backup automático é de um banco separado.

Adilson,

http://www.usandoaccess.com.br/tutoriais/tuto14.asp?id=1 24/04/2013
Usando Access - Manutenção e Sistema de Backup com Barra de Progresso Página 9 de 12

Este formulário de backup está projeto para encontrar o back-end . Assim que terminar o seu projeto, seria bom dividir o Bd nas duas partes,
mesmo que não venha a usar em rede.

Teste com as seguintes modificações e veja se funciona sem a divisão do BD

Abra o código do formulário de backup


No evento “ao abrir”, altere a linha de:
'strCaminho = CurrentDb.TableDefs("tblUsuários").Connect
Para:
strCaminho = fncOrigemBackup

Altere a função fncOrigemBackup , conforme descrito abaixo

Private Function fncOrigemBackup() As String


'fncOrigemBackup = Nz(Right(strCaminho, Len(strCaminho) - InStrRev(strCaminho, "=")), "")
fncOrigemBackup = CurrentProject.Path & "\" & CurrentProject.Name
End Function

Sucesso!

adalberto 26/09/2011 09:43:49


Tenho uma rotina de Backup utilizando o código acima e também na situação " sem back-end " e esta apresentando este erro:

7866 - O Microsoft Office Access não pode abrir o banco de dados porque ele esta ausente, foi aberto exclusivamente por um outro usuário
ou não é um ADP.

Mário Júnor 04/10/2011 17:21:13


Boa tarde, achei fantástico a rotina de backup utilizando-se o agendador do windows, só que estou enfrentando o seguinte problema antes
de terminar o processo é emitida a mensagem de erro com o seguinte erro:

ERRO: 2285 O Microsoft Access não pode criar o arquivo de saída.

Vc poderia me ajudar?

Fabricio de Souza Rosa 28/02/2012 16:57:37


Avelino, parabéns pelo teu trabalho cara, fico feliz em saber que tem pessoas como você, para poder nos ajudar.
Obrigado, por compartilhar seu conhecimento.
Que Deus o Abençoe, e continua te iluminando de capacidade e conhecimento.

Igor ribeiro 02/03/2012 13:30:30

Olá boa tarde!

Eu configurei meu banco de dados do Access para extensão de de ACCDB para ACCDR, assim ocultor os botãoes de navegação.

Assim eu queria fazer o atalho em um formulário do botão Backup ou fazer backup automático ao fechar o programa, mas não conseguir.
Queria abusar dos sua bondade para vc enviar uma orientação sobre esse atalho, ou seja, o passo a passo de como fazer esse atalho.

informou ainda que para eu fazer esse backup preciso para para versão ACCDB, assim como que vai trabalhar com o programa são outros
usuários fica dificil....

grato....

JEFFERSON SANTOS 25/04/2012 18:46:05


Problema em implementação no meu banco de dados:

1- Tive problemas em alguns botões da ribbon quando ao tentar rodar o banco de dados pelo OPEN alguns dele, cujas funções eram abrir
relatorios e formularios e que utilizei a função "abrir objetos" direto no monta ribbons. Sempre que clicado retornava erro algo como "sem go
sub". O problema se dava no arquivo .accdr do banco de dados. Contudo quando eu configurei os comandos direto no VBA ele funcionaram,
mas fica a duvida.

2- Não estou conseguindo implementar a funções BackUP (utilizada no maestro), onde sempre retona em um erro na função
"fncProcuraPasta"

Private Sub btCaminho_Click()


Dim strPasta As String
On Error Resume Next
strPasta = fncProcuraPasta(Me.hWnd, "Selecione a pasta para o Backup...")
If strPasta = "" Then Exit Sub
Me!txDestino = fncDestinoBackup(strPasta)
End Sub

e a outra é a de sempre procurar o back-end, nem consigo começar....

3- Seria a respeito de como realizar o seguinte procedimento:

Situação 01: Como fazer para bloquear o formulário ou alguns campos deste mesmo formulario baseado em um valor de um determinado
campo. Ex: se o "campo identificação" = "xxxx" , bloquear fomularios ou determinados campos especificos.

Acontece que ao carregar este formulário ele exibe o primeir registro, e alguem sempre acaba editando por cima do mesmo, e nao posso
bloquear os campos pq alguns dados podem ser reeditados, tentei realizar o carrregamento exibindo campos em branco (novo registro),
porem nao consigo realizar consultas.

Situação 02: Ao iniciar o banco ele vai para o fomulário principal, porem se o coloc para exibir todos os campo em branco, como se fosse
realizar um cadastro novo, não consigo realizar consultas. Como fazer para ter as funçoes poderem ser realizadas como acontece na situação
01 onde o primeiro registor é exibido.

http://www.usandoaccess.com.br/tutoriais/tuto14.asp?id=1 24/04/2013
Usando Access - Manutenção e Sistema de Backup com Barra de Progresso Página 10 de 12

Se me puder ajudar agradeço

Avelino Sampaio 26/04/2012 06:58:18


Jefferson,

1- O OPEN não é responsável por qulaquer problema no seu BD, pois não altera nada. O problema surgiu quando vc passou a usar a
extensão ACCDR. Sempre que alterar seus códigos, utilize o DEPURAR > COMPILAR do VBA. Esse erro "sem Gosub" eu já identifique quando
se usa macro. Crie um atalho no seu desktop para acessar seu aplicativo diretamente (sem o OPEN e no ACCDB) > Neste atalho acrescente
o comando "/decompile" no final da linha > Rode o Atalho > Volte a usar o DEPURAR / COMPILAR > e por fim use o Compactar e Reparar.

2 - Copie do Maestro o módulo "mod_procurarArquivo"

3 - Altere a propriedade "Entrada de dados" do formulário para SIM. Desta forma sempre cairá automaticamente no novo registro.

Sucesso!

JEFFERSON SANTOS 03/05/2012 22:33:20


Grande Avelino, primeiramente agradeço as dicas, mas vamos ao feedback...

1- Eu já havia testado antes e sabia que era não era problema do OPEN (por sinal, excelente programa que resolveu a questão de proteção
que eu precisava) e sim quando alterava para a extensão ACCDR. Então realizei o procedimento de DEPURARE e COMPILAR VBA e resolveu o
problema.
2- Eu já havia copiado o módulo "mod_procurarArquivo" para o meu banco de dados e não consegui sucesso. Não sei onde estou errando...
3- O formulário abre como novo e posso realizar as consultas sem problemas, mas uma dica que obtive sucesso.

Agradeço novamente e so o problema pra realizar o back up e reconhcer automaticamente o caminho do back end

Silvanio 10/05/2012 15:55:51


Boa tarde, Avelino

Estou passando o mesmo problema como o amigo acima, uso o "FrmBackup" e antes de terminar a barra de progresso na hora em que esta
Compactando aparece este erro:

2285 - O Microsoft Access não pode criar o arquivo de saída.

Como posso solucionar?

Avelino Sampaio 12/05/2012 16:13:46


Silvanio,

copia aqui o caminho completo do DESTINO pois quero ver se tem algum caracter especial, que não seja permitido.

No aguardo

Silvanio 15/05/2012 10:13:36


o Caminho do destino é este na função fncLocalizarPasta, imaginando que é o caminho de DESTINO a que se refere.

.InitialFileName = "d:\"

só alterei de "c:/" para "d:\" que é o local onde esta o programa (Back-end e Front-end).

Avelino Sampaio 18/05/2012 06:28:34


Silvanio,

Preciso que vc escreva o caminho completo, incluindo nome do seu back-end:

No aguardo

Silvanio 21/05/2012 15:40:25


Segue o caminho:

D:\REDE - Sinalva\BDEntrega_be.accdb

Aguardo...

Avelino Sampaio 22/05/2012 06:17:01


Silvano,

altere o nome do seu servidor, sem usar esse traço, que deve ser a causa do problema.

Sugestão:

D:\RedeSinalva\BDEntrega_be.accdb

Sucesso!

http://www.usandoaccess.com.br/tutoriais/tuto14.asp?id=1 24/04/2013
Usando Access - Manutenção e Sistema de Backup com Barra de Progresso Página 11 de 12

Silvanio 22/05/2012 07:57:13


Realmente o problema era o caracter especial, agora funcionou normal!

obrigado p/ exclarecimento.

abraço.

EDUARDO ROCHA 07/07/2012 07:10:21


BOM DIA PROFESSOR!
Quando vou usar a funçao de LocalizarPasta da o erro: TIPO NÃO DEFINIDO

Avelino Sampaio 07/07/2012 10:18:34


Eduardo,

ative no VBA a referência "MICROSOFT OFFICE 12.0 OBJECT LIBRARY"

Sucesso!

EDUARDO ROCHA 07/07/2012 12:13:18


BELEZA. OBRIGADO.
GANHASTE UM FÃ.

EDUARDO ROCHA 10/07/2012 12:14:14


PROFESSOR NÃO CONSIGO USAR:
Private Declare Function GetVolumeInformation Lib "kernel32" Alias "GetVolumeInformationA" (ByVal lpRootPathName As String, ByVal
pVolumeNameBuffer As String, ByVal nVolumeNameSize As Long, lpVolumeSerialNumber As Long, lpMaximumComponentLength As Long,
lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, ByVal nFileSystemNameSize As Long) As Long

PORQUE?

Avelino Sampaio 10/07/2012 14:12:37


Eduardo,

usei esta função no tutorial sobre Shareware.

se o seu Office é de 64 bits sugiro também meu tutorial sobre "64 bits - seus aplicativos no futuro do presente"

Sucesso!

EDUARDO ROCHA 10/07/2012 19:34:49


MUITO BOM!

JEFFERSON SANTOS 29/07/2012 19:48:49


Grande Avelino,

Como sempre agradecemos as dicas e ajuda que vc nos dar.

Gostaria de outra brilhante solução, criei todos os comandos do meu banco de dados na ribbon com o manta ribbon, contudo estou tendo
um probleminha em relação ao botao "localizar", que assim como copiar, colar, salvar já nao precisava criar os comando no visual basic,
porém quando clico em localizar o mesmo so realizar a busca a palavra no formulario atual e não na base de dados (tabela principal que sen
encontra vinculada no "back end".

Como faço para que esta busca no botão localizar seja feita na tabela onde os dados estão armazenado?

de ja agradeço a atenção.

Avelino Sampaio 30/07/2012 06:53:29


Jefferson,

O formulário localizar percorrer todos registros do formulário ativo, portanto estará percorrendo todos os registros da tabela vinculada ao
formulário. Se vc quiser pesquisar direto de uma tabela terá que abri-la antes para então poder usar o formulário localizar.

Sucesso!

Luis Pedro 27/11/2012 17:11:41


Bem, não sei se o exemplo do MASTRO (versão 4) Avelino permitiu um acesso ao banco de dados, mesmo que com um pouco mais de
conhecimentos, eu conseguir visualizar todas as tabelas, fontes e dados do Visual Basic com em menos de 6 min. Podendo alterar ou barrar
o funcionamento ou uso dos tais "bloqueios". Não to aqui desmerecendo o Trabalho dele não, mas ainda acho que o Access em si não é uma
ferramenta 100% segura quanto ao quesito SEGURANÇA. Mesmo não sendo um usuário Avançado ainda.

Avelino Sampaio 27/11/2012 17:59:11


Luis Pedro,

http://www.usandoaccess.com.br/tutoriais/tuto14.asp?id=1 24/04/2013
Usando Access - Manutenção e Sistema de Backup com Barra de Progresso Página 12 de 12

o aplicativo Maestro é totalmente aberto para estudos. Não existe bloqueio algum nele. O senhor demorou muito para chegar nas tabelas
(risos).

Basta manter a tecla shift pressionada na inicialização que vc entrará na estrutura ou use a tecla F11 após realizar o login.

A senha do back-end (Maestro_be.accdb) é : a1234

Bom estudo!

silas 17/03/2013 09:16:45


tutorial legal mais aqui deu erro quando realizo o bakup ele não compacta e nem repara ai feicha criando o aquivo sen conpactar .Quando eu
retio a seguinte lilha "ooResultado = Application.CompactRepair(Destino, DestinoNovo, True)" ele conclui não não compacta pelo WinRan.

Envie seu comentário:

Nome:

Comentário:

Digite o número setecentos e vinte e cinco

comentar

© 1999 Pontocom Serviços Tecnológicos

http://www.usandoaccess.com.br/tutoriais/tuto14.asp?id=1 24/04/2013

Você também pode gostar