Msgbox che chiede di chiudere senza salvare

di il
11 risposte

Msgbox che chiede di chiudere senza salvare

Ciao
Ho una maschera nella quale è necessario imputare un valore in almeno uno di due campi (txtor e txtab) di tipo si/no.
Vorrei che alla chiusura della maschera se nel record attivi non si verifica questa situazione compaia un messaggio che avvisi della mancata imputazione e lasci la possibilità di uscire senza salvare....
Grazie x aiuti

11 Risposte

  • Re: Msgbox che chiede di chiudere senza salvare

    Innanzitutto devi usare vba... e se non hai basi prima servono quelle.
    Quindi evento BeforeUpdate di Form come vedi ha un parametro CANCEL che se forzato a True conseil te dire Annullare la modifica...
    Non ti resta che condizionare il valore a quanto hai esposto.... ed al MsgBox interrogativo...
  • Re: Msgbox che chiede di chiudere senza salvare

    Ciao Alex grazie
    In effetti ho pochissima dimestichezza con vba e non riesci a scrivere in mido corretto quel che me hai suggerito di fare..
    Potresti postare le righe di codice?
  • Re: Msgbox che chiede di chiudere senza salvare

    Sono certo tu abbia letto il regolamento... quindi sai già di aver chiesto una cosa non corretta...
    Se vuoi provarci ti si aiuta... ma di codice pronto non se ne parla.
  • Re: Msgbox che chiede di chiudere senza salvare

    Ciao Alex, ok io ci ho provato così...

    Private Sub Form_BeforeUpdate(Cancel As Integer)
    Dim Risposta As Integer
    If Me.txtor = 0 And Me.txtab = 0 Then
    Risposta = MsgBox("Inserire almeno un valore nei campi progettuali. Chiudere senza salvare?", vbYesNo)
    If Risposta = vbYes Then
    Cancel = True
    End If
    End If
    End Sub

    funziona solo in caso di risposta ok al msgbox nel senso che chiude la maschera in ogni caso...(anche rispondendo no)
    Dove sbaglio
    Grazie
  • Re: Msgbox che chiede di chiudere senza salvare

    Se non vuoi salvare aggiungi un Me.Undo quando chiedi di NON SALVARE.
  • Re: Msgbox che chiede di chiudere senza salvare

    Scusa ancora....
    ho messo Me.Undo
    ma ancora se clicco su Yes chiude correttamente senza salvare, se clicco no, incece chiude e salva....
    Io vorrei che cliccando no non chiudesse la maschera (così da poter imputare il valore mancante in uno dei due campi)
  • Re: Msgbox che chiede di chiudere senza salvare

    Diciamo che quando poni la domanda "Chiudere senza salvare?" serve capire cosa vuoi fare se rispondi NO...!

    Diciamo che se rispondi si è chiarissimo...!
    L'azione sarà l'annullamento delle modifiche e l'uscita.

    Se invece selezioni NO che fai... salvi e chiudi oppure NON SALVI E NON CHIUDI...? direi che non puoi lasciare dubbi e come vedi io per primo ne avrei...!

    Ipotizzo che NON VUOI CHIUDERE, di conseguenza NON VUOI SALVARE.

    Se la mia interpretazione fosse corretta devi aggiungere un elemento per INIBIRE la chiusura.
    Ti proporrei un ragionamento simile:
    
    Option Compare Database
    Option Explicit
    
    Private blCancelClose    As Boolean
    
    Private Sub Form_Load()
        blCancelClose = False
    End Sub
    
    Private Sub Form_BeforeUpdate(Cancel As Integer)
        Dim Risposta As VBA.VbMsgBoxResult
        If Me.txtor = 0 And Me.txtab = 0 Then
            Risposta = MsgBox("Inserire almeno un valore nei campi progettuali. Chiudere senza salvare?", vbYesNo)
            Cancel = True
            
            If Risposta = vbNo Then
                Me.Undo
                blCancelClose = True
            End If
        End If
    End Sub
    
    Private Sub Form_Unload(Cancel As Integer)
        Cancel = blCancelClose
        blCancelClose = False
    End Sub
    
    Fai attenzione sia ad INDENTARE il codice per renderlo comprensibile, che alle piccole modifiche tecniche che ti ho apportato.
  • Re: Msgbox che chiede di chiudere senza salvare

    Si ragionamento corretto: con NO non voglio nè chiudere, nè salvare
    Ora provo!
    Grazie
  • Re: Msgbox che chiede di chiudere senza salvare

    Funziona!!! Grazie mille Alex...
    Se volessi applicare il tutto ad un pulsante che chiude la maschera invece?
  • Re: Msgbox che chiede di chiudere senza salvare

    Bat ha scritto:


    Funziona!!! Grazie mille Alex...
    Se volessi applicare il tutto ad un pulsante che chiude la maschera invece?
    Predisponi delle Variabili booleane come la [blCancelClose] ma gli eventi da usare sono sempre quelli..., vorrà dire che andrai a condizionare le variabili in base alla selezione nell'Evento CLICK del Button.
  • Re: Msgbox che chiede di chiudere senza salvare

    Ok grz Alex
Devi accedere o registrarti per scrivere nel forum
11 risposte