MsgBox VbYesNo

di il
4 risposte

MsgBox VbYesNo

Ciao a tutti,
sto sviluppando un database per gestire le spese nel ufficio e vorrei mettere un messaggio all'apertura di una maschera con l'opzione Yes No, se la risposta è Yes la maschera si apre normalmente, se invece la risposta è No la maschera non si deva aprire.

ecco dove ci arrivo:
Private Sub Form_Open(Cancel As Integer)
                If MsgBox ("..., Convalidare?", vbYesNo) = vbNo Then ?????
                End If    
         End Sub
Cosa devo mettere dopo Then per fare si che non mi si apra la maschera? (????)
Grazie

4 Risposte

  • Re: MsgBox VbYesNo

    aldiladi ha scritto:


    Ciao a tutti,
    sto sviluppando un database per gestire le spese nel ufficio e vorrei mettere un messaggio all'apertura di una maschera con l'opzione Yes No, se la risposta è Yes la maschera si apre normalmente, se invece la risposta è No la maschera non si deva aprire.

    ecco dove ci arrivo:
    Private Sub Form_Open(Cancel As Integer)
                    If MsgBox ("..., Convalidare?", vbYesNo) = vbNo Then 
                        Cancel=True   ' <--- Questo 
                    End If    
             End Sub
    Cosa devo mettere dopo Then per fare si che non mi si apra la maschera? (????)
    Grazie
    Attenzione che non basta il suggerimento che ti ho aggiunto...
    Quando ANNULLI l'evento OPEN viene generato un ERRORE a carico della Funzione che chiama l'apertura della maschera...!
    L'errore generato è il [2501] quindi risulta indispensabile gestirlo.
    Esempio:
    
    Private Sub cmdButton_Click()
             On Error goto ErrHandler
              Docmd.OpenForm "YourFormName"
             exit sub
    ErrHandler:
          Select Case Err.Number
               Case 2501:  resume next    ' <--- Questo errore accade per ANNULLAMENTO AZIONE OPEN
               Case Else
                       MsgBox Err.Number  & vbNewLine & Err.Description
          End Select
    end sub
  • Re: MsgBox VbYesNo

    (Anche) per me la gestione dell'evento "Su apertura" mi appare scomodo. Meglio il clic del pulsante cmdButton (da una maschera precedente). Io avrei scritto semplicemente
    Private Sub cmdButton_Click()
    If MsgBox("..., Convalidare?", vbYesNo) = vbYes Then DoCmd.OpenForm "TuaMaschera"
    End Sub
    se non ho travisato altri dettagli...
  • Re: MsgBox VbYesNo

    OsvaldoLaviosa ha scritto:


    (Anche) per me la gestione dell'evento "Su apertura" mi appare scomodo. Meglio il clic del pulsante cmdButton (da una maschera precedente). Io avrei scritto semplicemente
    Private Sub cmdButton_Click()
    If MsgBox("..., Convalidare?", vbYesNo) = vbYes Then DoCmd.OpenForm "TuaMaschera"
    End Sub
    se non ho travisato altri dettagli...
    Sono 2 opzioni distinte Osvaldo, entrambe fattibili.
    Se usi il tuo suggerimento non serve gestire l'errore, in quanto anticipi l'azione...
    Se usi il metodo del Cancel devi gestire l'errore.

    Quello che serve chiedersi non è se risulta più o meno scomodo, ma perchè e quando si predilige un metodo all'altro ...!
    Lascio a voi la Vostra risposta... vi dico la mia motivata tecnicamente:

    Siccome concepisco gli OGGETTI Indipendenti... lascio che ogni Oggetto faccia il suo mestiere senza dovermi preoccupare che gli altri si debbano adeguare.
    Quindi se si è abituati a scrivere codice strutturato, la gestione errori la si mette sempre e se si ha una Sub/Function che invoca un OpenForm/OpenReport avremo SEMPRE un Case 2501 che diventa codice STANDARD.
    Quindi la Maschera CHIAMANTE non avrà MAI alcuna modifica, e la gestione dell'annullamento rimane limitata all'oggetto singolo senza spalmare codice specifico in giro...
  • Re: MsgBox VbYesNo

    Grazie 1000

    per adesso prendo l'opzione di osvaldo, più semplice...
    ma farò un po' di pratica on quella di Alex, per imparare a gestirla anche a quella

    di nuovo, grazie
Devi accedere o registrarti per scrivere nel forum
4 risposte