Evento exit textbox

di il
8 risposte

Evento exit textbox

Buongiorno ho questo problema se qualcuno può aiutarmi con una soluzione, ho una textbox è vorrei che sull'evento exit mi controlli se la textbox è vuota, e nel caso lo sia mi mostri un messaggio che mi avvisi che la textbox va compilata e mi dia due opzioni, continua o esci, ne caso scelgo continuare mi riporta il focus sulla textbox e nel caso scelgo esci mi deve chiamare la form. Ho provato con questo codice ma non mi funziona 

Private Sub txtBox_Exit(Cancel As Integer)  If IsNull(Me.txtBox) Or Me.txtBox = "" Then
       Dim answer As Integer
       answer = MsgBox("La textbox è vuota. Vuoi continuare?", vbQuestion + vbYesNo, "Messaggio di avviso")
       If answer = vbNo Then
           DoCmd.Close acForm, Me.Name

        Else

           Cancel=1

          End If
   End If
End Sub

8 Risposte

  • Re: Evento exit textbox

    In cosa non funziona? Devi essere più preciso

    P.S. correggi il titolo

  • Re: Evento exit textbox

    Se premo l'opzione continuare funziona ,ma se scelgo di uscire mi da errore dicendomi che non è possibile eseguire la operazione su un evento di form o report.

  • Re: Evento exit textbox

    Cancel=1 non va bene, se metti True equivale al valore -1

    Private Sub txtBox_Exit(Cancel As Integer)  
    	Dim answer As VBA.VbMsgBoxResult
    	If IsNull(Me.txtBox) Or Me.txtBox = "" Then
        	answer = MsgBox("La textbox è vuota. Vuoi continuare?", vbQuestion + vbYesNo, "Messaggio di avviso")
        	If answer = vbNo Then
            	DoCmd.Close acForm, Me.Name
        	Else
        		Cancel=True
       		End If
       	End if
    End Sub
  • Re: Evento exit textbox

    Grazie Alex per la correzzione non mi ero accorto, comunque l'errore me lo dà sulla linea DOCMD.CLOSE, ACFORM ME.NAME.

  • Re: Evento exit textbox

    Che errore ti da…?

    Prova questa variante in quanto a mio avviso manca un pezzo…

    Private Sub txtBox_Exit(Cancel As Integer)  
    	Dim answer As VBA.VbMsgBoxResult
    	If LEN(Me.txtBox & vbNullstring)=0 Then
        	answer = MsgBox("La textbox è vuota. Vuoi continuare?", vbQuestion + vbYesNo, "Messaggio di avviso")
        	Cancel=True
        	If answer = vbNo Then	DoCmd.Close acForm, Me.Name
       	End if
    End Sub
    
    
  • Re: Evento exit textbox

    Grazie Alex ho provato la variante che mi hai suggerito ma non funziona ancora, mi dà lo stesso errore. Il nimero di errore è 2585 e il msg ‘Non è possibile eseguire questa azione durante l’elaborazione di un evento di maschera o report' . Ho provato anche ad intercettare l'errore ma non mi mostra più l'errore e nemmeno mi esce dalla form.

  • Re: Evento exit textbox

    Ho fatto qualche prova, e qualche ricerca, e ti confermo che il problema è ricorrente, la chiusura all'interno di un evento genera questo errore, francamente non riesco a comprenderne bene il legame ma credo sia legato agli eventi di Form considerati transazionali, e potrebbe avere un senso.

    Detto questo la soluzione che ho trovato è una sorta di WorkAround, ovvero si lascia chiudere la transazione e si delega la chiusura al Timer.

    Option Compare Database
    Option Explicit
    
    Private blExit  As Boolean
    
    Private Sub Form_Timer()
        If blExit Then DoCmd.Close acForm, Me.Name
    End Sub
    
    Private Sub Nome_Exit(Cancel As Integer)
        On Error Resume Next
        Dim answer As VBA.VbMsgBoxResult
        If Len(Me.Nome & vbNullString) = 0 And Not blExit Then
            answer = MsgBox("La textbox è vuota. Vuoi continuare?", vbQuestion + vbYesNo, "Messaggio di avviso")
            Cancel = True
            blExit = (answer = vbNo)
            If blExit Then Me.TimerInterval = 50
        End If
    End Sub
  • Re: Evento exit textbox

    Grazie Alex, appena posso proverò, intanto avevo aggirato per così dire l'ostacolo, creando una msgbox personalizzata, è dall'evento exit della textbox in caso di vuota, apro con un docmd.open la form personalizza con una label di messaggio e due button, sul button continua porto il focus sulla textbox e chiudo la form di messaggio, mentre sul button esci chiudo prima la form 1 quella dove c'è la textbox è successivamente chiudo la form del messaggio.

Devi accedere o registrarti per scrivere nel forum
8 risposte