Condividi tramite

ProgressBar al posto della rotella di attesa

Anonimo
2023-04-27T16:16:16+00:00

Salve, volevo sapere se c'è la possibilità di sostituire la rotella che gira quando Access sta elaborando qualcosa (tipo nel mio caso l'esecuzione di 5-6 query di aggiornamento) con una ProgressBar che faccia vedere lo stato di avanzamento del processo.

Giusto per non lasciare l'utente in sospeso e fargli vedere che le rotelle del suo pc stanno effettivamente lavorando per lui e che non si è bloccato nulla.

Ho guardato l'esempio delle ProgressBar su ilsitocomune, ma non ho idea di come adattarlo all'operazione di avvio del mio gruppo di query.

Grazie

Microsoft 365 e Office | Accesso | Per il lavoro | 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

  1. domenico laurenza 9,900 Punti di reputazione Moderatore volontario
    2023-04-28T20:02:39+00:00

    Ciao,

    purtroppo, come puoi immaginare, mi è praticamente impossibile effettuare delle prove, ci vorrebbe troppo tempo per creare l'ambiente.

    Prova ad inserire l'istruzione DoEvents tra le due

    DoCmd.OpenQuery "Qry_Camere_Prenotazioni_Del"

    DoEvents

    Forms!BarraStatus!C1.Visible = True

    Ciao Mimmo

    La risposta è stata utile?

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

