Newsgroup: it.comp.appl.access
Titolo: Messaggio "Attendere, prego".

Ho fatto una bella maschera, in A07, che oltre al messaggio ha una
barra di progressione fatta di quadretti che si rendono visibili uno
alla volta in una routine SuTimer per poi sparire tutti e ricominciare
a comparire dal primo.
L'idea è che, quando l'utente avvia una certa procedura, si apra
questa maschera col suo effetto finchè la procedura non finisce, al
che la maschera è chiusa.
Però la maschera sta ferma lì senza muoversi per tutto il tempo
dell'altra routine; se invece l'apro da sola, funziona.
Evidentemente non posso pretendere che Access esegua due routine
simultaneamente, ma non so come fare per risolvere il problema di
visualizzare  l'effetto mentre il programma lavora.
Esiste qualche altra possibilità?
Grazie a tutti.
Riccardo Baldinotti


Se metti un doevents da qualche parte puo' essere che te la cavi.
Non si capisce poi perche' la hai fatta cosi'. Normalmente il valore di 
completamento lo si conosce (sottolineo normalmente), non conviene 
fargli fare un giro solo rapportando valore di completamento con valore 
corrente?
-- 
ac (x=y-1)


wrote:

Ho provato il DoEvents prima e/o dopo l'OpenForm ma nulla cambia.
Uso il sistema durante un'esportazione su foglio Excel; potrei
aggiornare l'indicazione ogni, poniamo, 10% dei record. Ho una
variabile che punta all'ennesima riga del foglio; potrei verificare a
che punto siamo confrontandola con il RecordCount dell'origine e se è
il caso allungare di un tanto una barra di progressione; oppure, ogni
tot righe, fare scorrere un quadratino.
Non è che però rischio di rallentare le cose?
Grazie
Riccardo Baldinotti

Riccardo Baldinotti
La clessidrina non ci piaceva?
-- 

 >> Il 05/05/2011 13.48,RiccardoBaldinottiha scritto:> Ho fatto una bella =

Eh, troppo facile! Se, durante la scrittura delle righe sul foglio di
Excel, l'utente ci clicca qua e là o lo scorre, spesso il programma si
ferma con un errore. Così rendo invisibile la finestra di Excel fino a
completamento della routine, perciò è necessario mettere qualcosa che
dica: il lavoro sta procedendo. Non mi esce la clessidra, che peraltro
rimane ben visibile se delle procedure si sono impiantate e quindi mi
sembra non sufficientemente tranquillizzante.
Ciao
Riccardo Baldinotti

 Non è che però rischio di rallentare le cose?
No a meno che non sia una "mole" di dati (intendo, 10^23)
Non servono confronti basta fare num corrente/num totale.
-- 
ac (x=y-1)


Personalmente (ma, mi rendo conto, e' fondamentalmente questione di
"gusti") preferisco ricorrere all'accoppiata
Set rsDati = CurrentDb.OpenRecordset(...)
SysCmd acSysCmdInitMeter, "Attendere ....", rsDati.RecordCount
Do While (rsDati.EOF = False)
    ...
    ....
    rsDati.MoveNext
    SysCmd acSysCmdUpdateMeter, rsDati.AbsolutePosition
Loop
rsDati.Close
Set rsDati = Nothing
HTH
Popi

 wrote:

Ringrazio Alessandro e Popi; proverò entrambe le soluzioni e vi farò
sapere.
Riccardo Baldinotti

 Non servono confronti basta fare num corrente/num totale.
Sì, per "confronto" intendevo quella cosa lì.
Riccardo Baldinotti


Dopo l'ultimo record il valore di AbsolutePosition mi diventa -1 ed
esce un errore "Chiamata di funzione non valida".
E poi ho scoperto che non vedo mai la barra di stato anche se nelle
"Opzioni di Access", "Database corrente" ho spuntato la casella. Bò!
Grazie
Riccardo Baldinotti


