Newsgroup: it.comp.appl.access
Titolo: Attendere fine operazione

 
Utilizzo questa routine per effettuare il salvataggio dei dati:
MsgBox "Predisporre disco di salvataggio dati"
Me.Etichetta3.Visible = True
(Visualizza messaggio "Attendere fine salvataggio")
Me.Repaint
    Dim Fs As Object
Set Fs = CreateObject("Scripting.FileSystemObject")
Fs.copyfolder "C:MiaCartella", "E:\CopiaMiaCartellaSalvata"
Set Fs = Nothing
E: è un disco Zip abbastanza lento qundi la routine termina durante il 
salvataggio
e mi chiude la maschera di avviso prima che il salvataggio sia finito.
Penso che dipenda dal fatto che i dati vengono caricati in memoria RAM e
poi scaricati sul disco.
Come posso mantenere aperta la maschera fino al termine del salvataggio?
Grazie per l'aiuto
Walter 

 Walter
-- 
_ _
Ciao
MAssimiliano Amendola            
www.accessgroup.it
Cisa - Conferenza Italiana per Sviluppatori Access
Info:  
www.donkarl.com/it

 ha scritto nel messaggio 
news:4396dc41$0$27609$4faf...@reader1.news.tin.it...

Forse un sistema potrebbe essere quella di verificare la dimensione del file 
confrontandola con l'iniziale. Solo quando uguale esci dalla funzione.
Un esempio di funzione per la dimensione del file, usando Scripting, è 
questa:
Public Function DimensioniFile(NomeDelFile As String) As Double
Dim ss As FileSystemObject, ff As Scripting.File
Set ss = New FileSystemObject
Set ff = ss.GetFile(NomeDelFile)
DimensioniFile = ff.Size
Set ss = Nothing
Set ff = Nothing
End Function
Ciao, Carlo 


CUT
No non passa oltre, rimane attivo fino a quando a scaricato i dati in 
memoria
(si nota dalla lucina dell'HD ) poi si chiude ma il disco ZIP continua a 
lavorare ancora per
molti secondi, lo stesso problema si presenta anche se salvo i dati su una 
PenDisk
Ciao 

 ha scritto nel messaggio news:4396dc41$0$27609$4faf...@reader1.news.tin.it...

Ricordavo che si poteva fare qualcosa con il buon vecchio Basic e questo è un esempio:
"Copia file con barra di avanzamento"
http://www.leonardobandini.it/progvb.htm
Ciao.
-- 
Sergio MAZZA 

 Ciao.
Beh..... questo metodo è lentissimo, ma indiscutibilmente corretto.
Io farei una prova con un'API, CopyFile.
Ora non sò se è una funzione sincrona o asincrona, quindi
occorre fare un test:
Declare Function CopyFile Lib "kernel32" Alias "CopyFileA" (ByVal
lpExistingFileName As String, ByVal lpNewFileName As String, ByVal
bFailIfExists As Long) As Long
· lpExistingFileName
Points to a null-terminated string that specifies the name 
of an existing file.
· lpNewFileName
Points to a null-terminated string that specifies the name 
of the new file.
· bFailIfExists
Specifies how this operation is to proceed if a file 
of the same name as that specified by lpNewFileName already exists. 
If this parameter is TRUE and the new file already exists, 
the function fails. 
If this parameter is FALSE and the new file already exists, 
the function overwrites the existing file and succeeds.
Io la proverei così:
Dim ret as Long
ret=CopyFile(NomeFileOrigine, NomeFileDestinazione, 0)
Nel caso fosse una funzione Asincrona non c'è nulla da fare, ma
se fosse Sincrona, allora avresti risolto, poichè verrebbe sospeso
il codice finchè non è terminata.
A quel punto verifica che ret<>0
Non l'ho provata e non ho trovato nulla a riguardo ma tentar non 
nuoce.
@Alex
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 Io farei una prova con un'API, CopyFile.
Ti sei fatto desiderare; immaginavo che dalle arnie uscisse fuori qualcosa...

Però non hai la barra di progressione... Tié!
Ciao.
-- 
Sergio MAZZA 

 Ciao.
Questa ti piace...?


 @Alex
Se funziona sì!
Ciao.
-- 
Sergio MAZZA 

 Ciao.
Incredulo....!
Funziona eccome, in VB i programmatori usano moltissimo
il sistema Client-Server realizzato con Winsock
proprio per inviare dati tra macchine in rete.
Il vantaggio è quello di controllare l'attendibilità
di quanto inviato e ricevuto e non solo....!
In questo caso però lo trovo eccessivo.!


@Alex
Confermo quanto sostiene @Alex.
Il sistema di invio dati in LAN via Winsock è utilizzato su larga
scala, sia per sviluppare applicazioni Client-Server che per
l'interfacciamento con dispositivi diversi da PC (ad esempio unità
remote intelligenti e PC locali).
ciao.

 ha scritto nel messaggio 
news:4396dc41$0$27609$4faf...@reader1.news.tin.it...

Grazie ragazzi
Vedo che la cosa si fa un pò troppo complicata per le mie conoscenze
comunque tenterò.
Grazie ancora Walter