Newsgroup: it.comp.appl.access
Titolo: record duplicati e indicizzazione

Ho il seguente problema e vorrei che qualcuno miautasse a risolverlo.
Inserisco dei valori in una tabella con una maschera
Per evitare di inserire dei valori duplicati ho definito il campo della
tabella come indicizzato ma senza ammettere i valori duplicati.
Tutto funziona correttamente nel senso che effettivamente i valori nella
tabella non vengono duplicati
Il mio problema è il seguente
Come faccio a visualizzare un messaggio di errore (es: valore già esistente)
nel momento in cui premo sul pulsante di chiusura della maschera
d'inserimento?
Non sono riuscito a trovare nessuna propietà vb che mi descrivesse il modo
Grazie

 ha scritto nel messaggio
news:li_j8.14935$1S3.4...@twister1.libero.it...

Intendi dire che vuoi sostituire il messaggio di errore che ti fa vedere
Access di suo? E' quello del tipo "L'apporto delle modifiche non è riuscito
perchè si è cercato di duplicare i valori nell'indice..."
Giorgio

 ha scritto nel messaggio
news:li_j8.14935$1S3.4...@twister1.libero.it...

A fronte dell'evento "Prima di aggiornare" del controllo associato al campo
che non deve avere duplicati, genera del codice VBA che, ad esempio con una
funzione DLookUp o DCount, vai a verificare se il valore digitato nel
controllo già esiste nella tabella; nel caso di esito positivo invia il
messaggio che preferisci all'operatore e riposizionati sul controllo per
permettere una nuova digitazione.
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------


wrote:

sull'evento del pulsante fai un salvataggio del record
intercetti l'errore generato e fai un messaggio con msgbox
Saluti.
Emanuele.

Veramente acces non mi fa vedere alcun messagio si limita a non inserire il
dato immesso nella casella di testo nella tabella ad essa collegata.


Facile a dirsi.
Ehm come dire sono molto allepriem armi con Acces. Potresti spiegarmelo in
termini un pò meno fantascientifici ? :-)


Come faccio ad intercettare l'errore generato?



In questo NG è regola che si risponde dopo e non prima dei messaggi
precedenti.
Beh, non è proprio fantascenza: eventualmente un po' di fantasia e cercare
sull'help DLookup e/o DCount. ;-)
Se la tabella origine record della tua maschera si chiama Tabella1.
Se il campo di Tabella1 che non ammette duplicati si chiama Pippo ed è di
tipo testo.
Se il controllo della maschera associato a tale campo si chiama anche lui
Pippo.
A fronte dell'evento "Prima di aggiornare" del controllo Pippo genera il
seguennte codice VBA:
Private Sub Pippo_BeforeUpdate(Cancel As Integer)
If DCount("*", "Tabella1", "Pippo=" & Chr$(34) & Me!Pippo & Chr$(34)) <> 0
Then
MsgBox "Il valore " & Me!Pippo & " già esiste in tabella"
Cancel = True
End If
End Sub
Se incece il campo Pippo è numerico, sostituisci
If DCount("*", "Tabella1", "Pippo=" & Chr$(34) & Me!Pippo & Chr$(34)) <> 0
Then
con
If DCount("*", "Tabella1", "Pippo=" & Me!Pippo) <> 0 Then
Se usi questa soluzione non è affatto necessario necessario dichiarare il
campo Pippo indicizzato senza ammettere duplicati.




on error goto <nomeetichetta>
Saluti.
Emanuele.

 campo Pippo indicizzato senza ammettere duplicati.
