Newsgroup: it.comp.appl.access
Titolo: backup

Importante per tutti. Tra le cose più importanti che spesso i programmatori
dimenticano,
a detta di tutte le persone con cui ho avuto modo di lavorare, oltre che un
modo semplice
e rapido per fare le operazioni (ma questo è dato dalla generalità degli
utenti cui è
destinato il programma) c'è la necessità di avere uno strumento sempre a
portata di mano
per effettuare UN BACKUP AUTOMATICO DEI PROPRI DATI.
Idea: nella maschera di avvio di "fatturazione.mdb" inserisco un pulsante
con scritto "BACKUP".
Funzionamento: Al click, esso fa semplicemente una copia carbone del file
access
 i) incrementale sul disco fisso, al path
c:\backup\[aaaa-mm-gg]fatturazione.mdb
ii) fissa, sulla chiavetta usb al path
F:\backupfatturazione\fatturazione.mdb
Così se mi si fotte l'hard disk del cliente gli butto dalla finestra il suo
pc anteguerra,
gliene faccio comprare uno con winxp preinstallato, mi prendo la mia brava
chiavetta e
risolvo tutto in un secondo!
Con la mia idea in teoria bisognerebbe "dire" ad access di fare due salva
con nome, già preimpostati.
Ovviamente creando una piccola tabellina ed un'interfaccia utente si
potrebbe dare la
possibilità all'end user di scegliersi il path a piacimento, ma questa
sarebbe solo una
piccola aggiunta molto facile da realizzare.
Io penso sia una buona idea fornire all'utente finale la possibilità di fare
un backup
in questo modo (cioè con un tasto), e sinceramente poi se il tizio non lo
pigia mai
sono c....i suoi, noi a quel punto la coscienza ce l'abbiamo pulita (ed
eventualmente possiamo
creare ai clienti particolarmente rompi una macro che attivi il codice alla
chiusura,
ma a quel punto potremmo anche avere la necessità di saldargli a stagno la
chiavetta usb al pc!)
C'è qualcuno che mi può aiutare a realizzarlo? Ricapitolo:
Idea: nella maschera di avvio di "fatturazione.mdb" inserisco un pulsante
con scritto "BACKUP".
Funzionamento: Al click, esso fa semplicemente una copia carbone del file
access
 i) incrementale sul disco fisso, al path
c:\backup\[aaaa-mm-gg]fatturazione.mdb
ii) fissa, sulla chiavetta usb al path
F:\backupfatturazione\fatturazione.mdb (sovrascrivi automaticamente sì)

 ha scritto nel messaggio 
news:41d91d1d$0$10909$5fc...@news.tiscali.it...

Io uso un tool free esterno, fa tutto quello che dici tu e per di più zippa 
il file.
Si chiama cobian backup... se può esserti utile .. 

 ha scritto nel messaggio
news:41d91d1d$0$10909$5fc...@news.tiscali.it...

Non sò di che programmatori parli quando dici che questo viene spesso
dimenticato,
io mi dissocio da questa affermazione.
Il beckup dei dati è una cosa che si può vedere in molti modi:
1)Volontaria, ed è quello che dici tu per la quale non ci sono
    grosse difficoltà , ti copi il BE cambiandogli nome con quanto hai
    detto [aaaa-mm-gg]fatturazione.mdb, io lascerei perdere la
    possibilità di fare scegliere all'utente...., la cartella la crei tu
    con il Setup e sarà una cartella dedicata ai BackUp.
    La volontarietà è uno scarico di responsabilità, ma in quanto a serietà
    professionale di chi fornisce un applicativo è da valurare bene in base
    alla tipologia dei dati.
    P.S. per farlo devi avere una Form non associata ed avere tutte le
risorse
    connesse al BE libere, nel senso nessun RECORDSET aperto o bloccato.
    In pratica se gestisci correttamente il tutto basta una Form NON
ASSOCIATA
    che faccia un bel COPIA e RINOMINA
2)Schedulare un Backup alla mezzanotte se il PC è sempre acceso
    oppure al riavviamento.
    Cosa altrettanto semplice, basta creare un file SCRIPT e farlo eseguire
da un BATCH
    che può essere inserito nelle schedulazioni di Win2K, oppure nei file di
avvio automatico
    di qalunque SO, oppure all'apertura dell'applicativo, oppure...... boh.
Ciao
-- 
@Alex (Alessandro Baraldi)
---------------------------------------------------------------------------
http://www.sitocomune.com/
http://www.mantuanet.it/alessandro.baraldi/
---------------------------------------------------------------------------

 ha scritto nel messaggio
news:crb6qv$6ih$1...@hulme.interac.it...

Concordo sulla opportunità di usare cobian backup: è eccellente!

ALESSANDRO Baraldi ha scritto:

Anch'io uso la soluzione proposta da Alex:
copia del Be con data_nomeDB
Io uso il comando VB "FileCopy SourceFile, DestinationFile"
in un modulo , prima di far aprire una qualsiasi maschera 
in modo da non avere Recordset aperti.
A proposito di quest'ultima aspetto, il mio problema sta nel
fatto che allo stesso BE accedono due FE (da 2 PC diversi) e 
quindi il FE che "chiama" per secondo il BE mi segnala errore
nella procedura di copia del BE (perchè già aperto dal primo 
FE). Qualcuno sa dirmi come bypassare il problema?
Avevo anche pensato di utilizzare il Cobian (come suggerito)
ma preferirei una soluzione che non fosse legata ad un programma
esterno (in modo da poter spostare il FE su un altro PC che non 
ha Cobian, se necessario).
Silvia
-- 
Inviato da Virgilio 
http://newsgroup.virgilio.it
Filtra gli antipatici, segnala le risposte, segue i thread, e tutto da web

 Silvia
Si potrebbe aprire un dibattito su questa cosa....!
In modo semplice e banale
if Dir(NomeFile)=0 then FaiBackUp
Se ilò file esiste già non lo fà.
A questo punto io rendo possibile la Forzatura del BackUp
in manuale proponendo il Nome+Progressivo.
Ciao
-- 
@Alex (Alessandro Baraldi)



nell'istruzione "if Dir(NomeFile)=0 then FaiBackUp"
FaiBackUp come lo faresti?
Io con il comando Filecopy pensavo di essere a posto 
ma poi ho scoperto che se il Be è impegnato non me lo
fa copiare con un altro nome (nome+progressivo) e in 
un altro percorso.
esiste un comando alternativo per queste situazioni?


 Silvia
No ti concede di farlo perchè lo stai facendo con un Recordset
aperto sul BE.
Chiudi tutte le Form associate e/o i Recordset aperti sul BE,
esegui la procedura, quindi riapri la Form che era aperta prima.
Deve andare perchè lo uso da anni ed Access non è cambiato..!
Scherzi a parte vedi se con questi accorgimenti risolvi.
Ciao
-- 
@Alex (Alessandro Baraldi)



Dal FE2 posso far chiudere i recordset
aperti dal FE1 sul BE comune
prima di lanciare il FileCopy??
e come??

 e come??
In multiutenza la cosa va struttrata a monte.
Io per la gestione dei BackUp ho un DB di Manutenzione
che uso io  con il quale Forzo il Logoff dei Client.
Ogni Client quando è Loggato mi scrive in una Tabella
USer nel Campo Connected (True)
Tale Tabella ha un campo LogOff.
Ciclicamente i Client esplorano relativamente allo User
il valore di LogOff del singolo e se lo trovano =True
iniziano una sequenza di chiusura temporizzata.
Lato Manutenzione ho che il tempo = 5minuti
mente i Client lascio 3Minuti per chiudere e salvare.
Nel caso passino i 3 minuti chiudo e salvo da Client.
Nel DB di manutenzione quando tutti i Client sono
Sconnessi esegue automaticamente il BackUp
dei Database lato Server.
La mia gestione è abbastanza complessa, lavora in una
grossa rete, pertanto potrebbe avvenire che un Client si pianti.
lasciando bloccato il file ldb, quindi ciclo gli utenti di rete
del file host abilitati all'applicativo e vedo se nelle macchine è
aperto l'applicativo, in realtà verifico l'Istanza del programma in quanto
un'utente potrebbe avere Access aperto per i fatti suoi, e gli KILLO
l'eventuale sessione che mi blocca, quindi cancello il file ldb.
Come vedi il tutto è abbastanza impegnativo, soprattutto ha molto a che
vedere con l'amministrazione di rete, scorazzare nelle macchine di rete
è possibile solo passando a WMI l'Impersonate di ADMIN di rete.
Spero di non averti scosso troppo, tu di tutte le cavolate che ho detto
prendi solo la parte che ritieni utile.
Ciao
-- 
@Alex (Alessandro Baraldi)


 @Alex (Alessandro Baraldi)
PANICO !!!!!
no per fortuna non č la mia situazione, io ho solo 2 Fe che chiamano il BE
e se qualcosa non va nella rete, in access o nell'applicativo non fanno
altro
che chiamarmi e io di persona killo tutto !!!
Perň interessante questa gestione in ambiente multiutente (anzi
"moltiutenti")
Mi si č aperta una nuova prospettiva.
Grazie vedrň di far lavorare le meningi finchč non ne viene qualcosa di
buono
Silvia

Io uso questa routine e non mi ha mai dato problemi:
Public Function CopyFile( SourceName As String, ByVal DestName As String) As 
Integer
' Copies a single file SourceName to DestName
'
' Calling convention:
' X = CopyFile("C:\This.Exe", "C:\That.Exe")
' X = CopyFile("C:\This.Exe", "C:\Temp\This.Exe")
'
Const BufSize = 8192
Dim Buffer As String * BufSize, TempBuf As String
Dim SourceF As Integer, DestF As Integer, i As Long
On Error GoTo CFError
SourceF = FreeFile
Open SourceName For Binary As #SourceF
DestF = FreeFile
Open DestName For Binary As #DestF
For i = 1 To LOF(SourceF) \ BufSize
Get #SourceF, , Buffer
Put #DestF, , Buffer
Next i
i = LOF(SourceF) Mod BufSize
If i > 0 Then
Get #SourceF, , Buffer
TempBuf = Left$(Buffer, i)
Put #DestF, , TempBuf
End If
Close #SourceF
Close #DestF
CopyFile = True
CFExit:
Exit Function
CFError:
Close
MsgBox "Error " & Err.Number & " copying files" & Chr$(13) & Chr$(10) & 
Error
CopyFile = False
Resume CFExit
End Function

 ha scritto nel messaggio
news:J3DUd.55105$QG6.1...@twister2.libero.it...

E' una Funzione che rallenta moltissimo rispetto alla Nativa di VBA.
Poi come filosofia mia se VBA dispone di una funzione uso quella
piuttosto che scriverne una che fa la stessa cosa.
Saluti
