Passaggio focus

di il
10 risposte

Passaggio focus

Ciao a tutti,

volutamente non ho inserito pulsanti, in un form. Quindi l'unco modo di uscire e premendo il tasto chiudi. Ovviamente in access si attiva l'evento UNLOAD. Ora vorrei utilizzare questo evento per controllare i dati immessi. Se i dati sono errati (quindi devo rientrare nel form) posso ritornare al form senza chiuderlo? O devo necessariamente chiuderlo e riaprirlo?

Grazie 

10 Risposte

  • Re: Passaggio focus

    Ciao

    su Unload esegui i controlli e ritorni oppure no gestendo il parametro Cancel
    In questo caso per errore Impostare Cancel a True per ritornare alla Form

    Private Sub Form_Unload(Cancel As Integer)
    If Me.TuoControll da verificare Then
       MsgBox "Tuo messaggio di errore", vbCritical, "Error"
       Cancel = True
    End If
    End Sub
  • Re: Passaggio focus

    Grazie,

    è proprio quello che cercavo. 

    Sei un grande.

  • Re: Passaggio focus

    Potresti essere anche tu un grande se banalmente leggessi le semplici basi della programmazione vba

  • Re: Passaggio focus

    07/05/2023 - tatixtatix6 ha scritto:


    Grazie,

    è proprio quello che cercavo. 

    Sei un grande.

    vedere : Form.Unload event (Access) | Microsoft Learn

  • Re: Passaggio focus

    07/05/2023 - oregon ha scritto:


    Potresti essere anche tu un grande se banalmente leggessi le semplici basi della programmazione vba

    e già… ;))   Son ragazzi

  • Re: Passaggio focus

    Dai non infierite

  • Re: Passaggio focus

    Controllare i dati alla chiusura del form, va bene, ma sarebbe più opportuno controllarli direttamente nel controllo appena immessi.

    Controllarli al momento dell'uscita, fa sorgere poi altre problematiche.

    Fino a quando hai giusto due o tre controlli è agevole gestire sia i controlli che gli errori, ma quando i controlli iniziano ad essere decine, bisogna intercettare l'errore, creare una procedura per individuare il controllo, posizionarsi in automatico sul controllo, decidere se cancellare il dato immesso, oppure evidenziarlo ed altre problematiche, legate poi al salvataggio automatico dei record o altri processi.
    E ti garantisco che riuscire a prevedere tutte le eccezioni, non è facile ed anche a livello di codice, l'errore è sempre dietro l'angolo, anche per gli utenti più esperti.
    Risulta molto più agevole gestire i singoli controlli.

    Solitamente alla chiusura si controlla solo se i campi che dovrebbero essere immessi obbligatoriamente siano stati riempiti e non lasciati vuoti.

  • Re: Passaggio focus

    14/05/2023 - fratac ha scritto:


    Controllare i dati alla chiusura del form, va bene, ma sarebbe più opportuno controllarli direttamente nel controllo appena immessi.

    Controllarli al momento dell'uscita, fa sorgere poi altre problematiche.

    Fino a quando hai giusto due o tre controlli è agevole gestire sia i controlli che gli errori, ma quando i controlli iniziano ad essere decine, bisogna intercettare l'errore, creare una procedura per individuare il controllo, posizionarsi in automatico sul controllo, decidere se cancellare il dato immesso, oppure evidenziarlo ed altre problematiche, legate poi al salvataggio automatico dei record o altri processi.
    E ti garantisco che riuscire a prevedere tutte le eccezioni, non è facile ed anche a livello di codice, l'errore è sempre dietro l'angolo, anche per gli utenti più esperti.
    Risulta molto più agevole gestire i singoli controlli.

    Solitamente alla chiusura si controlla solo se i campi che dovrebbero essere immessi obbligatoriamente siano stati riempiti e non lasciati vuoti.

    Si, è vero…  ma come in tutte le cose c'è sempre un MA / PER0'  ;))

    A mio avviso è pura questione di tecnica.
    Avere tante validazioni sparse per il codice soddisfa quanto da asserito e va bene.

    MA :  avere una unica Routine, posta in una sola parte del codice, che valida tutti i Controll, ha diversi vantaggi, pratici, di leggibilità, successive implementazioni e modifiche, etc… Insomma, non vai a spasso per le righe del codice ma hai tutto concentrato da una parte.

    PERO' : alla fine il risultato può essere il medesimo.

    ;))

  • Re: Passaggio focus

    14/05/2023 - By65Franco ha scritto:


    MA :  avere una unica Routine, posta in una sola parte del codice, che valida tutti i Controll, ha diversi vantaggi, pratici, di leggibilità, successive implementazioni e modifiche, etc… Insomma, non vai a spasso per le righe del codice ma hai tutto concentrato da una parte.

    Beh, usando una public sub puoi avere lo stesso un unica routine.
    Certo ci sarebbero molteplici istanze richiamate per ogni singolo controllo, ma potresti subito riposizionare il focus sul controllo incriminato.
    Domanda frequente del forum su questo argomento, che poi naufraga la maggior parte delle volte a causa della mancata conoscenza del vb e dei processi.
    Ma anche usare una funzione pubblica implica una conoscenza approfondita dello strumento.
    DIciamo che sono due modi logici diversi di approcciarsi al problema.

  • Re: Passaggio focus

    14/05/2023 - fratac ha scritto:


    14/05/2023 - By65Franco ha scritto:


    MA :  avere una unica Routine, posta in una sola parte del codice, che valida tutti i Controll, ha diversi vantaggi, pratici, di leggibilità, successive implementazioni e modifiche, etc… Insomma, non vai a spasso per le righe del codice ma hai tutto concentrato da una parte.

    Beh, usando una public sub puoi avere lo stesso un unica routine.
    Certo ci sarebbero molteplici istanze richiamate per ogni singolo controllo, ma potresti subito riposizionare il focus sul controllo incriminato.
    Domanda frequente del forum su questo argomento, che poi naufraga la maggior parte delle volte a causa della mancata conoscenza del vb e dei processi.
    Ma anche usare una funzione pubblica implica una conoscenza approfondita dello strumento.
    DIciamo che sono due modi logici diversi di approcciarsi al problema.

    SI certo, due approcci diversi e cmq consoni… ma anche se non public una semplice routine sulla form è sufficiente, ma tutto ovviamente dipende, come si diceva prima, dalla complessità della form e i suoi controlls. 
    Poi volendo si possono anche controllare/validare i dati immessi senza scrivere una sola riga di codice ma impostando i controlli direttamente nelle proprietà dei campi (Valido se) in struttura Form. Beh, insomma… ci sono diversi metodi che secondo lo scenario si possono adottare. ;))

Devi accedere o registrarti per scrivere nel forum
10 risposte