Newsgroup: it.comp.appl.access
Titolo: Shell e file zip

Salve a tutti, cosa c'e' di sbagliato in questo codice ?
Devo creare dei fogli xls, zipparli e spedirli. Funziona tutto se invio un
file per volta, ma se invece (codice sotto) inserisco il tutto in un ciclo,
la shell non attende la produzione del report xls e : o invia un file zip
vuoto, o invia uno zip contenente i dati della persona precedente. Ho anche
provato a controllare l'esistenza del file xls appena elaborato, ma l'azione
OutputTo, crea subito un file xls di pochi Kb e quindi il controllo
fallisce. Ho provato amche ad impostare il paramentro 1 alla shell, e
funziona su Windows 2000 mentre sul 98 lascia aperta la finestra DOS....
Help !
 
Set rs = Reports.Application.CurrentDb.OpenRecordset("SELECT * from
dbo_D_DIR_REG")
Dim obj, aa
Set obj = CreateObject("Scripting.FileSystemObject")
  Do Until rs.EOF
    str_dr = rs("COD_DR").Value
    If Not IsNull(Trim(rs("MAIL_DR"))) Then
        If (obj.FileExists(strPath & "rep_dr.xls")) Then
            obj.deletefile strPath & "rep_dr.xls", True
        End If
        If (obj.FileExists(strPath & "rep_dr.zip")) Then
            obj.deletefile strPath & "rep_dr.zip", True
        End If
 
        DoCmd.OpenReport stDocName, acPreview, , "COD_DR = '" & str_dr & "'"
        RigaComando = strPath & "pkzip " & strPath & "rep_dr " & strPath &
"rep_dr.xls"
        DoCmd.OutputTo acOutputReport, stDocName, acFormatXLS, strPath &
"rep_dr.xls", False
 
        While Not obj.FileExists(strPath & "rep_dr.xls")
 
        Wend
 
        ret = Shell(RigaComando, 0)
 
        While Not obj.FileExists(strPath & "rep_dr.zip")
 
        Wend
 
      ret = SendMail("Invio report Direzione regionale", Trim(rs("Mail_DR")), "",
strPath & "rep_dr.zip", "E' presente un'aggiornamento.")
 
      DoCmd.Close acReport, stDocName
    End If
    rs.MoveNext
  Loop
--------------------------------
Inviato via 
http://usenet.libero.it

 Help !
[...]
    Visita il Sito comune di questo ng:
 
http://www.sitocomune.com
e cerca nella sezione General gli articoli:
        Avviare un file eseguibile ed attenderne la fine.
        Zippare files con VBA. (PkZip, Winzip, ...)
    (Facci sapere se ed eventualmente come hai risolto. Grazie.)
--
Ciao :o)
Maurizio
--------
?SPQR(C)
 X
--------

 ha scritto nel messaggio
news:213Z203Z153Z55Y...@usenet.libero.it...

Hai provato ad inserire una
DoEvents
dopo
ret = Shell(RigaComando, 0)
?
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------


3 problemi (Se no era troppo facile...) :
1 Il comando Shell lavora in modo asincrono quindi non aspetta la produzione
del file xls e crea file zip vuoti o con dati non corretti
2 OutputTo : crea immediatamente il file xls (vuoto) e lo riempie solo alla
fine
3 SendMail : e qui piango...
per il punto 1 e 2 sono stato costretto a utilizzare un timer (brr....)
per il punto 3 : ho preso la funzione dal sitocomune e sembrava lavorare
perfettamente ma quando l'ho inserita nel ciclo, sono iniziati i problemi.
La cosa che non mi spiego , e se qualcuno lo sa' mi piacerebbe saperla, e'
che la routine ha iniziato a funzionare quando ho inserito il controllo
sull'esito delle sendmail :
        ret = SendMail("Invio report Direzione regionale", Trim(rs("Mail_DR")), "",
strPath & "rep_dr.zip", "E' presente un'aggiornamento.")
 
        If ret <> SUCCESS_SUCCESS Then
            MsgBox "Errore nell'invio: " & ret, 16, "Mail"
        Else
            'MsgBox "Messaggio spedito correttamente !", 64, "Mail"
        End If
 
Grazie a tutti per le risposte, grazie anche a Roberto per la dritta su
Doevents che non conoscevo...
