Newsgroup: it.comp.appl.access
Titolo: Inet e Gestione Errori

Salve a tutti,
sto utilizzando Inet per download di un file via FTP. di seguito il
codice:
On Error GoTo GestErr
lblstatus.Caption = ""
downloadfile = True
With Inet1
.Protocol = icFTP
.URL = "
ftp://server
"
.UserName = "username"
.Password = "password"
.Execute .URL, "SIZE invio/prova.txt"
Do While Inet1.StillExecuting
DoEvents
Loop
dimensione = Inet1.GetChunk(1024)
ProgressBar1.Value = 0
ProgressBar1.Max = dimensione
.Execute .URL, "GET invio/prova.txt C:\prova.txt"
Do While Inet1.StillExecuting
DoEvents
ProgressBar1.Value = FileLen("C:\prova.txt")
perc = RoundN((ProgressBar1.Value / dimensione) * 100, 0)
Testo1 = perc & "%"
Loop
z = (.ResponseCode = 0)
.Execute .URL, "CLOSE"
.Execute .URL, "QUIT"
End With
Do While Inet1.StillExecuting
DoEvents
Loop
Inet1.Cancel
GestErrEsci:
Exit Sub
GestErr:
Select Case Err
                Case icNameNotResolved, icCannotConnect,
icConnectFailed, icInternetDisconnected
                    MsgBox "Problema durante la connessione...",
vbCritical + vbOKOnly
                Case icInetTimeout, icTimeout
                    MsgBox "Timeout....", vbExclamation
                Case icUrlOpenFailed, icInvalidURL, icRequestFailed
                    MsgBox "Indirizzo non valido...", vbCritical +
vbOKOnly
                Case Else
                    MsgBox "FTP Errore " & Err & " : " & Error$ & "",
vbCritical + vbOKOnly, "Attenzione"
End Select
Resume GestErrEsci
Private Sub Inet1_StateChanged(ByVal State As Integer)
Select Case State
        Case icResolvingHost
            lblstatus.Caption = lblstatus.Caption & "Risolvo indirizzo
IP Host" & vbCr & vbLf
        Case icHostResolved
            lblstatus.Caption = lblstatus.Caption & "indizzo IP Host
risolto" & vbCr & vbLf
        Case icConnecting
            lblstatus.Caption = lblstatus.Caption & "Connessione ..."
& vbCr & vbLf
        Case icConnected
            lblstatus.Caption = lblstatus.Caption & "Connesso" & vbCr
& vbLf
        Case icRequesting
            lblstatus.Caption = lblstatus.Caption & "Richiesta in
Corso ..." & vbCr & vbLf
        Case icRequestSent
            lblstatus.Caption = lblstatus.Caption & "Richiesta
Inviata" & vbCr & vbLf
        Case icReceivingResponse
            lblstatus.Caption = lblstatus.Caption & "Ricezione
risposta..." & vbCr & vbLf
        Case icResponseReceived
            lblstatus.Caption = lblstatus.Caption & "Risposta
Ricevuta" & vbCr & vbLf
        Case icDisconnecting
            lblstatus.Caption = lblstatus.Caption &
"Disconnessione ..." & vbCr & vbLf
        Case icDisconnected
            lblstatus.Caption = lblstatus.Caption & "Disconnesso" &
vbCr & vbLf
        Case icError
            lblstatus.Caption = lblstatus.Caption & "Errore " &
Inet1.ResponseCode & ":" & Inet1.ResponseInfo & vbCr & vbLf
        Case icResponseCompleted
            lblstatus.Caption = lblstatus.Caption & "Operazione
Completata - Dati ricevuti" & vbCr & vbLf
    End Select
    Debug.Print Inet1.ResponseCode & ":" & Inet1.ResponseInfo
End Sub
Non so se questa è la soluzione migliore per gestire gli errori con
Inet...ovvero ho notato che se mi loggo ad esempio con una password
errata lo statechanged non mi ritorna subito IcError (valore 11) ma
prima mi ritorna 0 e solo successivamanete Inet1.ResponseInfo mi da
Password Errata. Pero' intanto il codice mi è andato in errore.....
E' quindi corretto gestire al di fuori dell'evento StateChanged gli
errori?
Come posso disconnettere il controllo in caso di errore?
Esiste un modo per mostrare a video un log tipo client FTP
(chesso'...Filezilla.) che mi mostri tutti i comandi ricevuti e le
risposte del server?
Se uso con VBA Inet1.cancel mi ritorna errore di Property non
valida...sapete perchè?
Thanks
Bye
Rob




.Execute .URL, "SIZE invio/prova.txt"


Do While Inet1.StillExecuting
DoEvents


Exit Sub
GestErr:

End Select
Resume GestErrEsci

Non so se questa č la soluzione migliore per gestire gli errori con
Inet...ovvero ho notato che se mi loggo ad esempio con una password
errata lo statechanged non mi ritorna subito IcError (valore 11) ma
prima mi ritorna 0 e solo successivamanete Inet1.ResponseInfo mi da
Password Errata. Pero' intanto il codice mi č andato in errore.....
E' quindi corretto gestire al di fuori dell'evento StateChanged gli
errori?
Come posso disconnettere il controllo in caso di errore?
Esiste un modo per mostrare a video un log tipo client FTP
(chesso'...Filezilla.) che mi mostri tutti i comandi ricevuti e le
risposte del server?
Se uso con VBA Inet1.cancel mi ritorna errore di Property non
valida...sapete perchč?
Thanks
Bye
Rob
Non userei INET nemmeno se fosse nativo...!(ovviamente č mia opinione)
Per quello che  hai fatto tu io uso questo Codice:
http://vbnet.mvps.org/code/internet/ftpdownloadcallback.htm
Funziona bene e non devo preoccuparmi di controlli OCX esterni.
Non spaventarti per le dimensioni del codice.... alla fine č piů semplice di
quello che sembra.
-- 
@Alex (Alessandro Baraldi)
---------------------------------------------------------------------------
http://www.sitocomune.com/
http://www.alessandrobaraldi.it
---------------------------------------------------------------------------