USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  TEKKI - Como copiar um BD em uso?
Scaliburth
BELO HORIZONTE
MG - BRASIL
ENUNCIADA !
Postada em 19/12/2005 13:06 hs            
Ola pessoal,

 Gostaria da ajuda de vocês. Estou precisando copiar todos os dias, 3 banco de dados, para isso fiz criei um botao para fazer isto. Acontece que quando o banco de dados está sendo utilizado ele não copia e devido a isso não termina o código.
 
 Já tentei de várias maneiras, com fileCopy, shell "copy", com timer para verificar quando o BD não estivesse sendo utilizado e de outras várias formas.
 Buscando no forum vi um tópico semelhante do nosso colega "Tekki", que está abaixo.
"
 'Se o banco de dados não estiver em uso, pode ser assim.
  FileCopy "C:Origem", "C:Destino"
 
 'Se o Banco estiver em uso, use assim:
  http:\www.vbweb.com.br/forum_resp.asp?Codigo=103325
"
 Acontece que este tópico já foi excluído, e gostaria de saber se alguém sabe como posso copiar um banco de dados em uso.

Agradeço a todos pela ajuda.
Até mais.
 
   
ghost_jlp
Pontos: 2843 Pontos: 2843 Pontos: 2843 Pontos: 2843
SÃO PAULO
SP - BRASIL
Postada em 19/12/2005 15:27 hs            
Puxa eu não sei como está na dica mas eu tive este problema tb... olha a solução talvez não seja das melhores mas serviu... eu fecho a conexão com o banco, faço a cópia, e depois conecto novamente... isso sem fechar o sistema só a conexão. Só q neste caso o sistema tem q ser fechado em todas as estações q tiver usando o banco ou deixar de usar o sistema enquanto copia o banco...
 
tentei
 
qq dúvida é só postar
 
t+
     
Marcelo Amaral
SANTO ANDRÉ
SP - BRASIL
ENUNCIADA !
Postada em 19/12/2005 22:03 hs            
oi, em um modulo
 
Option Explicit
Public Declare Function SHFileOperation Lib "shell32.dll" Alias "SHFileOperationA" (lpFileOp As Any) As Long
Public Declare Sub SHFreeNameMappings Lib "shell32.dll" (ByVal hNameMappings As Long)
Public Declare Sub CopyMemory Lib "KERNEL32" Alias "RtlMoveMemory" (hpvDest As Any, hpvSource As Any, ByVal cbCopy As Long)
Public Type SHFILEOPSTRUCT
    hwnd As Long
    wFunc As FO_Functions
    pFrom As String
    pTo As String
    fFlags As FOF_Flags
    fAnyOperationsAborted As Long
    hNameMappings As Long
    lpszProgressTitle As String 'only used if FOF_SIMPLEPROGRESS
End Type
Public Enum FO_Functions
    FO_MOVE = &H1
    FO_COPY = &H2
    FO_DELETE = &H3
    FO_RENAME = &H4
End Enum
Public Enum FOF_Flags
    FOF_MULTIDESTFILES = &H1
    FOF_CONFIRMMOUSE = &H2
    FOF_SILENT = &H4
    FOF_RENAMEONCOLLISION = &H8
    FOF_NOCONFIRMATION = &H10
    FOF_WANTMAPPINGHANDLE = &H20
    FOF_ALLOWUNDO = &H40
    FOF_FILESONLY = &H80
    FOF_SIMPLEPROGRESS = &H100
    FOF_NOCONFIRMMKDIR = &H200
    FOF_NOERRORUI = &H400
    FOF_NOCOPYSECURITYATTRIBS = &H800
    FOF_NORECURSION = &H1000
    FOF_NO_CONNECTED_ELEMENTS = &H2000
    FOF_WANTNUKEWARNING = &H4000
End Enum
Public Type SHNAMEMAPPING
    pszOldPath As String
    pszNewPath As String
    cchOldPath As Long
    cchNewPath As Long
End Type
Public result As Long
Public Function SHFileOP(ByRef lpFileOp As SHFILEOPSTRUCT) As Long
    Dim lenFileop As Long
    Dim foBuf() As Byte
    lenFileop = LenB(lpFileOp)
    ReDim foBuf(1 To lenFileop) 'the size of the structure.
    Call CopyMemory(foBuf(1), lpFileOp, lenFileop)
    Call CopyMemory(foBuf(19), foBuf(21), 12)
    result = SHFileOperation(foBuf(1))
    SHFileOP = result
End Function

 
 
Para Chamar A função em um Form
 
Private Sub FazerBackup()
    Dim linha As String
    linha = Chr(10) & Chr(13)
    Me.Visible = False
    On Error GoTo DBErrorHandler
   
    Copiar App.Path & "*.*", "E:Sistema Br Trans"
    On Error GoTo 0
    Exit Sub
DBErrorHandler:
    End
SubExit:
    Unload Me
End Sub
Sub Copiar(strOrigem As String, strDestino As String)
With fileop
  .hwnd = 0
 
  .wFunc = FO_COPY
 
  .pFrom = strOrigem & vbNullChar & vbNullChar
 
  .pTo = strDestino & vbNullChar & vbNullChar
 
  .lpszProgressTitle = "Aguarde, realizando copia..."
 
  .fFlags = FOF_NOCONFIRMATION 'FOF_NOCOPYSECURITYATTRIBS 'FOF_MULTIDESTFILES     FOF_SIMPLEPROGRESS Or
End With
lret = SHFileOP(fileop)
If result <> 0 Then 'a operaçao falhou
   MsgBox Err.MaxDllError 'exibe o erro retornado pela API
Else
  If fileop.fAnyOperationsAborted <> 0 Then
     MsgBox "Operação falhou !!!"
  End If
End If
End Sub
   
Página(s): 1/1    


Seu Nome:

Seu eMail:

ALTERAR PARA MODO HTML
Mensagem:

[:)] = 
[:P] = 
[:(] = 
[;)] = 

HTML DESLIGADO

     
 VOLTAR

  



CyberWEB Network Ltda.    © Copyright 2000-2022   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página