PDA

Visualizza versione completa : [vb] backup database


maefe
20-11-2006, 10.05.26
Vorrei sapere se è possibile e come, inserire in programma vb una stringa SQL per fare il backup di un database

miciomao
21-11-2006, 09.07.39
che tipo di database ?

maefe
21-11-2006, 16.10.52
access

miciomao
21-11-2006, 16.33.23
Non faccio ulteriori domande ma le soluzioni sono 2


1) Se utilizzi un FE e un BE

naturalmente cambia le dir

N.b.:quanto segue una volta adattato è perfettamente funzionante ma solo per
lanciare il backup del BackEnd direttamente dal Front_End ok?

Crea un file VBS e incollaci (modificando dove opportuno quantoi segue):


'************************************************* ******************
'start code
'************************************************* ******************
'Nome: Compact.vbs
'Descrizione: compatta e riapre l'mdb in uso
'Autore:
'Creato: 21/07/2005
'Utilizzo: dall'mdb eseguire:
' Dim strPath As String
' strPath = "wscript.exe " & "C:\Temp\Compact.vbs " & Chr$(34) &
CurrentDb.Name & Chr$(34)
' Call Shell(strPath, vbNormalFocus)
'
'************************************************* ******************


Set objArgs = WScript.Arguments
Call Init()


Dim objMDB
Dim objFSO
Dim strMdbFile
Dim strTmpFile


'nome e path dell'mdb passato come argomento allo script
strMdbFile = objArgs(0)
Set objFSO = CreateObject("Scripting.FileSystemObject")
'genera un nome file temporaneo
strTmpFile = objFSO.GetTempName
strTmpFile = Left(strMdbFile, InstrRev(strMdbFile, "\")) & strTmpFile
'si collega alla sessione access aperta
Set objMDB = WScript.GetObject(strMdbFile)
'minimizza la finestra di access
objMDB.RunCommand 11
'chiude l'mdb in uso
objMDB.CloseCurrentDatabase
'compatta l'mdb in un file temporaneo
objMDB.Dbengine.CompactDatabase strMdbFile, strTmpFile
'Msgbox strMdbFile & " -> " & strTmpFile
'elimina l'mdb originale
objFSO.DeleteFile(strMdbFile)
'copia il file tempraneo nel'mdb originale
objFSO.CopyFile strTmpFile, strMdbFile
'elimina il file temporaneo
objFSO.DeleteFile(strTmpFile)
'riapre l'mdb compattato
objMDB.OpenCurrentDatabase strMdbFile
'maximizza la finestra di access
objMDB.RunCommand 10
Set objFSO = nothing
Set objMDB = nothing


'************************************************* ******************
'Controlla che il parametro sia un file mdb
'************************************************* ******************
Sub Init()
'controlla che l'argomento sia un mdb
If objArgs.Count < 1 Then WScript.Quit
If Right(objArgs(0),4) <> ".mdb" Then
Msgbox "Il file selezionato non e' un mdb.", 16, "Errore!"
WScript.Quit
End If
End Sub
'************************************************* ******************
'end code
'************************************************* ******************


Sull'evento uscita\chiusura o dove ritieni più consono ci scrivi:


Call BackUp


e tale chiamata punta al modulo:


Function BackUp()
'************************************************* *************************_*
'Funzione: Esegue il BackUp del BackEnd direttamente dal FrontEnd
'Note: Prima di lanciare il presente modulo, lanciare modulo MD_ChiudiForm
'************************************************* *************************_*


Dim DirBackup As String
Dim DataBackup As String
Dim NomeFile As String
Dim StringaBackup As String
Dim strPathDb As String
intScelta = MsgBox("Effettuare il backup degli archivi?", vbApplicationModal
+ vbQuestion + vbYesNo)
If intScelta = vbNo Then
Exit Function
Else
If Dir("C:\OP_PDF\Backup\", vbDirectory) = "" Then
MkDir ("C:\OP_PDF\Backup\") ' Se non esiste crea la
Directory per il BackUp
Else
ChiudiForms
End If
DirBackup = "C:\OP_PDF\Backup\"
DataBackup = Format(Date, "dd-mm-yyyy")
NomeFile = DataBackup & "-backup" & ".mdb" 'Costruzione del nume del
file backuppato
StringaBackup = DirBackup & NomeFile
strPathDb = "C:\OP_PDF\op_pdf_dati.mdb" 'Stringa Path BackEnd
FileCopy strPathDb, StringaBackup
MsgBox "Backup degli archivi completato.", vbApplicationModal +
vbInformation + vbOKOnly
End If
End Function

//////////////////// f i n e /////////////////////////////////////////////

2) Soluzione con un'unico file MDB

Io utilizzo questo come evento sul pulsante chiudi dell'applicativo

Apri un file txt e incollaci questo:

echo off
copy c:\directorydelfileMDB\nomefile.mdb c:\directorydelfiledibackup\nomebackup.bak
echo Operazione completata
echo on


salva e rinomina da .txt in .bat
puoi cambiare le dir di lavoro a tuo piacimento fossero anche dir di rete

ora sul pulsante di chiusura db inserisci questo codice sull'evento "Su click"


Call Shell("c:\dirdelfileBAT\nomefile.bat", vbHide)
DoCmd.Quit



Avrai così il tuo backup con estensione .bak nella dir che hai impostato.
Per ripristnarlo ti basterà cambiare l'estensione da .bak a .mdb

:)

maefe
22-11-2006, 08.54.03
il primo modo me lo devo studiare bene, il secondo + immediato, mi da la possibilità per adesso di avere già un risultato
grazie moltissimissime

miciomao
22-11-2006, 08.57.39
;)