buona sera a tutti
o questo problema su un gestionale
dovrei compattare il db ma non riesco a chiuderlo prima della compattazione
cerco di spiegarmi il meglio possibile
nel form di avvio il percorso viene memorizzato in una variabile
dichiarata in un modulo.bas cosi che la vede tutto il progetto
io faccio cosi ma non va
vi posto un pezzo di codice
qualcuno saprebbe aiutarmi
Private Sub Form_Load()
Label1.Caption = "ARCHIVIO ANNO 20" & Mid$(filefattura, Len(filefattura) - 5, 2)
nome = filefattura
pass = ""
Set Db = OpenDatabase(nome, False, False, pass)
Data1.DatabaseName = Db.Name
End Sub
Sub verificaecompatta()
db.close
set db.nothing
RISPOSTA = MsgBox("CONTROLLA E COMPATTA TUTTI GLI ARCHIVI IN USO " & vbLf & "CONFERMA", vbQuestion + vbYesNo, "CONFERMA")
If RISPOSTA = vbNo Then Exit Sub
Dim NOMEDB As String
Dim CONN As JRO.JetEngine
Dim CONN_Sorg As New Connection
Dim CONN_Dest As New Connection
On Error GoTo errori:
NOMEDB = filefattura
CopyFile NOMEDB, (Mid(Trim(NOMEDB), 1, Len(Trim(NOMEDB)) - 4)) & "tmp.MDB", True
Set CONN = New JRO.JetEngine
CONN_Sorg = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & NOMEDB & ";User ID=Admin;Password=;"
CONN_Dest = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Mid(Trim(NOMEDB), 1, Len(Trim(NOMEDB)) - 3) & "Tmp" & ";"
'
CONN.CompactDatabase CONN_Sorg, CONN_Dest
'
Set CONN = Nothing
Kill NOMEDB
'
FileCopy Mid(Trim(NOMEDB), 1, Len(Trim(NOMEDB)) - 3) & "tmp", NOMEDB
'elimina database temporaneo
Kill Mid(Trim(NOMEDB), 1, Len(Trim(NOMEDB)) - 3) & "tmp"
MsgBox "OPERAZIONE ESEGUITA CON SUCCESSO", vbOKOnly, "GESTIONALE"
Exit Sub
errori:
If Err.Number = 53 Then
Resume Next
Else
MsgBox Err.Description, vbCritical, Err.Number
End If
End Sub
ciao