MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

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 : 90
    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 : 90
    Registrado : 14/02/2016

    Re: Backup Automático pela rede

    Mensagem  FlavioLima em Seg 25 Abr 2016, 20:56

    up
    avatar
    fsouza32
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 100
    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 : 90
    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
    avatar
    fsouza32
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 100
    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 : 90
    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 : 90
    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: Qui 19 Out 2017, 08:19