5 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2023-04-28T17:38:07+00:00

    Salve Mimmo,

    alla fine ho provato a mettere in pista il tuo consiglio creando gli step in questo modo:

    ho creato una maschera con 13 (c1-c13) quadratini disposti uno vicino all'altro ben riquadrati e nascosti

    prima dell'esecuzione della prima query (che è di eliminazione tabella) faccio aprire la maschera "BarraStatus" come maschera di popup

    poi dopo l'esecuzione di ogni query (che alla fine sono di accodamento) faccio visualizzare il relativo quadratino. fino all'ultima query dove faccio esequire la chiusura della maschera "BarraStatus" e l'apertura della maschera con il riepilogo dei dati che mi hanno popolato la mia tabella.

    Il problema è che all'avvio appare la mascherina ma rimane completamente bianca (con Non Risponde in barra del titolo) fino all'esecuzione dell'ultima query ed effettivamente si vede in basso sulla status bar di Access che le query avanzano e la mia maschera "flesha" in base all'avanzamento della status bar di Access.

    come prima prova ho "buttato giù" questo codice:

    Function Camere()

    DoCmd.SetWarnings (False)

    DoCmd.OpenForm "BarraStatus", acNormal

    DoCmd.OpenQuery "Qry_Camere_Prenotazioni_Del"

    Forms!BarraStatus!C1.Visible = True

    If DLookup("DISPONIBILI_D", "Qry_Camere_Prenotazioni_VER", "DISPONIBILI_D > 0") Then

    DoCmd.OpenQuery "Qry_Camere_Prenotazioni_Dpp"

    Forms!BarraStatus!c2.Visible = True

    DoCmd.OpenQuery "Qry_Camere_Prenotazioni_DppOpz"

    Forms!BarraStatus!c3.Visible = True

    DoCmd.OpenQuery "Qry_Camere_Prenotazioni_DppLs"

    Forms!BarraStatus!c4.Visible = True

    DoCmd.OpenQuery "Qry_Camere_Prenotazioni_DppLsOpz"

    Forms!BarraStatus!c5.Visible = True

    DoCmd.OpenQuery "Qry_Camere_Prenotazioni_DppUs"

    Forms!BarraStatus!c6.Visible = True

    DoCmd.OpenQuery "Qry_Camere_Prenotazioni_DppUsOpz"

    Forms!BarraStatus!c7.Visible = True

    Else

    Forms!BarraStatus!c2.Visible = True

    Forms!BarraStatus!c3.Visible = True

    Forms!BarraStatus!c4.Visible = True

    Forms!BarraStatus!c5.Visible = True

    Forms!BarraStatus!c6.Visible = True

    Forms!BarraStatus!c7.Visible = True

    End If

    If DLookup("DISPONIBILI_S", "Qry_Camere_Prenotazioni_VER", "DISPONIBILI_S > 0") Then

    DoCmd.OpenQuery "Qry_Camere_Prenotazioni_Sing"

    Forms!BarraStatus!c8.Visible = True

    DoCmd.OpenQuery "Qry_Camere_Prenotazioni_SingOpz"

    Forms!BarraStatus!c9.Visible = True

    Else

    Forms!BarraStatus!c8.Visible = True

    Forms!BarraStatus!c9.Visible = True

    End If

    If DLookup("DISPONIBILI_T", "Qry_Camere_Prenotazioni_VER", "DISPONIBILI_T > 0") Then

    DoCmd.OpenQuery "Qry_Camere_Prenotazioni_Tripl"

    Forms!BarraStatus!c10.Visible = True

    DoCmd.OpenQuery "Qry_Camere_Prenotazioni_TriplOpz"

    Forms!BarraStatus!c11.Visible = True

    Else

    Forms!BarraStatus!c10.Visible = True

    Forms!BarraStatus!c11.Visible = True

    End If

    If DLookup("DISPONIBILI_Q", "Qry_Camere_Prenotazioni_VER", "DISPONIBILI_Q > 0") Then

    DoCmd.OpenQuery "Qry_Camere_Prenotazioni_Quad"

    Forms!BarraStatus!c12.Visible = True

    DoCmd.OpenQuery "Qry_Camere_Prenotazioni_QuadOpz"

    Forms!BarraStatus!c13.Visible = True

    Else

    Forms!BarraStatus!c12.Visible = True

    Forms!BarraStatus!c13.Visible = True

    End If

    DoCmd.SetWarnings (True)

    DoCmd.Close acForm, "BarraStatus"

    End Function

    è vero che l'ho fatta più semplice di quanto sembri ma speravo che alla fine lo fosse

    La risposta è stata utile?

    0 commenti Nessun commento
  2. domenico laurenza 9,900 Punti di reputazione Moderatore volontario
    2023-04-27T20:55:42+00:00

    La progressivo bar se ricordo bene si basa sul numero di records di una elaborazione. Cioè avanza mano mano che l'elaborazione tratta un tot di records. Nel tuo caso le elaborazioni sono multiple quindi puoi, forse, segnalare i 4/5 step delle varie query mano mano che si susseguono.

    Se le query sono gestite da codice e non sono query di query al termine di ciascuna puoi aggiornare il valore di un controllo in maschera o se la gestisci anche su una Ribbon.

    Mimmo

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2023-04-27T20:40:59+00:00

    Ciao Mimmo, grazie per la risposta, ho capito cosa intendi ma non ho ben capito come fare...

    nel senso... ho visto che alla fine la progressbarr altro non è che una sorta di rettangolo con altri rettangoli che si allungano e all'occasione cambiano colore in base ad un'impostazione di tempo o di progressione di un record, ma nel mio caso dici che dovrei costruire una sorta di barra a progressione per step che vado a mettere tra l'esecuzione delle mie query, in modo che quando finisce una ed inizia la successiva il mio rettangolo si riempie di volta in volta?

    ... io speravo in qualcosa di meno laborioso tipo: al posto della freccia a clessidra o la più recente rotella che gira, mi appariva una mascherina che sostituisse la freccia con una barra... era troppo belle per essere vero.

    La risposta è stata utile?

    0 commenti Nessun commento
  4. domenico laurenza 9,900 Punti di reputazione Moderatore volontario
    2023-04-27T16:48:30+00:00

    Ciao,

    forse nel tuo caso, immagino tu sia su una maschera, imposterei un controllo che ti possa riportare ad es.

    Step 1/5 in esecuzione. Attendere ...

    Variando il numero in 2/5 3/5 ecc.

    Ciao Mimmo

    La risposta è stata utile?

    0 commenti Nessun commento