BACKUP DE BANCO DE DADOS
Ola pessoal tenho um pragraminha que tem um baco de dados MDB 7.0 feito pelo proprio VisData do vb, o banco de dados fica na seguinte pasta c:\cola\banco\banco.mdb existe uma pasta c:\cola\banco\backup gostaria de fazer uma rotina de copiar o arquivo para Banco.mdb para a pasta backup com uma barra dee status para saber o progresso da cópia e quando foi concluido o backup. vlw galera
Davys utilize o SHCopyfile, ele mostra a janela de cópia do windows explorer (das pastas voando uma na outra)
Em um módulo coloque o seguinte:
no botao ou qq outro lugar coloque o seguinte:
Em um módulo coloque o seguinte:
Type SHFILEOPSTRUCT
hWnd As Long
wFunc As Long
pFrom As String
pTo As String
fFlags As Long
fAnyOperationsAborted As Long
hNameMappings As Long
lpszProgressTitle As String
End Type
Private Declare Function SHFileOperation Lib "shell32.dll" Alias "SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long
Public Sub SHCopyFile(ByVal from_file As String, ByVal to_file As String)
Dim sh_op As SHFILEOPSTRUCT
With sh_op
.hWnd = 0
.wFunc = FO_COPY
.pFrom = from_file & vbNullChar & vbNullChar
.pTo = to_file & vbNullChar & vbNullChar
.fFlags = FOF_ALLOWUNDO
End With
SHFileOperation sh_op
End Subno botao ou qq outro lugar coloque o seguinte:
SHCopyFile "c:\cola\banco\banco.mdb", "c:\cola\banco\bancoBackup.mdb"
esta dando erro tenho q selecionar alguma referencia?
erro
Cannot define a Public user-defined type whitin a private object module
erro
Cannot define a Public user-defined type whitin a private object module
Oops!! no módulo faltou duas linhas segue o correto:
Em um módulo coloque o seguinte:
no botao ou qq outro lugar coloque o seguinte:
Em um módulo coloque o seguinte:
Private Const FO_COPY = &H2
Private Const FOF_ALLOWUNDO = &H40
Type SHFILEOPSTRUCT
hWnd As Long
wFunc As Long
pFrom As String
pTo As String
fFlags As Long
fAnyOperationsAborted As Long
hNameMappings As Long
lpszProgressTitle As String
End Type
Private Declare Function SHFileOperation Lib "shell32.dll" Alias "SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long
Public Sub SHCopyFile(ByVal from_file As String, ByVal to_file As String)
Dim sh_op As SHFILEOPSTRUCT
With sh_op
.hWnd = 0
.wFunc = FO_COPY
.pFrom = from_file & vbNullChar & vbNullChar
.pTo = to_file & vbNullChar & vbNullChar
.fFlags = FOF_ALLOWUNDO
End With
SHFileOperation sh_op
End Subno botao ou qq outro lugar coloque o seguinte:
SHCopyFile "c:\cola\banco\banco.mdb", "c:\cola\banco\bancoBackup.mdb"
msgbox "Backup concluÃdo"
continua a dar erro
esse parte do codigo fica grifada Type SHFILEOPSTRUCT
e aparece o erro
Compile error:
Cannot Define a Public User-dedfined type within a private object madule.
esse parte do codigo fica grifada Type SHFILEOPSTRUCT
e aparece o erro
Compile error:
Cannot Define a Public User-dedfined type within a private object madule.
Davys, coloque em um módulo q é melhor.
pow pessoal vlw mesmo consegui fazendo com o modulo, mas so mais umma duvida, ficaria complicado eu salvar o arquivo até a 5 geração, tipow banco1.mdb banco2.mdb até o 5 quando chegar no 5 começa a apagar a primeira geração e algum jeito de armazenar a data q foi feito o backup?
a tem outrta coisa quando eu mando ele copiar o arquivo como o arquivo ja existe ele aparece a tela do windows perguntando se ele deseja substituir o arquivo existente tem como eu forçar ele copiar sem perguntar isso
Davys é o seguinte qto a colocar data no arquivo coloque assim:
SHCopyFile "c:\cola\banco\banco.mdb", "c:\cola\banco\bancoBackup" & day(date) & month(date) & year(date) & ".mdb"
o arquivo vai ser copiado asim: bancoBackup07012005.mdb
Qto a apagar arquivos anteriores entra aki q tem um exemplo legal de como fazer isso.
http://www.vbmania.com.br/vbmdetail.php?varID=1746
Qto a substituir: verifique se o aruivo já existe e se ele existir apague ele, e depois faça o backup.
Para verificar se o arquivo existe coloque a seguinte função num Módulo
depois coloque o seguinte no form ou botão (sei lá qq lugar):
SHCopyFile "c:\cola\banco\banco.mdb", "c:\cola\banco\bancoBackup" & day(date) & month(date) & year(date) & ".mdb"
o arquivo vai ser copiado asim: bancoBackup07012005.mdb
Qto a apagar arquivos anteriores entra aki q tem um exemplo legal de como fazer isso.
http://www.vbmania.com.br/vbmdetail.php?varID=1746
Qto a substituir: verifique se o aruivo já existe e se ele existir apague ele, e depois faça o backup.
Para verificar se o arquivo existe coloque a seguinte função num Módulo
Function FileExists(ByVal filename As String) As Integer
Dim Temp$
FileExists = True
On Error Resume Next
Temp$ = FileDateTime(filename)
Dim MB_OK
Select Case Err
Case 53, 76, 68
FileExists = False
Err = 0
Case Else
If Err <> 0 Then
MsgBox "Numero erro : " & Err & Chr$(10) & Chr$(13) & " " & Error, MB_OK, "Error"
End
End If
End Select
End Functiondepois coloque o seguinte no form ou botão (sei lá qq lugar):
If FileExists("c:\sml55.gif") = False Then
MsgBox "O arquivo não existe"
Else
MsgBox "O arquivo foi encontrado"
End If
Cara Funcionou essa pra saber se o arquivo existe mais nao estou entendendo aquele link q vc me passou, de como deletar o Arquivo
Davys,
O link de deletar o arquivo é para q vc possa apagar backups anteriore que vc tenha feito. Assim vc libera espaço.
O link de deletar o arquivo é para q vc possa apagar backups anteriore que vc tenha feito. Assim vc libera espaço.
Tópico encerrado , respostas não são mais permitidas