Newsgroup: it.comp.appl.access
Titolo: Verificare se la compressione (7zip) dei file è terminata

Salve, come accennato in oggetto, sebbene abbia approntato un codice per la compressione di 10 file in un unico file zip non riesco a trovare un sistema che mi contenta di stabilire che l'operazione di compressione si stata completata affinche' possa cancellare successivamente i file origine.
Dopo il codice per comprimere
strCmd = "C:\Program Files\7-Zip\7z.exe a -r" _
& " " & Chr(34) & [Application].[CurrentProject].[Path] & "\" & "Xxx" & ".zip" & Chr(34) _
& " " & Chr(34) & [Application].[CurrentProject].[Path] & "\" & (nomefile) & Chr(34)
ho provato con l'istruzione
Do Until Len(Dir(percorsofile)> 0
Loop
Kill (percorsofile)
ma anche se viene generato il file Xxx.zip questi è vuoto perche' il comando kill cancella i file 'origine'.
Ho utilizzato un timer (3 secondi) in luogo del Do Until e tutto funziona ma preferirei un automatismo che certifichi l'avvenuta compressione prima della cancellazione.
Qualche suggerimento?
Grazie in anticipo 
 
 

 ...
 
Nel codice manca la parte che esegue strCmd. Se si tratta del solito 
Shell() prova con 
http://www.donkarl.com/it?FAQ6.14
.
 
-- 
Ciao
Karl
*********
http://www.AccessDevCon.com
 
Access FAQ: 
http://www.donkarl.com/it
 


Ma la routine completa com'è?
 
Puoi provare due strade:
1. verificare quando l'esecuzione dell'applicazione 7zip termina tramite il PID
2. verificare la presenza nella cartella di destinazione del file temporaneo, infatti la compressione segue questo processo: crea il file di destinazione vuoto (per impegnare il nome nella directory) crea un file temporaneo dove aggiunge i file compressi, elimina il file vuoto e rinomina il file temporaneo col nome definitivo. Quindi finchè esiste il file temporaneo il processo non è terminato.
 
Ciao

Ciao Karl, 
un abbraccio.

 un abbraccio.
 
 
Tanti saluti da Vienna!
 
Vedi cosa ho lavorato in Ottobre sempre con il vecchio Access: 
http://www.donkarl.com/AEK/Archiv/AEK20_Bilder/AEK20/index00.html
 
 
ovvero
https://www.facebook.com/194201593933974/photos/a.1533672169986903.1073741828.194201593933974/1646307762056676/?type=3
 
https://www.linkedin.com/feed/update/urn:li:activity:6329351729267646464
 
 
-- 
;-)


Il giorno mercoledì 8 novembre 2017 09:47:32 UTC+1, micpis ha scritto:

Puoi usare una variante della Shell:
 
Sub MyShell(ByVal Percorso As String, _
            ByVal windowstyle As Integer, _
            ByVal Attendi As Boolean)
 
 
Dim wshell As Object
 
Set wshell = CreateObject("WScript.shell")
wshell.Run Percorso, windowstyle, Attendi
 
Set wshell = Nothing
 
End Sub
-------------------
 
Esempio di utilizzo:
 
    call Myshell (percorso, 1,True)
 
Ciao
 
@Alex


Con molto interesse.
Guardo e ti dico.
 
Ciao
(PS: ricorda che quando vuoi fare un giro dalle mie parti devi solo farmelo sapere)

Il giorno mercoledì 8 novembre 2017 14:41:15 UTC+1, Karl Donaubauer ha scritto:

Complimenti Karl, 20 anni di grandi risultati.
Se sapessi parlare tedesco di direi di invitarmi alla prossima.
 
Nel frattempo, se vuoi, dai uno sguardo alla mia ultima realizzazione:
 
http://www.gestionedati.com/Details.aspx?AlbumID=6&Page=1
 
 
con Access naturalmente.
 
Ciao

 con Access naturalmente.
 
Bello, molto ridotto/semplice come dev'essere per un'applicazione touch.
 
Finora le mie sono più standard ma qualche volta interessante dal campo 
di impiego, p.e.
 
https://techcommunity.microsoft.com/t5/Access-Blog/Customer-Story-quot-A-future-for-children-quot-ZUKI/ba-p/85336
 
 
-- 
Ciao



Ciao Alex, premetto un mio limite, ho provato ad utilizzare il tuo suggerimento ma non riesco a far funzionare l'istruzione.
Andando per ordine:
1 ho copiato la prima parte dell'istruzione in un modulo.
2 o inserito call Myshell (percorso, 1,True) dopo StrCmd = ....
Una domanda, in percorso del punto 2 cosa devo scrivere di preciso?
Grazie


Mi pare che nel tuo codice tu componessi la stringa [strCmd] che poi rappresenta il comando da usare in una SHELL...
La Shell standard è Asincrona, la SHELL che ti ho proposto è SINCRONA... funzionano uguali...
 
Mi viene il dubbio che tu nemmeno avessi pensato di usare una SHELL, quindi mi chiedo cosa pensavi facesse quella [strCmd]...?
 
@Alex


Caro Karl,
un grande lavoro, complimenti!
 
Comunque l'applicazione TOTEM (anche l'hardware è mio come puoi vedere dal logo) è la punta dell'iceberg, dietro c'è il server di gestione per il reparto.
 
Ciao
Davide


L'hardware totem e' fatto dalla tua ditta?
Posso chiederti per quanto riguarda marcatura Ce ed eventuali test  cosa 
avete fatto?
 


Discorso complesso ma risolto.
Conosciamoci e poi ne parliamo in separata sede.
 
Ciao


In effetti per nel post iniziale ho omesso retVal = Shell(strCmd, vbHide), bene mi sembrava di aver capito di utilizzare al suo posto call Myshell (strCmd, 1,True) ma va in errore.
Metodo 'Run' dell'oggetto 'IWshShell3' non riuscito
Dov'è che sbaglio
Michele


Leggi questi:
https://stackoverflow.com/questions/21267283/error-running-shell-object-commands-through-excel-vba
 
 
https://www.mrexcel.com/forum/excel-questions/910567-method-run-object-iwshshell3-failed.html
 
 
E' una questione di DoubleQuote il CHR(34) probabilmente, devi risistemarli... leggendo i Link trovi la soluzione.
 
@Alex

 Su LinkedIn scrivi di parlare inglese. Quindi niente scusa. ;-)
CUT
 
Ci vengo.
 
Ciao

 Ci vengo.
 
Bello!
L'ultima volta Matteo ("Ciroteo") era l'unico italiano presente, ma 
questa volta 3-4 altri italiani si hanno iscritti sulla lista dei 
interessati.
 
Al momento organizzo le presentazioni. Voglio aprire il sito 
d'iscrizione fra ca. 2 settimane.
