PopUp di attesa

Anonimo
2017-09-22T09:39:48+00:00

Buongiorno, sto terminando un DB che gestisce clienti e ordini, nella maschera degli ordini ho inserito un bottone che esegue tramite codice VBA una serie di operazioni in background ( quindi l'utente vede sempre la stessa maschera davanti ) che durano alcuni secondi durante i quali l'utente non ha modo di capire se il processo è terminato o meno ( l'utente non deve toccare nulla fino a processo terminato ).

A questo punto la mia domanda, io vorrei inserire all'inizio del codice una riga con msgbox che si apre e poi alla fine del codice una riga che lo toglie in modo da far vedere all'utente una cosa tipo "attendere prego", premetto che ho cercato in giro ma non ho trovato nulla che faccia al caso mio.

Ho provato ad inserire un msgbox ma non riesco a farlo senza nessun bottone e mettendo anche solo il bottone ok il codice parte solo dopo che ho premuto quindi non serve a nulla.

Grazie.

Microsoft 365 e Office | Access | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2017-09-22T15:59:47+00:00

ciao Roberto,

[...]

la prima finestra viene chiusa e poi riaperta per salvare nella tabella le modifiche sui campi 

[...]

vedi qui :

https://msdn.microsoft.com/en-us/vba/access-vba/articles/form-refresh-method-access?f=255&MSPPError=-2147217396

https://msdn.microsoft.com/en-us/vba/access-vba/articles/docmd-requery-method-access?f=255&MSPPError=-2147217396

[...]

le altre non so come si fa ad aprirle in maniera nascosta.

[...]

vedi  qui :

https://msdn.microsoft.com/en-us/vba/access-vba/articles/docmd-openform-method-access?f=255&MSPPError=-2147217396

ed in particolare :

https://msdn.microsoft.com/en-us/vba/access-vba/articles/acwindowmode-enumeration-access?f=255&MSPPError=-2147217396

il valore 1.

[...]

La routine esegue delle operazioni con quelle finestre ed il report

[...]

così a naso mi verrebbe da pensare che forse le routine potrebbero essere posizionate in un modulo standard senza che sia necessario aprire gli oggetti che le contengono, ma potrebbe anche non essere così, troppe poche informazioni.

[...]

Posso lasciare tutto così, non è un problema, era solo più bello rendere visivo il fatto di dover aspettare quel tempo.

[...]

mai accontentarsi del "basta che funzioni".

[...]

Grazie.

[...]

prego, ciao, Sandro.

La risposta è stata utile?

1 persona ha trovato utile questa risposta.
0 commenti Nessun commento

4 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2017-09-22T14:47:27+00:00

    Grazie Sandro, anche io la progress Bar l'avevo esclusa, voglio stare sul semplice.

    La tua idea l'avevo già valutata, il problema è che in quella routine VBA vangono aperte e chiuse due finestre ed un Report per svolgere delle operazioni automatiche e quindi anche mettendo in una finestra questa casella da rendere visibile al momento giusto poi quella finestra verrebbe chiusa, poi aperta un'altra poi aperto un report e poi riaperta quella iniziale e la scritta sparirebbe subito.

    Volevo un pop-up che rimnesse sopra tutto e che poi sparisse. Il punto è che in alcuni Pc la routine dura 2 secondi, in altri anche 4 e l'utente dopo aver premuto il bottone non sa quando la cosa è finita tranne che vede che davanti agli occhi le finestre smettono di aprirsi e chiudersi da sole.

    Grazie.

    La risposta è stata utile?

    1 persona ha trovato utile questa risposta.
    0 commenti Nessun commento
  2. Anonimo
    2017-09-22T15:16:46+00:00

    Grazie Sandro,

    la prima finestra viene chiusa e poi riaperta per salvare nella tabella le modifiche sui campi, le altre non so come si fa ad aprirle in maniera nascost.

    La routine esegue delle operazioni con quelle finetre ed il report , non l'utente, se non sono aperte non riesco ad eseguire le operazioni se no.

    Posso lasciare tutto così, non è un problema, era solo più bello rendere visivo il fatto di dover aspettare quel tempo.

    Grazie.

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2017-09-22T15:00:22+00:00

    ciao Roberto,

    tutto questo aprire e chiudere però mi fa un po' strano...

    Per un tempo di esecuzione di  o 4 secondi io personalmente non farei nulla.

    L'etichetta da rendere visibile oppure no, è da mostrare sulla stessa form da cui lanci la routine che potresti evitare di chiudere.

    Hai valutato di aprire e chiudere forms e report in modo nascosto? così l'utente non vede nulla, sempre che tu non debba interagire con quegli oggetti, ma direi di no da come intuisco.

    Facci sapere.

    Ciao, Sandro.

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2017-09-22T09:59:42+00:00

    ciao Roberto,

    più che un msgBox, vedrei bene una label nascosta con la dicitura che vuoi mostrare (attendere prego) e non visibile prima dell'inizio dell'elaborazione.

    Nel momento in cui l'elaborazione inizia, la rendi visibile per poi nasconderla nuovamente post elaborazione della tua routine.

    Con un msgbox l'esecuzione della routine vba si blocca fino a che l'utente non risponde, è una soluzione che non adotterei, come hai già notato tra l'altro.

    Un'ulteriore opzione, sempre parlando di attività sincrone, potrebbe essere quella di fare apparire una progress bar....

    Ma restiamo sul semplice per il momento.

    Ciao, Sandro.

    La risposta è stata utile?

    0 commenti Nessun commento