Le parentesi (non necessarie) sono un mio "vezzo" per migliorare la
leggibilita'.
Ti va in errore (giustamente) per un mio errore: la sysCdm di
aggiornamento va messa all'inizio del do while, mentre io l'ho
erroneamente copiata dopo la MoveNext ... sorry!
Non vedi la barra di stato nonostante nella finestra opzioni sia
spuntata la voce "mostra" solo nel db con cui stai lavorando o in
tutti?
Popi


Ahimé con tutti.
I nostri pc sono configurati dalla ditta che li fornisce e gestisce.
Riccardo Baldinotti


In un modulo creati la funzione sotto e richiamala dalla finestra
immediata con
? AssegnaProprietàDatabase(currentDb, "StartUpShowStatusBar",
dbBoolean, True)
Se non ci sono problemi a questo punto dovresti vedere la barra di
stato (potrebbe essere necessario chiudere Access e poi riaprire il
db).
In caso contrario INVOCHIAMO A GRAN VOCE L'AIUTO DEI PIU' GRANDI :)
Public Function AssegnaProprietàDatabase(ByRef DatabasePerImpostazioni
As DAO.Database, ByRef NomeProprietà As String, ByRef TipoProprietà As
Integer, ByRef ValoreProprietà As Variant) As Boolean
    Dim ProprietàDaAssegnare As DAO.Property
    Dim ErroreNonGestito As Boolean
    ErroreNonGestito = False
    On Error GoTo ControlloProprietà
    DatabasePerImpostazioni.Properties(NomeProprietà) =
ValoreProprietà
    AssegnaProprietàDatabase = ErroreNonGestito
    Exit Function
ControlloProprietà:
    If (Err.Number = 3270) Then
        Set ProprietàDaAssegnare =
DatabasePerImpostazioni.CreateProperty(NomeProprietà, TipoProprietà,
ValoreProprietà)
        DatabasePerImpostazioni.Properties.Append ProprietàDaAssegnare
    Else
        Debug.Print Err.Number, Err.Description
        ErroreNonGestito = True
    End If
    Resume
End Function
HTH
Popi


Ho provato al volo. Mi passa per
    AssegnaProprietàDatabase = ErroreNonGestito
    Exit Function
e termina.
Riavvio, ma la parte inferiore del db continua a risultare piatta e
vuota.
Invochiamo...
Riccardo Baldinotti


Data la mia beata ignoranza sulle mille nuove cose che A07 ci ha
portato mi son fatto un giretto nelle varie impostazioni, scoprendo
che esistono DUE impostazioni relative alla barra di stato.
La prima impostazione e' "Access-wide" e si trova nella finestra
"Opzioni di Access", nel gruppo "Impostazioni avanzate", sotto
"Visualizza", e si chiama "Barra di stato".
La seconda, invece, e' "Application-wide", e si trova sempre nella
finestra "Opzioni di Access", nel gruppo "Database corrente", sotto
"Opzioni applicazione" e si chiama "Visualizza barra di stato".
Perche' la barra sia visualizzata devono essere spuntate ENTRAMBE.
HTH
Popi

 HTH
TU parli di beata ignoranza???? E io? La pecora rispetto al pastore!
Non avrei nemmeno saputo cosa cercare.
Questa pecorella deve, a te e all'intero NG, le soddisfazioni che sto
avendo al lavoro.
E i miei colleghi devono i vantaggi derivanti: giusto dieci minuti fa
una collega ha inviato un prospetto con due click anziché laboriosi
copia-e-incolla perchè insieme abbiamo fatto l'applicazione
necessaria. Per inciso: questo è un indizio della nostra cattiva
organizzazione, non solo informatica, e di quanto sia utile trovare
rimedi.
Grazie mille
Riccardo Baldinotti


Sono *MOLTO* contento per te, e siccome siamo tutti stati nella tua
stessa situazione vedrai che potra' solo andare di bene in meglio!
Popi
P.s.: tutto il mondo e' paese (e questa non e' una frase fatta!).