Newsgroup: it.comp.appl.access
Titolo: Elaborazione in corso

Salve a tutti del Ng. Ho un problemino banale che non riesco
a risolvere.
Da una maschera "A" cliccando su un pulsante eseguo del codice che 
impiega un certo tempo ad essere eseguito. 
Voglio che l'utente venga avvisato da una maschera con un messaggio che c'e' 
una elaborazione in corso.
Se uso la clessidra va tutto bene, nel senso che prima che venga
eseguito il codice, mi compare la clessidra ed alla fine dell'elaborazione
la clessidra scompare.
Preferirei pero' una maschera con messaggio anziche' la clessidra.
Ho provato in questo modo, ma mentre si esegue il codice, la maschera mostra
solo il bordo ed in trasparenza mi fa vedere cosa c'e' sotto, ma nulla nel
corpo.
Alla fine dell'elaborazione la maschera scompare, ma l'utente non ha visto
alcun messaggio.
Non vorrei mettere il codice nella maschera che mostra il messaggio.
Private Sub Button_Click()
' DoCmd.Hourglass True -- come avevo fatto prima
 
    DoCmd.OpenForm "banner"
    .... Codice
    DoCmd.Close acForm, "banner"
 
'DoCmd.Hourglass False -- come avevo fatto prima
End Sub
Se c'e' un altro modo, altrimenti faccio un modulo e poi lo
lancio su caricamento della maschera che contiene il messaggio".
Un grazie anticipato a tutti
Ciao
maurizio.

 lancio su caricamento della maschera che contiene il messaggio".
Ciao Maurě... bhč un altro modo ci sarebbe, ma mica uno solo... uno č per
esempio evitare una seconda maschera e utilizzarne solo una, quella
principale... potresti aggiungere un Etichetta "ELABORAZIONE IN CORSO" che
rendi visibile all'inizio del codice e invisibile alla sua fine... ovvio
che durante il processo ti conviene bloccare la form per poi sbloccarla
alla fine, almeno all'utente anche se gli gira storto non puň svolgere
nessun operazione durante l'esecuzione.
Fammi sapere.
-- 
Pablitomf
Lentamente muore chi abbandona un progetto prima di iniziarlo, chi non fa
domande sugli argomenti che non conosce, chi non risponde quando gli
chiedono qualcosa che conosce. (P.Neruda)
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 Fammi sapere.
OPS!!! ti ho risposto, ma ora guardo il Subject del tuo post e vedo che
non č poi molto significativo rispetto alla richiesta fatta... la prossima
volta sii piů specifico.


 Fammi sapere.
Grazie, ma non si vede nulla, nel senso che anche se metto come codice
di prova
un paio di loops e prima di questi, form_maschera.etichetta.visible =
true
e poi alla fine del codice form_maschera.etichetta.visible = false
e' come se le 2 istruzioni relative a visible (true e false) venissero
eseguite
entrambe in fondo al codice e non una prima ed una dopo ....
Grazie
maurizio. 
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 Fammi sapere.
Ho fatto la seguente prova
'---
    DoCmd.Hourglass True
 
    Me.ELAB.Visible = True
    For i = 0 To 32766 ' PROVA
          For j = 0 To 5000
          Next j
    Next i
 
    DoCmd.Hourglass False
    MsgBox "FATTO"
 
    Me.ELAB.Visible = False
Ottengo nell'ordine:
1) - Clessidra ON 2) - Attesa dei fine loops 3) - Comparsa del messaggio
4) - Clessidra OFF 5) - Msgbox "FATTO" 6) - Scomparsa del messaggio
Invece dovrei ottenere 1,3,2,4,5,6
Ciao


 Invece dovrei ottenere 1,3,2,4,5,6
Prova un pò...
Dim I As Integer
Dim j As Integer
DoCmd.Hourglass True
Me.elab.Visible = True
DoEvents
Me.Form.Requery
For I = 0 To 32766 ' PROVA
For j = 0 To 5000
Next j
Next I
DoCmd.Hourglass False
MsgBox "FATTO"
Me.elab.Visible = False


 wrote in message
news:ca9kcj$gh9$
1...@news.newsland.it
Grazie, FUNZIONA perfettamente. Ho letto nell'help il significato
di DoEvents. 


E' possibile utilizzare il codice  da Te scritto per più pulsanti, senza
inserirlo nel codice di ognuno ?
[cut]


 [cut]

Un Appunto!!!! Scrivi sempre dopo il Quoting (ovvero dopo il messaggio al
quale rispondi), altrimenti BACCHETTATE.
Cmq, si è possibile, lo rendi Modulo e lo richiami su ogni pulsante.



