Newsgroup: it.comp.lang.visual-basic
Titolo: Compatta DB Access2000 con archivi ADO

Salve,
qualcuno può darmi qualche riga di codice per compattare un db access2000
con VB6.
                    Grazie anticipatamente..

 ha scritto nel messaggio
news:JDUG7.29346$zl4.8...@news2.tin.it...

Ripeto il mio post di un paio di giorni fa
Ciao
------------------------------------------
C'è il Jet4 sotto ADO, unico inconveniente: compattando converte
irrimediabilmente il DB in Access2000 :(
Questo è il codice VBScript per compattare il DB, che con un paio di
aggiustamenti funziona anche con VB (eliminare il FileSistemObject e
eventualmente rimpiazzare la CreateObject con un riferimento al JRO,
tipizzare le variabili...).
Attenzione: il Jet4 da ADO 2.6 in poi è distribuito a parte dalla Microsoft
su 
www.microsoft.com/data
Function CompactAccessDB(DataBase)
  dim strFile, strFileTo, strConn, strConnTo, objJro, fso
  strFile = Server.MapPath(database)
  strFileTo = Server.MapPath("/$db.mdb")
  strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" _
     & "Data Source=" & strFile
  strConnTo = "Provider=Microsoft.Jet.OLEDB.4.0;" _
        & "Data Source=" & strFileTo
  On Error Goto Errore:
  set objJro = server.createobject("jro.JetEngine")
  set fso = server.createobject("Scripting.FileSystemObject")
  fso.DeleteFile strFileTo
  objJro.CompactDatabase strConn, strConnTo
  CompactAccessDB = True
Errore:
  set objJro = Nothing
  set fso = Nothing
End Function

 ha scritto nel messaggio
news:HYXG7.29862$zl4.8...@news2.tin.it...


 ha scritto nel messaggio
news:HYXG7.29862$zl4.8...@news2.tin.it...



Mi spiace, ma nonostante l'impegno devo darti un insufficiente! :)
Il tuo codice non è riciclabile!
Database poteva benissimo essere un parametro (completo di percorso), in
modo che uno non debba fare un copia incolla di tutta la sub per ogni DB che
deve compattare!
Database2 o lo si rende anche lui un parametro oppure lo si rinomina come
Database, in modo da ottenere semplicemente il DB originale compattato.
La kill fiene fatta su un fantomatico NomeDatabase.
Se nomeDataBase è uno dei due DB va comunque fatta la Kill *dopo* la Name.
E magari anche prima di tutto, in modo da eliminare l'eventuale file
d'appoggio.
Se qualcuno provasse il tuo codice rinuncerebbe ad usarlo per disperzione :)
Riprova, sarai più fortunato :)
Ciao

 97 il 5 si usa x Access 2000
Davvero?
Questo non lo sapevo (ecco il "+").
Vuoi dire che se uso Type 4 non lo converte per forza in Access2000?
Ciao

Enum MyDBType
    [Access 97 type] = 4
    [Access 2000 type]
End Enum
Function CompactDB(p_DBPath As String, _
    p_DBName As String, _
    p_DBExtension As String, _
    Optional p_DBType As MyDBType = [Access 2000 type])
    Dim oJet As JRO.JetEngine
    Set oJet = New JRO.JetEngine
    On Error GoTo 0
    If Right(p_DBPath,1)<>"\" Then p_DBPath = p_DBPath & "\"
    'Qui avviene la compattazione
    oJet.CompactDatabase _
        "Provider=Microsoft.Jet.OLEDB.4.0;" _
        & "Data Source=" & p_DBPath & p_DBName & p_DBExtension, _
        "Provider=Microsoft.Jet.OLEDB.4.0;" _
        & "Data Source=" & p_DBPath & p_DBName & ".bkp;" _
        & "Jet OLEDB:Engine Type = " & p_DBType
    'Qui cancelliamo il vecchio DB non compattato
    Kill p_DBPath & p_DBName & ".mdb"
    'Qui rinominiamo il DB compattato con l'estensione corretta
    Name p_DBPath & p_DBName & ".bkp" As _
        p_DBPath & p_DBName & p_DBExtension
End Function
---------------------------------------------------------------------------
PS: Che si vince? :))))))

Mi sono dimenticato un Optional... :))))
------------------------------------------------------------------------------
Enum MyDBType
    [Access 97 type] = 4
    [Access 2000 type]
End Enum
Function CompactDB(p_DBPath As String, _
    p_DBName As String, _
    Optional p_DBExtension As String = ".mdb", _


 ha scritto nel messaggio
news:K%VH7.2295$0x4....@news2.tin.it...
