Este código VBA copia todas as tabelas contidas no banco de dados Access, renomeando-as, e cria uma tabela de log, caso não exista, para registrar a execução do backup:
Sub CopiaTabelasComRenomeacao()
Dim db As DAO.Database
Dim tdf As DAO.TableDef
Dim nomeTabela As String
Dim nomeTabelaCopia As String
Dim dataHora As String
Dim rs As DAO.Recordset
On Error GoTo TrataErro
' Abre o banco de dados atual
Set db = CurrentDb
' Formata a data e hora atual para usar no nome das tabelas copiadas
dataHora = Format(Now, "yyyymmdd_hhmmss")
' Percorre todas as tabelas no banco de dados atual
For Each tdf In db.TableDefs
nomeTabela = tdf.Name
' Ignora as tabelas de sistema (começam com "MSys")
If Left(nomeTabela, 4) <> "MSys" Then
' Define o novo nome da tabela com a data e hora incluída
nomeTabelaCopia = nomeTabela & "_" & dataHora
' Copia a tabela com o novo nome
db.Execute "SELECT * INTO [" & nomeTabelaCopia & "] FROM [" & nomeTabela & "]"
' Registra a cópia na tabela de log
Call RegistraLog(db, "Cópia de Tabela", "Tabela '" & nomeTabela & "' copiada como '" & nomeTabelaCopia & "'")
End If
Next tdf
MsgBox "Cópias de tabelas concluídas com sucesso."
' Limpeza de variáveis
Set tdf = Nothing
Set db = Nothing
Exit Sub
TrataErro:
' Registra o erro na tabela de log
Call RegistraLog(db, "Erro durante cópia", Err.Description)
MsgBox "Ocorreu um erro: " & Err.Description, vbCritical
End Sub
Sub RegistraLog(ByVal db As DAO.Database, ByVal acao As String, ByVal descricao As String)
Dim rs As DAO.Recordset
' Abre ou cria a tabela de log
On Error Resume Next
Set rs = db.OpenRecordset("tblBackupLog", dbOpenTable)
If Err.Number <> 0 Then
' Cria a tabela de log se não existir
db.Execute "CREATE TABLE tblBackupLog (ID COUNTER PRIMARY KEY, Acao TEXT(255), Descricao TEXT(255), DataHora DATETIME)"
Set rs = db.OpenRecordset("tblBackupLog", dbOpenTable)
End If
On Error GoTo 0
' Adiciona um novo registro de log
rs.AddNew
rs!Acao = acao
rs!Descricao = descricao
rs!DataHora = Now
rs.Update
rs.Close
Set rs = Nothing
End Sub
Explicação do Código
Conexão com o Banco de Dados
O código abre o banco de dados atual (CurrentDb).
Renomeação e Cópia das Tabelas:
Cada tabela no banco de dados é percorrida usando um loop For Each.
O nome da cópia da tabela é gerado adicionando a data e hora ao nome original da tabela.
A cópia é feita utilizando a instrução SELECT INTO.
Registro de Logs:
A função RegistraLog é usada para registrar cada operação de cópia em uma tabela de log chamada tblBackupLog. Se essa tabela não existir, ela é criada automaticamente.
Os registros incluem a ação realizada e uma descrição, juntamente com a data e hora da operação.
Tratamento de Erros:
O código captura e trata erros, registrando qualquer problema na tabela de log e informando o usuário via MsgBox.
Como Usar
Invocação: Execute este código diretamente no Access para criar cópias de todas as tabelas no banco de dados, com nomes renomeados para incluir a data e hora da cópia.
Logs: Consulte a tabela tblBackupLog para ver o histórico de cópias e qualquer erro que possa ter ocorrido.
Este código é útil para criar cópias de segurança das tabelas no próprio banco de dados, mantendo um histórico de backups realizados e facilitando a rastreabilidade.
Clique aqui e nos contate via What's App para avaliarmos seus projetos
Envie comentários e sugestões e compartilhe este artigo!
brazilsalesforceeffectiveness@gmail.com
Nenhum comentário:
Postar um comentário