Newsgroup: it.comp.appl.access
Titolo: non inserire duplicati in Form

salve,
come posso fare a non inserire duplicati in una Form di inserimento dati 
anagrafici,
prendendo come controllo quello del codice fiscale...
grazie 

 prendendo come controllo quello del codice fiscale...
Dipende un po' dalla strategia che hai utilizzato.
Comunque, in linea di principio, potresti utilizzare l'evento Form_BeforeInsert 
nel cui corpo testare l'univocità del campo che ti interessa (in questo caso 
sembra essere il codice fiscale).
--
PBsoft di Gabriele Bertolucci
www.pbsoft.it
skype:pbsoftsolution

 sembra essere il codice fiscale).
BeforeUpdate.
BeforeInsert si verifica appena inizi a digitare i dati nel nuovo
record, quindi non hai  ancora inserito il CF.
Credo.
cia'
Max

 record, quindi non hai  ancora inserito il CF.
Hai ragione, l'evento corretto è Form_BeforeUpdate, combinato magari ad un 
test della proprietà Form.NewRecord.


 dati anagrafici, prendendo come controllo quello del codice fiscale...
Evitare duplicati
www.donkarl.com/it/?FAQ4.25
-- 
HTH
Karl
*********
Access FAQ: 
www.donkarl.com/it

 ha scritto nel messaggio 
news:875ea355235398...@news.tin.it...

Io ho risolto così:
ho inserito come primo controllo una casella combinata che riporta l'elenco 
di tutti i record inseriti fino a quel momento e in questa man mano che 
digito i caratteri mi viene composto il cognome di una persona che è in 
elenco; se ciò avviene allora tale nominativo esiste già altrimenti devo 
inserire un nuovo record.
Inoltre l'autocomposizione della casella combinata ti consente di fare 
questo senza molta fatica. Poi sei tu che puoi aggiungere delle "bellurie" a 
tale meccanismo come: unificare le due colonne cognome e nome, metterli in 
ordine alfabetico, far cancellare il nominativo cercato dopo averlo trovato, 
inserire del codice nell'evento Su non in elenco e così seguitando.
Non ho più doppioni!
Ciao
NSantini 

 
www.donkarl.com/it/?FAQ4.25
-------------
grazie a tutti... oltre a provare la funzione evento corretto è 
Form_BeforeUpdate, combinato magari ad un
test della proprietà Form.NewRecord. vedro la Faq sul sito comune...
grazie...
Pino

 
www.donkarl.com/it/?FAQ4.25
---------------
secondo voi andrebbe bene questo codice per evitare i duplicati in 
codice fiscale
Private Sub txtCodiceFiscale_BeforeUpdate(Cancel As Integer)
Dim x
If DCount("*", "Anagrafe", "TxTCodiceFiscale= '" _
& Me!TxTCodiceFiscale & "'") <> 0 Then
x = MsgBox("Il tizio " & Me!Cerca1 & _
" è già in archivio!", _
vbCritical + vbOKOnly, "Attenzione")
Cancel = True
End If
End Sub
----------------
grazie 

 End Sub
A cosa ti serve la variabile x, se poi gli assegni il risultato della funzione 
MsgBox e non ci fai niente?
Inoltre, per essere precisi, il test da fare sul DCount dovrebbe essere
If Dcount(...) > 0 Then


 ha scritto nel messaggio

-------------
scusa Gabriele... potresti inserire quanto sopra direttamente nel codice 
ancora + sopra...
così lo provo...
Ciao 

 Ciao
Sgravo il compito a Gabriele
Private Sub txtCodiceFiscale_BeforeUpdate(Cancel As Integer)
If DCount("*", "Anagrafe", "TxTCodiceFiscale= '" _
 & Me!TxTCodiceFiscale & "'") > 0 Then
MsgBox("Il tizio " & Me!Cerca1 & _
 " è già in archivio!", _
 vbCritical + vbOKOnly, "Attenzione")
 Cancel = True
 End If
 End Sub
 
-- 
-- 
MAssimiliano Amendola
www.accessgroup.it
Cisa - Conferenza Italiana Sviluppatori Access
Segrate (MI), 7-8 giugno 2007

> Sgravo il compito a Gabriele
Eh eh...oggi ho trovato chi mi passa i compiti gią fatti :-)


 Eh eh...oggi ho trovato chi mi passa i compiti già fatti :-)
---------
beh... in questo periodo di esami la cosa sarebbe illecita.. va beh... 
per questa volta passi :-)))
ritornando a tema.. ho inserito il codice ma il risultato non 
cambia...nel senso che arrivo sempre alla fine dell'inserimento e poi 
non mi esce una textBox, ma una finestra con scritto..:
"L'apporto modifiche non è riuscito perchè si è cercato di duplicare i 
valori dell'indice, nella chiave primaria o nella relazione.. modificare 
i dati... etc. etc...
Private Sub txtCodiceFiscale_BeforeUpdate(Cancel As Integer)
If DCount("*", "Anagrafe", "TxTCodiceFiscale= '" _
 & Me!TxTCodiceFiscale & "'") > 0 Then
MsgBox("Il tizio " & Me!Cerca1 & _
 " è già in archivio!", _
 vbCritical + vbOKOnly, "Attenzione")
 Cancel = True
 End If
 End Sub
------------------------------------------------------------------------------------------
Private Sub txtCodiceFiscale_BeforeUpdate(Cancel As Integer)
Dim x
If DCount("*", "Anagrafe", "TxTCodiceFiscale= '" _
& Me!txtCodiceFiscale & "'") <> 0 Then
x = MsgBox("Il tizio " & Me!Cerca1 & _



Adesso hai l'errore subito intercettalo e gestiscilo
on erroro goto err 'da mettere all'inizio
err:
select case err.number
case 3022
cancel = true
case else
msgbox err.number & " " & err.description


 modificare i dati... etc. etc...
Adesso hai l'errore subito intercettalo e gestiscilo
on erroro goto err 'da mettere all'inizio
err:
select case err.number
case 3022
cancel = true
case else
msgbox err.number & " " & err.description
-------------
ok... grazie Ma.. tutto Ok ora..
Xiao...