... Assinatura do site por 3 anos + Kit MontaRibbons + 3 Livros em PDF + Diversas Revistas (pdf) de brinde, por apenas R$145,00
(
podendo parcelar em até 10 vezes no cartão de crédito)...

Clique aqui e obtenha mais detalhes do nosso kit completo e de como comprar.


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 SP3

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:

Depurador do VBA

 

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

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)

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:

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.

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

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.


 

Faça o login aqui para ter acesso ao vídeo.


Sucesso!


 

 


77 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

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 ?

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

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,

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.


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!

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,

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.

Lelson Barbosa   25/04/2013 12:59:39

Caro Avelino,

Estou a fazer umas mudanças ao aplicativo maestro para a minha realidade só que depois de muitas alterações nele não consigo utiliz-lo em rede da um erro. Obrigado

Lelson Barbosa   11/05/2013 04:19:23

Socorro Avelino.

Acho que fiz tudo direitinho na configuraçao do backup automático, mas me da o seguinte erro: 53 - File not found.

Ivair Martins   17/06/2013 16:42:17

Boa tarde Avelino,

Muito boa as suas explicações, estou com o mesmo problema do Mario Junior > ERRO: 2285 O Microsoft Access não pode criar o arquivo de saída.

Vc poderia me dar uma luz.

Obrigado...

Edu Cav   29/08/2013 17:10:04

Boa tarde Avelino,

Abri o Maestro e não achei o mod_Procurarpasta

Só achei o mod_Procurararquivo

Daí o Backup não funciona em meu projeto de BD.

Alguma sugestão ?

Avelino Sampaio   29/08/2013 17:14:35

Edu,

dentro deste módulo tem a função fncLocalizarPasta()

Sucesso!

Edu Cav   29/08/2013 18:32:49

Boa noite Avelino,

Meu projeto está quase pronto, porém o backup está disparando mensagens esquisitas.
Meu Office é 64 bits.
Será por isto ?

Avelino Sampaio   30/08/2013 03:23:11

Edu,

e quanto ao backup do Maestro, funciona no seu 64 bits ? Se funciona, reveja o seu código.

Sucesso!

Ronilson Jose da Silva   27/11/2013 18:46:03

Avelino estou com um pequeno problema no meu vba a medida que digito os códigos e aperto a tecla espaço o curso retorna ao final da palavra quando digito um comando e no final acrescento o ponto (.) a caixa de atributos abre mas fecha rapidamente pode me ajudar a resolver este problema.

Gilliam   28/11/2013 14:28:14

Avelino qual parte do código tenho que alterar para que no arquivo do backup apareça o nome do meu projeto, ao invés do maestro.

Obrigado.

Avelino Sampaio   29/11/2013 07:13:40

Giliam,

No Maestro a origem do arquivo é armazenada na tabela tblCaminhoBe. O campo é preenchido pela função fncOrigemBackup

Private Function fncOrigemBackup() As String
fncOrigemBackup = DLookup("path_0", "tblCaminhoBe")
End Function

Resumindo, vc teria que alterar o campo path_0 da tabela tblCaminhoBe

Sucesso!

Avelino Sampaio   29/11/2013 07:17:57

Ronilson,

Vc tem erro na escrita do código em algum ponto ou um erro de referência.

Para verrificar a referência:

Clique no menu "ferramentas" > clique em referências > Verifique se tem alguma referência AUSENTE

Para verificar erro na escrita:

Clique no menu DEPURAR > clique em COMPILAR > corrija o erro se houver > repita o processo até não encontrar mais erro.

NO aguardo

Carlos Fernandes   12/04/2014 12:20:52

É possível implementar esse backup automático no agendador de tarefas do Windows XP?

Vanderlei   12/04/2014 17:07:53

Olá Avelino

estou implementando o o backup do Maestro no meu projeto, aparentemente esta correto, não consigo enxergar o erro. Quando executo o backup a barra de progresso vai até ao meio e depois surge um aviso - 53 - O Arquivo não foi localizado

C:\Escritorio Alves\Escriorio Alves - 24032014_be.accdb
C:\Escritorio Alves\backup\Escriorio Alves - 24032014_be120414-170214.accdb

Qual arquivo não foi localizado ?

Avelino Sampaio   14/04/2014 06:45:28

Vanderlei,

verifique se a falta do T na palavra Escritório seria a causa.

Sucesso!

Vanderlei   14/04/2014 20:35:31

Era isso mesmo Avelino, um simples T e olha que poderia olhar mais 50 vezes que não iria enxergar
Valew pela atenção

Vanderlei

Rafael Miranda Ribeiro   21/05/2014 12:19:15

quero criar uma progresso pra quando eu clicar no botão copiar exibir um progresso.

Sylvio   13/02/2015 17:57:28

Sou novo usuário de access. E fui abrir uma pasta de trabalho com diversas tabelas e arquivos de consulta. e acabei clicando em novo e apagou todos os arquivos que estavam na pasta. Tem forma de recuperar

Gerson   13/09/2016 12:28:35

Boa tarde Avelino, estou usando o backup automático atraves do agendador de tarefas.
Porem quando o precesso se inicia o Access abre e fecha muito rapidamente a janela
de apresentação, aquela onde mostra "Office 2010 Microsoft Corporation. Todos os direitos reservados", etc, mostrando que algo abriu e fechou muito rapido.
Teria como desabilitar esta tela ou oculta-la para que o backup fique 100% oculto?
Grato.


Envie seu comentário: