mjet.CompactDatabase "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &
mpath & mfiletemp, _
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & mpath & mfiledest
per completezza Vi posto l'intera function e vi dico che compilando il
modulo non restituisce errori:
Function backup()
Dim fs, mtime As Integer, mext As String, mpath As String, mjet As
New jro.JetEngine
Dim mfiledest As String, mfiletemp As String
'funzione utilizzabile in qualunque database, senza alcun
adattamento
mtime = Int(Mid(CStr(Time), 1, 2))
mext = IIf(mtime < 13, "MAT_", "POM_")
mfiledest = "backup_" & mext & CurrentProject.Name
mpath = EstraePercorso(CurrentProject.FullName)
With Application.FileSearch
.LookIn = mpath
.FileName = mfiledest
.MatchTextExactly = True
If .Execute > 0 Then
If CDate(Mid(FileDateTime(.FoundFiles(1)), 1, 11)) = Date
Then
GoTo fine
Else
Kill mpath & mfiledest
End If
Else
GoTo backup
End If
End With
backup:
mfiletemp = "backup_" & CurrentProject.Name
Set fs = CreateObject("Scripting.FileSystemObject")
If Dir(mpath & mfiletemp) <> "" Then Kill mpath & mfiletemp
fs.copyfile mpath & CurrentProject.Name, mpath & mfiletemp, True
mjet.CompactDatabase "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=" & mpath & mfiletemp, _
"Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=" & mpath & mfiledest
Kill mpath & mfiletemp
fine:
end function
Grazie.
Di solito il messaggio significa una corruzione del db.
Fai una copia di sicurezza del file e prova se puoi compattare il db
a mano. Se no, vedi p.e.
http://groups.google.com/group/it.comp.appl.access/browse_frm/thread/81dd1fa7f4e7891a/b03fdbae68651b2d
e http://groups.google.com/group/it.comp.appl.access/msg/3ef7ce3e20f92e6e
--
Ciao
Karl
*********
Access FAQ: www.donkarl.com/it
Provando e riprovando dopo aver fatto la copia di backup a mano, mi ha
restituito un errore sulla riga:
fs.copyfile mpath & CurrentProject.Name
in effetti non riusciva a copiare il file.
Il problema era (ho risolto) la lentezza delle rete di stamani,
infatti riflettendoci con calma il file da copiare è sulla rete.
Probabilmente il primo messaggio nascondeva l'impossibilità di
applicare il metodo Copyfile anche se l'errore avveniva sulla riga
successiva, sei d'accordo con questa teoria ??
Grazie Karl.
Se ho capito bene, il tuo codice fai una copia del db corrente. (?)
Copiare un file aperto è sempre una lotteria e puo risultare
in una copia danneggiata. Questo potrebbe spiegare l'errore
che hai segnalato prima.
Compattare il db corrente (da A00 a A03) è molto più facile con
il codice che trovi qui: www.donkarl.com/it?FAQ6.6.
Se sbaglio e si tratta di un db diverso che vuoi compattare,
prova con il codice che trovi qui: www.donkarl.com/it?FAQ6.7
hai capito bene, il codice fa una copia del db corrente rinominadolo
(mfiletemp = "backup_" & CurrentProject.Name )
poi compatta "backup_****" che è chiuso e poi lo copia rinominadolo
ancora (MAT o POM) e alla fine "killa" il temporaneo
("backup_****" ) ...--- forse è più facile se leggi il codice.
Grazie ancora Karl, sempre puntuale e preciso.