Newsgroup: it.comp.appl.access
Titolo: Re: evitare duplicati da maschera

 ...
Devi essere pi� preciso di "non sono riuscito".
Cosa hai provato, cos'� successo, incolla il tuo codice ecc.
Abbiamo discusso tante volte qui come adattare il codice
a pi� campi ecc. Cerca un po' sul web, p.e. con il mio
nome e il numero 4.25.
-- 
Ciao
Karl
*********
Access FAQ:  
http://www.donkarl.com/it
 

 
non si fa nella maschera.
nella tua tabella inserisci una sola volta gli indici opportuni e vedrai 
che il controllo sui duplicati te lo ritrovi aggratisse compreso nel 
prezzo.
con la soluzione che vorresti applicare tu, dovresti riportare la logica 
di controllo dei duplicati in ogni e qualsiasi maschera di inserimento e 
modifica dei dati.
e se per caso piu' avanti tu decidessi di cambiare/aggiungere frontend 
(chesso', la solita paginetta web) dovresti riportare anche li' la logica 
di controllo dei duplicati.
-- 
Paolo opg
BE AWARE that this post uses a fake reply-to address
to contact me write to:
janickg ( at ) hotmail ( dot ) com
--

 Access FAQ:  
http://www.donkarl.com/it
Ciao Karl,
questo è il codice usato sull'evento click del pulsante Inserisci:
If Not IsNull(Dlookup("Cognome", "Utenti", _
"Cognome = " & Chr$(34) & Me!Cognome & Chr$(34))) _
And Me!Cognome <> nz(Me!Cognome.OldValue) Then
MsgBox Me!Cognome & " Già esiste.", vbOKOnly, "Duplicato!"
Cancel = True
End If
(segue il codice di esecuzione della query di accodamento.)
Nella maschera di inserimento dati, i cui campi non sono associati, vi sono tra gli altri i campi Cognome, Nome, Datanascita che sono i dati che non vorrei far duplicare.
Ho inserito il tuo codice PRIMA di quello che esegue la query, sull'evento click del pulsante e non succede nulla, i duplicati vengono inseriti tranquillamente nella tabella Utenti.
Per rispondere anche a Paolo opg devo dire che sto lavorando con tabelle collegate via odbc ad un server mysql, quindi preferisco agire sulle maschere per il momento, anche perchè la cosa non mi crea problemi.
Un saluto, e grazie ad entrambe.
Remigio

 ...
Siccome usi un evento diverso dell'articolo e controlli
non associati devi togliere le sezioni con OldValue
e Cancel. Prova cos�:
If Not IsNull(Dlookup("Cognome", "Utenti", _
  "Cognome = " & Chr$(34) & Me!Cognome & Chr$(34))) Then
  MsgBox Me!Cognome & " Gi� esiste.", vbOKOnly, "Duplicato!"
End If
Se funziona, puoi aggiungere il paragone degli altri campi
con AND ecc.


 
Ora va bene, ma ho da chiederti due cose:
- volendo fare il confronto su più campi, AND va messo come di seguito?
If Not IsNull(Dlookup("Cognome", "Utenti", _
   "Cognome = " & Chr$(34) & Me!Cognome & Chr$(34))) Then
   MsgBox Me!Cognome & " Già esiste.", vbOKOnly, "Duplicato!"
AND
If Not IsNull(Dlookup("NOME", "Utenti", _
   "NOME= " & Chr$(34) & Me!NOME& Chr$(34))) Then
   MsgBox Me!NOME& " Già esiste.", vbOKOnly, "Duplicato!"
End If
- siccome questo codice lo metto giusto prima del codice che esegue la query di accodamento, come riportato di seguito 
Private Sub inserisci_nuovo_utente_Click()
On Error GoTo Err_inserisci_nuovo_utente_Click
If Not IsNull(DLookup("Cognome", "Utenti", _
  "Cognome = " & Chr$(34) & Me!Cognome & Chr$(34))) Then
  MsgBox Me!Cognome & " Già esiste.", vbOKOnly, "Duplicato!"
End If
 
    Dim stDocName As String
 
    If IsNull(Me!Cognome) Then
    MsgBox "ATTENZIONE!!! Inserire prima il cognome o premere Chiudi per uscire."
    Exit Sub
    End If
 
    stDocName = "q_nuovo_utente"
    DoCmd.OpenQuery stDocName, acNormal, acEdit
    DoCmd.Close
    DoCmd.OpenForm "Utenti1"
 
Exit_inserisci_nuovo_utente_Click:
    Exit Sub
Err_inserisci_nuovo_utente_Click:
    MsgBox Err.Description
    Resume Exit_inserisci_nuovo_utente_Click
 
End Sub
nel caso il cognome e il nome esistono già come faccio a saltare il resto del codice in modo da non eseguire la query?
Grazie per l'aiuto prezioso.
Remigio

 resto del codice in modo da non eseguire la query?
Aggiungi che vuoi andare via:
If Not IsNull(Dlookup("Cognome", "Utenti", _
   "Cognome = " & Chr$(34) & Me!Cognome & Chr$(34) & _
   " AND Nome= " & Chr$(34) & Me!Nome & Chr$(34))) Then
   MsgBox Me!Cognome & " Gi� esiste.", vbOKOnly, "Duplicato!"
   Exit Sub
End If
BTW: Nel tuo interfaccia google prova di impostare il regolare
"Re:" come segno di risposta invece del "R:".
Cos� che il filo non viene sempre strappato.


 o cambia la stringa?
 Vale lo stesso come per SQL:
 
http://www.donkarl.com/it?FAQ6.8
