Newsgroup: it.comp.appl.access
Titolo: Blocco delle etichette

Carissimi,
dopo tempo torno a chiedere il vostro aiuto, anche se in maniera
silente ho seguito un pò l'ng.
La questione è molto semplice (ma non per me, evidentemente).
Ho una form che al click su un pulsante, copia dei file da un pc in
rete in una cartella locale.
Oltre al pulsante è presente una label che mi fa vedere l'avanzamento
dei lavori: "12 di 124 (12,34%)". Ecco il codice:
For X = 1 To TotFile
        ' copia il file dal pc in rete al pc locale (i path e nomefile
sono contenuti nella matrice
        FileCopy MatriceFile(1, X), MatriceFile(2, X)
        ' var. Dimensione----: contengono i valori della dimens. del
file e della dimens. totale
        DimensioneDest = DimensioneDest + (MatriceFile(3, X) /
1148578)
        ' valore della label (num. di files copiati e % rispetto al
peso dei files trasferito)
        Forms(NomeForm).Et_BarraFase2_Prog.Caption = X & " di " &
TotFile & " (" _
        & Format((DimensioneDest / DimensioneMB), "#,##0.00 %") & ")"
        Forms(NomeForm).Repaint
Next X
Questo codice è inserito in una function che viene richiamata
dall'evento click nella form.
Provato, testato e perfettamente funzionante.
Il "malfunzionamento" lo si ha quando tento di ridurre ad icona la
form e/o msaccess, oppure passo ad altre finestre con alt+tab. In
questo frangente il codice continua a lavorare tranquillamente ma
quanto tento di ritornare su access o sulla form, la stessa mi appare
bloccata, anche se la copia dei file continua silenziosamente.
Quale comando ho omesso / dimenticato ? Ciò che vorrei è far
continuare la copia dei file (come già avviene) e anche se sposto "il
focus" su altre applicazioni, tornando su access vorrei visualizzare
la label con i valori corretti (num.file e %) e non la form bloccata.
Ringrazio sin d'ora chi mi vorrà aiutare.
Michele

 Quale comando ho omesso / dimenticato ? Ci� che vorrei � far
doevents. Mettendolo puoi togliere anche il repaint.
--
ac

 ac
Grazie!
Già in precedenza ho provato doevents ma senza risultati.
Ho riprovato anche ora ma NIENTE.
Qualcuno ha altre idee?
Grazie ancora
Michele

 Ho riprovato anche ora ma NIENTE.
Dove lo hai messo il doevents? Va inserito nel ciclo al posto della repaint.
--
ac

 ac
Ciao Alessandro,
è proprio la riga dove l'ho inserito... ma non ha sortito alcun
effetto.
La cosa che mi insospettisce è che access si impalla (sempre e solo a
livello grafico) già se clicco su "riduci ad icona".
Mentre se riesco a cliccare, ad esempio sulla barre delle
applicazioni, su un task di explorer (una cartella aperta) la finestra
si espande ma non viceversa, ovvero quando vado a minimizzare sulla
barra, la finestra di access (che riacquista il "primo piano") rimane
con un buco delle dimensioni che la finestra occupava prima.
Comunque: WinXpPro SP3, A2003 SP3, freschissimo di formattazione.
Grazie Michele

 Comunque: WinXpPro SP3, A2003 SP3, freschissimo di formattazione.
uhmmm..... cosa fa Filecopy?
ricorda che se copio un file di 10Gb i due doevents sono alla distanza 
di, diciamo, un paio di minuti.
--
ac

 ac
Non te la prendere con i "doevents" o con i "filecopy"... haimè in
tali casi non ci fai nulla... è "SOLO" questione di grafica... è come
se perdendo il focus mentre si processa qualcosa graficamente, pur
continuando a girare in BG correttamente, Access non riuscisse più a
recuperare lo status grafico restituendo il focus, e quindi ti dà
"applicazione bloccata", anche se non lo è... Access e la grafica sono
nemici pubblici conclamati, lo si sà...

 nemici pubblici conclamati, lo si s�...
ariuhmmmm..... ho fatto robe tipo quella di Michele e non ho mai avuto 
problemi di "grafica"
--
ac

 problemi di "grafica"
io si... continuamente.
però poi alla fine i processi si concludono... ma quando perde il
focus, nisba, non ne vuole più sapere... a voglia a mettere i
doevents... ti dirò, anche nel RELINK delle tabelle, usando
semplicemente :
    Do Until rs.EOF
        sx = rs![Name]
        Call SysCmd(acSysCmdSetStatus, "Agg.Tab. " & sx)
        DoEvents
        ....ecc....
        rs.MoveNext
    Loop
quando perde il focus si impalla... e pure è il solo processo
attivo... niente timer niente accessi ad altri dati, niente di
niente...
Usando 2003... devo provare con il 2007... magari non lo fà.

 Usando 2003... devo provare con il 2007... magari non lo f�.
Mi hai incuriosito, se me ne viene la voglia provo a riprodurre il 
problema. Mi hai detto sul relink? Dovrei avere un sistema di test 
pronto, anche se ultimamente mi da noia anche fare un doppioclick su una 
icona ;-{)
--
ac

 icona ;-{)
A chi lo dici Alessà...
cmq capita random, quindi non riesco mai a capirci nulla proprio
perchè non sempre accade, e poi visto che in bg funzia, anche il debug
di conseguenza non restituisce problemi... è che il focus perso lo
infastidisce... mhà.


Carissimi, innanzitutto grazie per l'interessamento.
Rispondo ai vostri post precedenti:
1) il filecopy ovviamente serve per copiare N file da un pc (in rete)
all'altro (locale);
2) i files hanno una dimensione compresa fra 300KB e 4/5 MB (nulla di
eccezionale...) quindi un doevents +o- ogni minuto (a tenersi
larghi...);
3) durante tutta l'esecuzione (anche se si verificano le noie
"grafiche") il codice termina CORRETTAMENTE (la cosa + importante!!!);
4) concordo con l'idea di pablitomf, ovvero quella che sia un baco
nella gestione della grafica di access (anche se, se fosse così, il
mio problemino non avrebbe soluzione...);
5) questo inconveniente si verifica OGNI santa VOLTA (e non in maniera
randomica!) voglia passare ad altre applicazioni / finestre, con il
codice in esecuzione;
6) l'unico sistema che ho riscontrato per recuperare tutto l'Ambaradam
è il classico Ctrl+Pausa (cliccando poi su continua, il processo
riprende, come riprende a scorrere il contatore dei files copiati: ma
non è una soluzione).
Attendo e vi ringrazio
Michele