Newsgroup: it.comp.appl.access
Titolo: Decomprimere un file zip ed eseguire aggiornamento

Salve a tutti,
il problema che si pone viene fuori da una necessità di aggiornamento
tramite un file mdb compresso con pkzip in un floppy da 3,5".
Ho già provveduto a creare qualche riga di codice per effettuare la
compressione, ma se voglio poi decomprimere il file si verifica che essa
avviene in ritardo rispetto alle altre istruzioni necessarie di
aggiornamento che seguono nel codice.
Come posso obbligare VBA ad attendere la decompressione prima di eseguire il
resto delle istruzioni?????
Per capirci meglio allego il codice:
Private Sub Comando26_Click()
On Error GoTo Err_Comando26_Click
Dim fs, d, s
Dim retVal As Variant, strCmd As String
Set fs = CreateObject("Scripting.FileSystemObject")
    Set d = fs.GetDrive("a:")
        s = "Drive " & d.DriveLetter & ": - Floppy da 3,5 pollici"
    If d.IsReady Then
    If Dir("C:\Programmi\FKT\Trasp.mdb") <> "" Then Kill
"C:\Programmi\FKT\Trasp.mdb"
    intscelta = MsgBox("Aggiornare l'Archivio?", vbYesNo, "Attenzione")
    If intscelta = vbNo Then GoTo Exit2
    ChDir "C:\Programmi\FKT"
    strCmd = "C:\Programmi\FKT\pkzip25 -extr A:\Traspo.zip"   ' -----> il
file compresso contiene Trasp.mdb
    retVal = Shell(strCmd)           '-------> in questo punto dovrebbe
ATTENDERE che venga estratto il file, invece lui continua, non trova
Trasp.mdb
    ' ed esce giustamente dalla successiva istruzione If
    If Dir("C:\Programmi\FKT\Trasp.mdb") <> "" Then
    DoCmd.Rename "Ordini_Old", acTable, "OrdiniAgg"
    DoCmd.Rename "Dettagli sugli ordini_Old", acTable, "Dettagli sugli
ordiniAgg"
    DoCmd.Rename "Dettagli Protocolli_Old", acTable, "Dettagli
ProtocolliAgg"
    DoCmd.Rename "Ticket_Old", acTable, "TicketAgg"
        Dim Perc, Tit1, Tit2, Tit3, Tit4, Tit5, Tit6 As String
        Perc = "c:\Programmi\FKT\Trasp.mdb"
        Tit1 = "Ordini"
        Tit2 = "Dettagli sugli ordini"
        Tit3 = "Dettagli Protocolli"
        Tit4 = "Ticket"
        DoCmd.TransferDatabase acImport, "Microsoft Access", Perc, acTable,
Tit1, "OrdiniAgg"
        DoCmd.TransferDatabase acImport, "Microsoft Access", Perc, acTable,
Tit2, "Dettagli sugli ordiniAgg"
        DoCmd.TransferDatabase acImport, "Microsoft Access", Perc, acTable,
Tit3, "Dettagli ProtocolliAgg"
        DoCmd.TransferDatabase acImport, "Microsoft Access", Perc, acTable,
Tit4, "TicketAgg"
        DoCmd.DeleteObject acTable, "Ordini_Old"
        DoCmd.DeleteObject acTable, "Dettagli Protocolli_Old"
        DoCmd.DeleteObject acTable, "Dettagli sugli ordini_Old"
        DoCmd.DeleteObject acTable, "Ticket_Old"
        DoCmd.SetWarnings False
        DoCmd.OpenQuery "Aggiorna Ordini"
        DoCmd.OpenQuery "Aggiorna Ticket"
        DoCmd.OpenQuery "Aggiorna Protocolli"
        DoCmd.OpenQuery "Aggiorna DettOrdini"
        DoCmd.SetWarnings True
        s = "Operazione conclusa correttamente"
    Else
        s = s & vbCrLf & "Unità non pronta. Ripetere l'operazione."
    End If
    MsgBox s, , "Info"
Exit2:
MsgBox "Operazione annullata", , "Info" = vbInformation
Exit_Comando26_Click:
    DoCmd.Requery
    Exit Sub
Err_Comando26_Click:
    Resume Exit_Comando26_Click
End Sub

 ha scritto nel messaggio
news:dIx0a.89235$YG2.2...@twister1.libero.it...

DoEvents
@Alex.

 ha scritto nel messaggio
news:B3B0a.91334$ZE.24...@twister2.libero.it...

Grazie tantissimo, non conoscevo questa funzione, ma dove devo metterla?
Ho provato ma non ottengo il risultato sperato.
Si dovrebbe verificare che se non viene decompresso il file non deve andare
avanti.

 resto delle istruzioni?????
[CUT]
Vai sul Sito Comune (link qui sotto) e nella Sezione General leggi la FAQ di
AntoGal intitolata "Avviare un file eseguibile ed attenderne la fine"; penso
che faccia al caso tuo.
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

 ha scritto nel messaggio
news:cuM0a.92385$ZE.25...@twister2.libero.it...

Grazie mille, non lo avevo visto. Ho già fatto e funziona che è una
meraviglia.