Condividi tramite

ATTIVAZIONE DI UNA MSGBOX AL VERIFICARSI DI UNA CONDIZIONE

Anonimo
2015-02-20T08:46:32+00:00

Buongiorno

mi chiamo Luca e da qualche tempo mi diverto a realizzare un Dbase gestionale che fino ad oggi, e per le finalità per cui è nato, mi funziona correttamente. Voglio precisare che sono alle prime armi con access  e il codice non lo mastico per niente (grazie ad access 2007 e alle creazioni guidate sono riuscito a realizzare un dbase funzionale).

Adesso volevo implementare il mio Dbase con una funzione che mi attivi una Box di messaggio al verificarsi di una o più condizioni. Ho girato un pò in internet ma al momento non sono riuscito a trovare la soluzione, per cui ho deciso di scrivere su questa Community che nel passato, grazie a Mimmo, è riuscita a dare la soluzione ad un problema.

bene adesso vi illustro cosa ho pensato di fare.

Il mio Dbase contiene, tra l'altro, alcune informazioni tra cui ID_Progetto, l'importo del progetto e l'importo delle spese sostenute (vedi Tabella 1); poi ho una seconda tabella dove vengono riportati gli step per richiedere acconto 1, acconto 2, etc. (vedi tabella 2) ed infine ho una query di riepilogo dove, tra l'altro calcolo la % di avanzamento della spesa rispetto all'importo del progetto (vedi tabella query).

Io vorrei realizzare un controllo nella maschera "Tabella query" che in apertura mi faccia comparire un messaggio di avviso (MsgBox) al verificarsi delle seguenti condizioni:

Se la “Percentuale avanzamento” > “30,00%<”60,00” aprire MsgBox con messaggio “PUOI CHIEDERE ACCONTO N. 1”

Se la “Percentuale avanzamento” > “60,00%”<95,00% aprire MsgBox con messaggio “PUOI CHIEDERE ACCONTO N. 2”

Se la “Percentuale avanzamento” > “95,00%”<100,00% aprire MsgBox con messaggio “PUOI CHIEDERE ACCONTO N. 3”

In rete non ho trovato una spiegazione chiara di come applicare o scrivere il codice per raggiungere questo risultato.

Per cui mi rivolgo a quale buona anima che mi aiuti.

Grazie mille

Luca

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

  1. Anonimo
    2015-02-20T16:36:14+00:00

    Senza urlare, però. Grazie. (TUTTOMAIUSCOLO = Urlare. Che poi si fa anche fatica a leggere.)

    Tutto chiaro, ora. Io avevo capito che le percentuali fossero fisse in base all'avanzamento.

    Prova così:

    Option Compare Database

    Option Explicit

    Private Sub Form_Current()

    Dim intAcc  As Integer

    Dim sngAvan As Single

      With Me

        .Visible = True

        sngAvan = .Avanzamento.Value

        If sngAvan > .Acconto3.Value And Not (.ynAcconto3.Value) Then

          intAcc = 3

        ElseIf sngAvan > .Acconto2.Value And Not (.ynAcconto2.Value) Then

          intAcc = 2

        ElseIf sngAvan > .Acconto1.Value And Not (.ynAcconto1.Value) Then

          intAcc = 1

        Else

          intAcc = 0

        End If

        If intAcc Then

          If MsgBox("Vuoi richiedere il " & CStr(intAcc) & "° acconto?" _

                  , vbYesNo Or vbQuestion _

                  , "Acconto") = vbYes Then

            Select Case intAcc

            Case 1: .ynAcconto1.Value = True

            Case 2: .ynAcconto2.Value = True

            Case 3: .ynAcconto3.Value = True

            Case Else

              ' DO NOTHING

            End Select

            DoCmd.OpenForm FormName:="frmAcconti" _

                         , View:=acNormal _

                         , WhereCondition:="[ID_Progetto]=" & .ID_Progetto

          End If

        End If

      End With

    End Sub

    La risposta è stata utile?

    0 commenti Nessun commento

57 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2015-02-20T11:26:40+00:00

    Bhe l'idea della formattazione condizionale non mi dispiace anche se devo dire che nella maschera 

    mi manca lo spazio materiale dove inserirla. Nonostante le due soluzioni sono valide entrambi resta il problema di non far comparire il messaggio ogni qualvolta si apre la finestra del progetto

    Per cui io avevo pensato ad un controllo del tipo spunta (vedi esempio), ma non riesco a pensare a come gestire la macro.

    Mi spiego:

    a) la percentuale è sufficiente per richiedere l'acconto?

    a1. non richiedo l'acconto: ogni volta che apro la maschera mi ricorda di fare la richiesta

    a2. richiedo l'acconto: il box del messaggio non deve comparire

    quindi:

    ad ogni ciclo verifica la percentuale e se è spuntata la casella che è stato richiesto l'acconto corrispondente.

    La figata sarebbe che, al verificarsi della condizione di richiedere l'acconto, msgbox con la richiesta se voglio procedere alla richiesta di acconto

    Grazie

    Luca

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2015-02-20T10:53:32+00:00

    Ciao luca ambrosini,

    beh... ho fatto un MsgBox su tua espressa richiesta. Concordo con te che non è il massimo. Perché non pensi piuttosto a una casella di testo con una formula come origine controllo? Magari con una formattazione condizionale e un bel colore evidente? Per esempio così:

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2015-02-20T10:31:27+00:00

    Grazie Maurizio

    è proprio quello che volevo. 

    Ma ti chiedo ancora un'altra indicazione. Ogni volta che io apro la maschera mi compare il messaggio di avviso; come posso fare in modo che questo non succeda?

    In buona sostanza, volevo sapere come impostare un controllo del tipo che verifichi l'esistenza della richiesta di acconto (io pensavo ad una spunta)

    Grazie

    Luca

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2015-02-20T09:53:43+00:00

    Ciao luca ambrosini,

    se non te la cavi col codice potresti usare una macro. Per esempio:

    La risposta è stata utile?

    0 commenti Nessun commento