Newsgroup: it.comp.appl.access
Titolo: Metodo REPAINT di Access: funziona sempre?

Buongiorno a tutti,
ho una semplice form con qualche pulsante, uno dei quali esegue alcune 
routine per la creazione di un recordset che utilizzo poi per aggiornare i 
dati di un altro database.
Sulla maschera ho disegnato un rettangolo, da usare come progress bar; il 
problema è che il metodo Repaint non funziona, o meglio funziona "a volte", 
facendomi impazzire.
Tutte le routine vengono eseguite correttamente, nessun errore, ma la form 
non mi mostra la progress bar che avanza... qualcuno ha già avuto questo 
genere di problemi? Qui di seguito riporto la routine che dovrebbe 
aggiornare la progress bar.
Grazie in anticipo a chi vorrà rispondermi, ciao
Marsilio
'------------------------------------------------------------------------------------
'Mostra la percentuale di avanzamento delle operazioni
'------------------------------------------------------------------------------------
Private Sub AggiornaBarraDiProgressione(frm As Form, _
                                        NomeControllo As String)
On Error GoTo Hell
Dim Percentuale As Double
Dim MaxLength As Long
'1 cm = 567 twip
MaxLength = 6 * 567
Dim Lunghezza As Long
    Percentuale = Aggiornati / j
    Lunghezza = Round((Percentuale * MaxLength), 0)
    frm.Controls(NomeControllo).Width = Lunghezza
    frm.Controls("Aggiornati").Value = Aggiornati & " / " & j
    frm.Repaint
Exit Sub
Hell:
MsgBox "Si è verificato un errore. " & Err.Description, vbInformation + 
vbOKOnly, "Errore"
End Sub
P.S. Aggiornati e j sono due variabili di tipo double dichiarate all'inizio 
del modulo, e rappresentano rispettivamente il numero di record aggiornati 
ed il totale dei record da aggiornare.

 ha scritto nel messaggio 
news:48730523$0$40314$4faf...@reader5.news.tin.it...

Non è importante il "come" la disegni la barra di progressione; è importante 
il "quando" la richiami...
Ciao.
-- 
Sergio MAZZA 

 Sergio MAZZA
Ciao, grazie per la risposta. Richiam(av)o la routine ogni 10 record 
aggiornati (su circa 500 in totale), quindi circa una cinquantina di volte 
durante l'esecuzione di tutto il programma.
Ho provato e riprovato, niente da fare, quindi alla fine ho deciso di 
eliminare questa parte di programma insieme alla barra, dal momento che 
fortunatamente non sono fondamentali.
Mi secca però il non capire perchè la maschera non venisse aggiornata 
correttamente, nonostante il REPAINT che veniva eseguito una cinquantina di 
volte, nel caso specifico... e senza nessun errore. Boh, ci ho perso un bel 
po' di tempo, ci rinucio.
Mi piacerebbe sapere se sono l'unico che ha avuto problemi con REPANT o 
anche a qualcun altro è successa la stessa cosa...
Ciao,
Marsilio

 Marsilio
Per quanto mi riguarda io utilzzo la barra "classica" disponibile tramite il 
metodo SysCmd; ci sono, sul sito comune e in quello di Alessandro BARALDI, 
degli esempi evoluti di barre progressive...
Ciao.
-- 
Sergio MAZZA 

 Sergio MAZZA
Capisco, e ho già avuto modo di vedere l'esempio qualche tempo fa, anche se 
non l'ho implementato (e probabilmente ho fatto male).
Ad ogni modo, quello che sarei curioso di sapere è perchè in effetti la form 
con la barra non venga ridisegnata, anche se eseguo il metodo repaint; la 
cosa che più mi lascia perplessa è che, durante la scrittura del codice, ho 
provato ad eseguirlo, e in qualche caso ha funzionato, nel senso che vedevo 
la barra avanzare progressivamente.... boh, non ci penso più, per non 
impazzire!
Ciao,
Marsilio

 Marsilio
Ciao.
-- 
Sergio MAZZA 

 ha scritto nel messaggio 
news:g57350$q2p$1...@tdi.cu.mi.it...

DoEvents... non lo conoscevo, e appena trovo 10 minuti provo a rifare il 
tutto usando anche DoEvents, sono curioso di vedere se così funziona.
Grazie, ciao
Marsilio