Scusami.Rispondo sempre cosě, ma nel caso specifico ho ritenuto importante
conservare solo il riferimento e ho tagliato sopra e sotto incollando male.
Creando un modulo ok.
Quello che no ho mai fatto č il richiamo nel tasto, cosa devo scrivere ?
grazie
es tasto
Private Sub Command10_Click()
On Error GoTo Err_Command17_Click
    Dim stDocName As String
    stDocName = "ResultC"
    DoCmd.OpenQuery stDocName, acNormal, acEdit
Exit_Command10_Click:
    Exit Sub
Err_Command10_Click:
    MsgBox Err.Description
    Resume Exit_Command10_Click
  End Sub

 Quello che no ho mai fatto è il richiamo nel tasto, cosa devo scrivere ?
cerca nell'Help l'oggetto "Call"
Se non riesci fammi sapere.


 wrote in message
news:cacaql$i26$1...@news.newsland.it...

Mi dà errori vari, me , variabile...
Non saprei, se lo metto nel pulsante funziona perfettamente.
grazie

 grazie
Non puoi usare Me. ,questo è un comando "diretto" su un controllo
associato a una form... devi rendere tutto il codice esterno... 
Se non hai capito, "dimmi" dei nomi delle form, dei campi, del codice che
usi sul pulsante e del modulo creato.


 wrote in message
news:cach7g$vff$1...@news.newsland.it...

I pulsanti vanno dall1 al 10 vedi sopra ,eseguono delle query, il form si
chiama pannellocomandi, modulo1, funzione elabora ().
grazie

 chiama pannellocomandi, modulo1, funzione elabora ().
Bene.
Per i pulsanti, sull'evento clik usi il Call elabora()
Nella funzione elabora non usare riferimenti diretti a campi della form
pannellocomandi (Es. Me.[Tuo_Campo]), ma usane di esterni che raggiungono
comunque i campi su cui devi operare nella form (Es.
Forms![pannellocomandi]![Tuo_Campo] )
Chiaro?
Se non lo è dillo pure, ma a questo punto riportami il codice della
funzione elabora()


 wrote in message
news:cacin2$gp4$1...@news.newsland.it...

Public Function Elabora()
Dim I As Integer
Dim j As Integer
DoCmd.Hourglass True
Forms![pannellocomandi]!elab.Visible = True
DoEvents
Forms![pannellocomandi]!Requery
For I = 0 To 500 ' PROVA
For j = 0 To 500
Next j
Next I
DoCmd.Hourglass False
MsgBox "FATTO ELABORAZIONE TERMINATA"
Forms![pannellocomandi]!elab.Visible = False
End Function

 End Function
Public Function Elabora()
Dim I As Integer
Dim j As Integer
DoCmd.Hourglass True
Forms![pannellocomandi]!elab.Visible = True
DoEvents
Forms![pannellocomandi].Requery 'QUESTO E' L'ERRORE
For I = 0 To 500 ' PROVA
For j = 0 To 500
Next j
Next I
DoCmd.Hourglass False
MsgBox "FATTO ELABORAZIONE TERMINATA"
Forms![pannellocomandi]!elab.Visible = False
End Function
Fammi sapere


 wrote in message
news:cam72a$cnn$1...@news.newsland.it...

La funzione ...Funziona, ma la uso attraverso i pulsanti per lanciare le
rispettive query (i pulsanti sono piů di uno)  "elaborazione in corso", che
hanno  dei tempi variabili di esecuzione.. Dettaglio: ora bisognerebbe fare
in modo che il msg "FATTO ELABORAZIONE TERMINATA "comparisse alla fine
dell'elaborazione e non come ora subito e una volta schiacciato ok parte
l'elaborazione della query .
Grazie

 Grazie
Sposta il MsgBox "FATTO ELABORAZIONE TERMINATA" e la visualizzazione
riposta a False di elab dalla Funzione all'evento clik del pulsante dopo
aver lanciato la query e dopo aver messo un bel (se non 2) DoEvents.
Tipo cosě (Clik pulsante)
Call Elabora
DoCmd.SetWarnings False
DoCmd.OpenQuery "Tua_query"
DoCmd.SetWarnings True
MsgBox "FATTO ELABORAZIONE TERMINATA"
elab.Visible = False
Ovviamente poi ricordati di eliminarlo dalla funzione Elabora.
Mň ti piace? funge?


 wrote in message
news:camfpp$c24$1...@news.newsland.it...

Assai, yes.