MaximoAccess

Caro Usuário, não tire as suas duvidas nas Salas de Repositório, abra sempre um novo tópico relacionado, nas salas destinadas para o efeito, como Sala de Tabelas, Consultas, Formulários, Relatórios, Macros, Módulos e VBA.

Obrigado

Administração do MaximoAccess

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    Backup Automático pela rede

    Compartilhe

    FlavioLima
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 89
    Registrado : 14/02/2016

    Backup Automático pela rede

    Mensagem  FlavioLima em Ter 19 Abr 2016, 16:11

    Pessoal, bom dia

    Pesquisando vários tópicos encontrei um código criado pelo mestre JPaulo num exemplo chamado Marcos_BackupBanco.mdb

    No meu local de trabalho tem 3 máquinas, uma é o servidor, BE/FE e as outras 2 funcionam com FE com vinculação de tabelas.

    Eu gostaria de ajuda pra ajustar o código abaixo para que a função BackBD analise se a pasta existe na rede, e caso não exista crie, salvando um backup por dia.


    A pasta que teria o caminho de rede pode se chamar Backup1
    No nome do servidor a título de exemplo pode se chamar Secretaria

    É possível?

    Segue o exemplo, mudei apenas os nomes e alterei para backup para diário, creio que estava mensal:

    JPaulo escreveu:

    Function BackBD()
    'elaborado por: JPaulo - 11/10/2006
    'objectivo: criar (1) uma copia de segurança por mês
    ' pode ser alterado para (1) uma por dia, ou uma (1) por ano, para
    'isso basta alterarem o Format(Now(), "_mmyyyy") para Format(Now(), "_ddmmyyyy")
    'O caminho tem de ter o nome da pasta, neste caso Backup e o nome que querem dar
    ' à MDB da cópia.

    Dim CopiaSegura As Object
    Dim Caminho As String
    Caminho = "C:\Backup1\Backup" 'Nome da pasta e nome de inicio para o banco de backup
       Set CopiaSegura = CreateObject("Scripting.FileSystemObject")
       CopiaSegura.CopyFile CurrentProject.Path & "\meubd.mdb", Caminho & Format(Now, "_ddmmyyyy") & ".mdb"
    End Function


    Private Sub Form_Close()
    Call BackBD
    End Sub

    Achei este exemplo do metre nobezinho (paradoxo) para salvar em rede, mas não sei juntar os 2 em linguagem de código. Alterei tb alguma coisa nele e coloquei no caminho C: ...

    nobezinho escreveu:
    CopiaSegura.CopyFile  "\\Secretaria\C:\Backup1\meubd.accdb", Caminho & "\" & Backuprede &  "_" & Format(Now, "_ddmmyyyy") & ".accdb"

    Ultimo questionamento:

    Eu preciso definir o caminho da rede onde encontrar o "back end" e o caminho de rede onde a cópia será salva...

    O caminho da rede onde o "back end" está corresponde a linha que começa em "CopiaSegura.CopyFile...."?

    No meu caso a pasta onde o sistema estará não será a mesma em que vão ser salvos os backups, pra não correr risco de numa limpeza alguém deletar o back end.

    Achei também outro tópico do Mestre JPaulo, que tem um código que salva em C: três vezes ao dia. No meu caso eu necessito que salve na rede 1 x por dia.

    JPaulo escreveu:Private Sub Form_Close()
    'elaborado por: JPaulo - 11/10/2006
    'objectivo: criar (1) uma copia de segurança por mês
    ' pode ser alterado para (1) uma por dia, ou uma (1) por ano, para
    'isso basta alterarem o Format(Now(), "_mmyyyy") para Format(Now(), "_ddmmyyyy")
    'O caminho tem de ter o nome da pasta, neste caso Backup e o nome que querem dar
    ' à MDB da cópia.
    'Revisão em 30-09-2010, para manter os 3 ultimos backups do dia.
    On Error Resume Next

    Dim fso As Object
    Set fso = CreateObject("Scripting.FileSystemObject")
    If fso.FolderExists("c:\Backup Condominio") Then ' verifica se já existe a pasta
    Else
    MkDir "c:\Backup Condominio" 'se não existir cria
    End If

    Dim CopiaSegura As Object
    Dim Caminho As String
    Dim CopiaBancoTabelas As Object
    Dim CaminhoTabelas As String
    Dim x, y, z As String

    Caminho = "c:\Backup Condominio\Backup" 'Nome da pasta e nome de inicio para o banco de backup
    Set CopiaSegura = CreateObject("Scripting.FileSystemObject")

    x = Caminho & Format(Now, "_ddmmyyyy") & "_" & 1 & ".accdb"
    y = Caminho & Format(Now, "_ddmmyyyy") & "_" & 2 & ".accdb"
    z = Caminho & Format(Now, "_ddmmyyyy") & "_" & 3 & ".accdb"


    If Not (Len(Dir(x, vbDirectory)) > 0) Then
    CopiaSegura.CopyFile CurrentProject.Path & "\CONDO com RIBBON.accdb", Caminho & Format(Now, "_ddmmyyyy") & "_" & 1 & ".accdb"
    ElseIf Not (Len(Dir(y, vbDirectory)) > 0) Then
    CopiaSegura.CopyFile CurrentProject.Path & "\CONDO com RIBBON.accdb", Caminho & Format(Now, "_ddmmyyyy") & "_" & 2 & ".accdb"
    Else
    Kill z
    CopiaSegura.CopyFile CurrentProject.Path & "\CONDO com RIBBON.accdb", Caminho & Format(Now, "_ddmmyyyy") & "_" & 3 & ".accdb"
    End If
    Quit acQuitSaveAll
    End Sub

    Obrigado pela ajuda.


    Última edição por FlavioLima em Seg 25 Abr 2016, 20:59, editado 1 vez(es)

    FlavioLima
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 89
    Registrado : 14/02/2016

    Re: Backup Automático pela rede

    Mensagem  FlavioLima em Seg 25 Abr 2016, 20:56

    up

    fsouza32
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 95
    Registrado : 22/01/2013

    Re: Backup Automático pela rede

    Mensagem  fsouza32 em Ter 26 Abr 2016, 13:35

    Olá!
    Eu uso este código em um modulo e chamo ele depois na tela de login de minha aplicação. Espero que ajude vc

    Public Function BackBD()
    'elaborado por: JPaulo - 11/10/2006
    'objectivo: criar (1) uma copia de segurança por mês
    ' pode ser alterado para (1) uma por dia, ou uma (1) por ano, para
    'isso basta alterarem o Format(Now(), "_mmyyyy") para Format(Now(), "_ddmmyyyy")
    'O caminho tem de ter o nome da pasta, neste caso Backup e o nome que querem dar
    ' à MDB da cópia.

    Dim CopiaSegura As Object
    Dim Caminho As String
    Caminho = "\\Arpanli\fabiao\SysColoniaDeFerias\CopiaDeSegurancaDaColonia" 'Nome da pasta e nome de inicio para o banco de backup
    Set CopiaSegura = CreateObject("Scripting.FileSystemObject")
    CopiaSegura.CopyFile "C:\Users\SecGeral\Documents\SistemaDaColoniaDeFerias\BancoDeDados\SysColoniaDeFeriasServidor.accdb", Caminho & ".accdb"
    ' serve pra colocar data no fim e sempre gerar uma cópia por dia & Format(Now, "_dd-mm-yyyy")
    End Function

    FlavioLima
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 89
    Registrado : 14/02/2016

    Re: Backup Automático pela rede

    Mensagem  FlavioLima em Ter 26 Abr 2016, 20:32

    Tire-me uma dúvida fsouza, no seu caso o "back end" está em uma máquina só? no caso seria este caminho? "C:\Users\SecGeral\Documents\SistemaDaColoniaDeFerias\BancoDeDados\SysColoniaDeFeriasServidor.accdb"

    e a cópia de segurança você está salvando na rede? "\\Arpanli\fabiao\SysColoniaDeFerias\CopiaDeSegurancaDaColonia"

    É isto?

    No meu caso eu quero puxar o back end via rede e salvar a cópia na mesma máquina que tem o servidor só q em pastas diferentes.


    Dim CopiaSegura As Object
    Dim Caminho As String
    Caminho = "\\Arpanli\fabiao\SysColoniaDeFerias\CopiaDeSegurancaDaColonia" 'Nome da pasta e nome de inicio para o banco de backup
    Set CopiaSegura = CreateObject("Scripting.FileSystemObject")
    CopiaSegura.CopyFile "C:\Users\SecGeral\Documents\SistemaDaColoniaDeFerias\BancoDeDados\SysColoniaDeFeriasServidor.accdb", Caminho & ".accdb"
    ' serve pra colocar data no fim e sempre gerar uma cópia por dia & Format(Now, "_dd-mm-yyyy")

    End Function

    fsouza32
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 95
    Registrado : 22/01/2013

    Re: Backup Automático pela rede

    Mensagem  fsouza32 em Qua 27 Abr 2016, 12:15

    Bom dia!
    Sim meu Back End está na máquiana onde tem o accdb que se conecta a ele e ao abrir ele já faz o backup em minha máquina que esta na rede.

    Tenta assim:
    Caminho = "\\SuaMaquinaNaRede\PastaOndeSeraSalvoACopia\NomeDoArquivoDeBackup" 'Nome da pasta e nome de inicio para o banco de backup

    CopiaSegura.CopyFile "\\SuaMaquinaNaRede\PastaOndeEstaSeuBackEnd\NomeDoArquivoBackEnd.accdb", Caminho & ".accdb"

    Pois como ele busca o arquivo na máquina da rede para salvar ele tb pode salvar a cópia na rede tb, verifique se a máquina na rede esta com IP fixo, se estiver pode colocar o ip no lugar do nome de rede, se for dinâmico coloque o nome da máquina

    Tenta ae e dê um feedback!

    FlavioLima
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 89
    Registrado : 14/02/2016

    Re: Backup Automático pela rede

    Mensagem  FlavioLima em Qua 27 Abr 2016, 16:20

    Obrigado pela ajuda!

    Vou testar, mas vou levar um ou dois dias pra dar uma resposta, pois tenho de implementar três modelos de relatórios antes de testar a cópia.

    FlavioLima
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 89
    Registrado : 14/02/2016

    Re: Backup Automático pela rede

    Mensagem  FlavioLima em Qui 05 Maio 2016, 20:49

    Consegui!

    Criei um formulário de "pré-saída". Orientando o usuário para a questão da segurança dos backups, para fazer a transferência dos arquivos de tempos em tempos p um hd externo e a limpeza das copias excedentes nos hds por mês, e coloquei dois botões para o usuário acessar as pastas dos arquivos direto pelo formulário, usando também da contribuição dos colegas.

    Para abrir a pasta na rede e no pc criei botões e no evento ao abrir:

    Adaptado para o caminho da rede, código original: JPaulo escreveu:
    Shell "C:\WINDOWS\explorer.exe """ & "C:\Sistema\SistemaBK" & "", vbNormalFocus
    Shell "C:\WINDOWS\explorer.exe """ & "\\Servidor-pc\Sistema\SistemaBK" & "", vbNormalFocus

    Então no formulário de "pré-saída" adicionei no evento "ao carregar" e no evento "ao abrir" dois códigos, baseados no que os colegas contribuíram nos posts.

    Ficou assim:
    Adaptado de 2 posts. Códigos originais JPaulo, contribuição dos demais colegas sobre como configurar o caminho pela rede. escreveu:
    Function BackBD()
    'elaborado por: JPaulo - 11/10/2006
    'objectivo: criar (1) uma copia de segurança por mês
    ' pode ser alterado para (1) uma por dia, ou uma (1) por ano, para
    'isso basta alterarem o Format(Now(), "_mmyyyy") para Format(Now(), "_ddmmyyyy")
    'O caminho tem de ter o nome da pasta, neste caso Backup e o nome que querem dar
    ' à MDB da cópia.

    Dim fso As Object
    Set fso = CreateObject("Scripting.FileSystemObject")
    If fso.FolderExists("c:\Sistema\SistemaBK") Then
    Else
    MkDir "c:\Sistema\SistemaBK"
    End If

    Dim CopiaSegura As Object
    Dim Caminho As String
    Caminho = "C:\Sistema\SistemaBK\SistemaDATA" 'Nome da pasta e nome de inicio para o banco de backup
    Set CopiaSegura = CreateObject("Scripting.FileSystemObject")
    CopiaSegura.CopyFile "\\Servidor-pc\Sistema\Sistema_be.accdb", Caminho & Format(Now, "_ddmmyyyy") & ".mdb"
    End Function

    Private Sub BTN_FECHAR_Click()
    DoCmd.Quit
    End Sub

    Private Sub Form_Load()
    Call BackBD
    End Sub

    Private Sub Form_Open(Cancel As Integer)
    Call BackBD2
    End Sub

    Function BackBD2()
    'elaborado por: JPaulo - 11/10/2006
    'objectivo: criar (1) uma copia de segurança por mês
    ' pode ser alterado para (1) uma por dia, ou uma (1) por ano, para
    'isso basta alterarem o Format(Now(), "_mmyyyy") para Format(Now(), "_ddmmyyyy")
    'O caminho tem de ter o nome da pasta, neste caso Backup e o nome que querem dar
    ' à MDB da cópia.

    Dim CopiaSegura As Object
    Dim Caminho As String
    Caminho = "\\Servidor-pc\Sistema\SistemaBK\SistemaDATA" 'Nome da pasta e nome de inicio para o banco de backup
    Set CopiaSegura = CreateObject("Scripting.FileSystemObject")
    CopiaSegura.CopyFile "\\Servidor-pc\Sistema\Sistema_be.accdb", Caminho & Format(Now, "_ddmmyyyy") & ".mdb"
    End Function


      Data/hora atual: Sex 09 Dez 2016, 09:33