Esiste un metodo con ADO, JET ecc... per comprimere un database dbf???
Esattamente come si fa con Jet per mdb access.
GFrazie.
Esiste un metodo con ADO, JET ecc... per comprimere un database dbf???
Esattamente come si fa con Jet per mdb access.
GFrazie.
Comprimere? E come lo comprimi un mdb?
No MP tecnici (non rispondo nemmeno!), usa il forum.
Sub COMPACT()
Dim JRO As JRO.JetEngine
Dim strSource As String
Dim strDest As String
On Error GoTo errore
Set JRO = New JRO.JetEngine
If Len(Dir$("C:\APPLICAZIONI\xxxx.ldb")) > 0 Then
GoTo FINE
Else
strSource = "C:\APPLICAZIONI\xxxx.mdb"
strDest = "C:\APPLICAZIONI\xxxx_BK.mdb"
JRO.CompactDatabase "Provider=Microsoft.Jet.OLEDB.4.0;Data" & _
" Source=C:\APPLICAZIONI\xxxxx.mdb", "Provider=Microsoft.Jet.OLEDB.4.0;Data" & _
" Source=C:\APPLICAZIONI\L0928_BK.mdb;Jet OLEDB:Engine Type=5"
TEST_JRO = "OK"
Kill strSource
Name strDest As strSource
FINE:
Set JRO = Nothing
End If
Exit Sub
errore:
MsgBox "Errore Numero: " & CStr(Err.Number) & vbCrLf & "Descrizione: " & Err.Description & _
vbCrLf & "Sorgente dell'Errore: " & Err.Source
Err.Clear
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub
Ah ... compattare ... non comprimere ... c'e' differenza ....
Non mi pare si possa fare ... puoi creare un nuovo dbf e inserire tutto quello che c'e' nel vecchio, cancellare il vecchio e rinominare il nuovo ... ma devi farlo tu da codice ...
No MP tecnici (non rispondo nemmeno!), usa il forum.
... scusa e che quadagno c'è a ricopiare gli stessi record in un nuovo db dbf???
quindi se ho ben capito:
-creare un dbf blank via codice (si ma come si fa da codice?)
-creare i stessi campi del vecchio in quello nuovo (si ma come si fa da codice?)
-fare un loop dei cecchi e riciali nel nuovo? (questo lo so fare)
Che nel dbf finale non ci sono i record cancellati in quello originale. Quindi la sua dimensione sara' minore.Originariamente inviato da sal21
... scusa e che quadagno c'è a ricopiare gli stessi record in un nuovo db dbf???
Se non lo sai fare, tieni nel progetto un file vuoto (modello) da copiare quando ti serve.quindi se ho ben capito:
-creare un dbf blank via codice (si ma come si fa da codice?)
-creare i stessi campi del vecchio in quello nuovo (si ma come si fa da codice?)
Se solo sapessi cosa vuol dire in italiano "dei cecchi e riciali" ti risponderei ...-fare un loop dei cecchi e riciali nel nuovo? (questo lo so fare)
No MP tecnici (non rispondo nemmeno!), usa il forum.
-fare un loop dei vecchi records e ricopiarli nel nuovo? (questo lo so fare )Originariamente inviato da oregon
Che nel dbf finale non ci sono i record cancellati in quello originale. Quindi la sua dimensione sara' minore.
Se non lo sai fare, tieni nel progetto un file vuoto (modello) da copiare quando ti serve.
Se solo sapessi cosa vuol dire in italiano "dei cecchi e riciali" ti risponderei ...
Ah ecco ... va bene ...Originariamente inviato da sal21
-fare un loop dei vecchi records e ricopiarli nel nuovo? (questo lo so fare )
No MP tecnici (non rispondo nemmeno!), usa il forum.
Scusa Antonio, ma mi risulta che i record marchiati come 'deleted' saranno copiati ugualmente, a meno di non usare l'istruzione
SET DELETED ON/OFF
E non sono sicuro che in VB6 questa istruzione funzioni.
Seconda cosa, i campi MEMO saranno copiati pari pari senza essere ottimizzati.
A questo punto, allora sarebbe più facile usare l'istruzione
PACK
che esegue entrambi i compiti.
Peccato che in VB6 non funzioni...![]()
Né collegandosi al database DBC (se FoxPro) né alla tabella DBF.
Le ho provate tutte, quando mi ci sono scontrato qualche anno fa.
@Sal21
Per avere il massimo potere di azione, se hai il VisualStudio EE hai anche VisualFoxPro, quindi ti converrebbe creati un progettino in VisualFoxPro.
Tanto per quello che ti serve bastano usare 2 istruzioni sulla tabella:
Io ho sempre fatto così.codice:USE tabella 'esempio: USE anagrafica PACK USE ' per chiudere la tabella
![]()
Non uso i dbf da millenni ... ma si potrebbe impostare un campo apposito nel record per indicare che e' cancellato logicamente e considerarlo nel momento di riscrivere il record.Originariamente inviato da gibra
Scusa Antonio, ma mi risulta che i record marchiati come 'deleted' saranno copiati ugualmente, a meno di non usare l'istruzione
SET DELETED ON/OFF
E non sono sicuro che in VB6 questa istruzione funzioni.
Seconda cosa, i campi MEMO saranno copiati pari pari senza essere ottimizzati.
No MP tecnici (non rispondo nemmeno!), usa il forum.