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 | 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
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-27T20:24:53+00:00

    Scusa non avevo ben capito cosa avevi scritto in precedenza.

    Faccio un piccolo riepilogo per vedere se ho capito il tuo suggerimento.

    Per i campi presentato e approvato proponi un codice su eveno clic e non su corrente in modo la far apparire la msgbox nel momento in cui il campo è vero. Mentre un'altro codice (su corrente) dovrebbe gestire l'avanzamento.

    Ho capito nel modo giusto?

    Se ho capito bene, allora posso dire che l'idea è proprio quella giusta.

    Un'idea sempre sui campi presentato e approvato: si può pensare alla disattivazione del campo una volta che lo stesso diventa vero/si?

    Grazie

    Luca

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2015-02-27T19:58:25+00:00

    Mi arrendo. Prima però ti invito a riflettere, per la terza volta credo, sul fatto che quando apri la maschera per la prima volta i campi Presentato e Approvato sono spenti. Ok? Ora mettiamo che accendi Presentato. La routine SuCorrente non può eseguire nulla, perché l'evento è già trascorso. Quando eseguirà qualcosa? La prossima volta che aprirai la maschera con quel progetto. Che potrebbe essere chissà quando, non certo quando tu hai cliccato Presentato. Questo è chiaro? Ecco perché proponevo di mettere il messaggio, per Presentato e Approvato, nell'evento SuClic di quei campi.

    E aggiungo:

    Mentre è la procedura che accende i campi degli acconti, e che quindi non mostrerà più il messaggio una volta che gli Acconti sono accesi, nel caso di Presentato e Approvato come facciamo a dire alla procedura di non continuare a mostrare il messaggio che tu vorresti far comparire se Presentato o Approvato sono accesi?...

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2015-02-27T19:45:19+00:00

    Ciao Maurizio,

    In realtà la seguenza delle operazioni è di inserire i dati relativi alle percentuali, etc. (tabella 1) quando creo il mio record o lavoro....(la tabella 1 è stata la simulazione di una parte del mio dbase che contiene altre maschere e altre tabelle)....man mano che il tempo scorre (giorni/settimane/mesi ed anche anni) io inserisco le spese che gravano sul quel lavoro e inserisco anche altri dati (presentazione, approvazione) ... il dbase è pensato per gestire singolarmente ogni lavoro (nel senso che quando devo inserire una spesa o altro dato) lo faccio solitamente su un solo lavoro...difficilmente capire di dover inserire dati su più lavori nella stessa giornata.

    Quando poi vedo che la mia percentuale di spese si avvicina alla possibilità di chiedere un acconto allora passo alla maschera richieste.

    Questo è quello che faccio all momento. Naturalmente tutto è migliorabile  e sono aperto ad ascoltare te che sei più esperto di me.

    Il codice lo possiamo anche collocare nella maschera principale, penso che nonci sono problemi su questo.

    E' giusto quando dici che sono io a mettere la spunta su presentato e approvato, il codice deve fare il controllo che il campo sia SI e dirmi che posso chiedere il primo, secondo, etc.

    Perchè questo? perchè da momento in cui creo il lavoro e il momento in cui viene approvato, le tempistiche sono diverse e, come dicevo prima, può passare del tempo.

    Spero di aver fugato i dubbi che mi hai esternato. Ripeto, sono inesperto e questo forse rende le cose più  difficili. Quello che ti posso garantire è che la sequenza è giusta che avvenga come dico io perchè conosco la procedura per cui mi sono deciso a progettare questa procedura.

    Grazie ancora di tutto e dei tuoi consigli che sono e saranno prezioni.

    Luca

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2015-02-27T12:16:44+00:00

    Bello, ma... come si usa? Perché il mio problema nel capire le tue esigenze è che mi sfugge il senso della cosa. Come dicevo, la sequenza delle operazioni.

    Vediamo.

    Non db ci sono due maschere: Maschera Richieste e Tabella1(Mannaggia! Per inciso, un ottimo sistema per fare confusione è non chiamare le cose col loro nome. Peggio ancora chiamarle col nome di un altro.)

    Apri la Maschera Richieste e ti metti a sfogliarla record per record. Quando si arriva a un record in cui, in base a una certa regola, risulti che è ora di richiedere un acconto, ti aspetti che compaia un messaggio con le informazioni riguardo tale acconto che ti chieda se vuoi procedere con la richiesta. Se tu accetti dovrebbe aprirsi una maschera. (Quale, Tabella1?)

    Ora veniamo alla questione Presentazione e Approvazione. Sono caselle Sì/No. Se quando diventa attivo il record sono settate a No non deve succedere niente, come è ovvio. Ma quando, comeperché e, soprattutto chi le setterà a ? Suppongo tu. E a quel clic non succederà nulla. Dovrai aspettare di ripassare su quel record per ottenere il messaggio, se mettiamo Presentazione e Approvazione nella routine SuCorrente! È questo che vuoi? Si può fare, ma che senso ha?

    A me viene il sospetto che, invece che andare su e giù per i record per vedere se compare un messaggio (e quando i record saranno 10, 100, 1000?...) ti faccia più comodo una maschera che, all'apertura del db ti dica quali sono gli acconti da chiedere quel giorno, e di quali progetti.

    Ma forse non ho ancora capito nulla.

    La risposta è stata utile?

    0 commenti Nessun commento