Escolar Documentos
Profissional Documentos
Cultura Documentos
Usando Access
Home Vídeos-aulas Tutoriais Dicas Blog Downloads Contato Artigo
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?
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.
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.
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.
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.
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.
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.
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
strlocal = "c:\maestro\backup\backup_at.accdb"
strlocal = Chr(34) & "MSACCESS.EXE" & Chr(34) & " " & Chr(34) & strlocal & Chr(34)
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
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
Vídeo-aula
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
59 comentários
Stella,
pode ser usado no Windows Xp sem problemas. Se tiver alguma dificuldade, volte a entrar em contato.
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.
grato
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
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
Sim, perfeitamante!
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
aletoebegadelha@hotmail.com
consegue sim.
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
vizualisar cadastro
adiconar cadastro
relatorio
fechar
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.
---------------------------------------------------------------------------------------------------------------------
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 !
Obrigado pela sugestão. Vou ver se crio uma solução simples para montar um restaurador.
Sucesso
Só não estou conseguindo adaptar no meu bd... quando abro o formulário dá um aviso: "Acesso Bloqueado"
é possível sim. Por exemplo, use o asterísco (*) para susbstituir os nomes dos arquivos e das extensões no copyFile.
A tradução do código acima é : copie qualquer arquivo com qualquer extensão para a pasta backup
Sucesso
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!
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!
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
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
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.
No aguardo
É 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.
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!
Sucesso!
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?
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.
Sucesso!
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.
Vc poderia me ajudar?
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....
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"
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
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.
3 - Altere a propriedade "Entrada de dados" do formulário para SIM. Desta forma sempre cairá automaticamente no novo registro.
Sucesso!
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
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:
copia aqui o caminho completo do DESTINO pois quero ver se tem algum caracter especial, que não seja permitido.
No aguardo
.InitialFileName = "d:\"
só alterei de "c:/" para "d:\" que é o local onde esta o programa (Back-end e Front-end).
No aguardo
D:\REDE - Sinalva\BDEntrega_be.accdb
Aguardo...
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
obrigado p/ exclarecimento.
abraço.
Sucesso!
PORQUE?
se o seu Office é de 64 bits sugiro também meu tutorial sobre "64 bits - seus aplicativos no futuro do presente"
Sucesso!
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.
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!
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.
Bom estudo!
Nome:
Comentário:
comentar
http://www.usandoaccess.com.br/tutoriais/tuto14.asp?id=1 24/04/2013