Acquista i nostri libri consigliati su Amazon.it
+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 3 su 3

Controllo record duplicato durante l'immissione di un nuovo record

  1. #1
    L'avatar di RaoulDuke
    RaoulDuke non è in linea Scolaretto
    Post
    138
    Like Inviati  
    3
    Like Ricevuti  
    0
    Buonasera a tutti e buon anno.

    Nel database sul quale sto lavorando ho una maschera per l'immissione di un nuovo cliente.
    Vorrei poter controllare l'esistenza di un eventuale duplicato durante l'immissione di un nuovo record nella maschera in questione.

    Farlo al momento dell'aggiornamento del record non è un problema, ma preferirei che il sistema riuscisse ad avvisare l'utente di un possibile duplicato quando i tre campi sui quali faccio il controllo (Nome, Cognome e CAP) sono stati riempiti, prima del salvataggio del record in tabella.

    Ad ora l'unico sistema funzionante che ho trovato è quello di utilizzare l'evento AfterUpdate su ognuno dei tre campi in questione, con questo codice:

    Private Sub Nome_AfterUpdate()
        Dim CognomeRicerca As String
            
        'Controllo esistenza Cliente
        If Not IsNull(Me.Cognome) And Not IsNull(Me.Nome) And Not IsNull(Me.CAP) Then
            CognomeRicerca = Replace(Me.Cognome, "'", "''")
            If DCount("[IDCliente]", "[tabClienti]", "[Nome]='" & Me!Nome & "' AND " & "[Cognome]='" & CognomeRicerca & "' AND " & "[CAP]='" & Me!CAP & "'") > 0 Then
                MsgBox "Cliente già presente nel database. Annullo l'immissione", vbOK + vbExclamation
                DoCmd.RunCommand acCmdUndo
            End If
        End If
    End Sub
    
    Non utilizzo l'evento AfterUpdate solo sull'ultimo controllo (il CAP) per intercettare anche quei casi dove i campi non vengono riempiti in ordine e l'utente salta da un campo all'altro con il mouse.

    Il sistema funziona ma è macchinoso. Lo diverrebbe ancor di più se dovessero aumentare i campi sui quali controllare i duplicati.
    Mi chiedevo dunque se esistono modi più diretti.

    Intuitivamente pensavo di usare l'evento Dirty della maschera (che dovrebbe intercettare la modifica di un record in fase di immissione) e far partire il controllo duplicati una volta che i tre campi risultano completati. Ma riesco a far partire l'evento Dirty solo alla prima immissione di un carattere in un controllo, poi l'evento non si ripete più. Se pongo la variabile Cancel su True, invece, l'evento cicla senza fine.

    Avete idee migliori?

    Grazie e buon 2021!

  2. #2
    L'avatar di @Alex
    @Alex non è in linea Very Important Person
    Post
    16,745
    Like Inviati  
    0
    Like Ricevuti  
    20
    La logica va bene... ma l'evento NO.
    Devi usare BEFOREUPDATE e, forzare il RollBack del salvataggio sfruttando il parametro Cancel esposto dall'evento, che metterai a True.
    Questo non farà salvare il dato.

    Valuta anche l'evento BEFOREINSERT di maschera.
    ℹ️ Leggi di più su @Alex ...

  3. #3
    L'avatar di RaoulDuke
    RaoulDuke non è in linea Scolaretto
    Post
    138
    Like Inviati  
    3
    Like Ricevuti  
    0
    Ciao Alex e grazie per la pronta risposta.
    Tu intendi il BeforeUpdate della maschera?

    Non so se mi sono spiegato bene, ma io vorrei forzare il controllo duplicati immediatamente dopo che i tre campi su cui si esegue il controllo sono stati riempiti dall'utente, prima ancora che gli altri campi lo siano.
    Questo perché i dati da immettere sono tanti, non vorrei che chi si trova a compilare la maschera perda un sacco di tempo ad aggiungere dati per poi accorgersi alla fine che il cliente era già presente nel database.

    Il BeforeUpdate della maschera avviene solo quando mi appresto a salvare il record, giusto?

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. query eliminazione primo record duplicato
    Da enrico buccia nel forum Microsoft Access
    Risposte: 13
    Ultimo Post: 10-02-2015, 13:39
  2. Msg Box: su Campo non Duplicato e Nuovo Record
    Da X_Files nel forum Microsoft Access
    Risposte: 3
    Ultimo Post: 13-04-2012, 21:47
  3. Access - record duplicato
    Da dodo47 nel forum Microsoft Access
    Risposte: 6
    Ultimo Post: 09-11-2011, 11:47
  4. Risposte: 4
    Ultimo Post: 02-03-2011, 13:18
  5. [Access] Inserimento nuovo record con controllo duplicato.
    Da Dante87 nel forum Microsoft Access
    Risposte: 9
    Ultimo Post: 08-04-2010, 19:07