Newsgroup: it.comp.appl.access
Titolo: controllare che i valori dei campi della stessa maschera siano diversi

Salve a tutti ho cercato nei post precedenti ma non sono stato capace
di trovare niente.
il quesito è semplice :
In una maschera con vari campi che scrive i dati in una tabella prima
di passare al record nuovo , devo controllare che i dati inseriti nei
vari campi non siano duplicati sullo stesso record :
RECORD1
data         10-10-10
campo1   pippo
campo2   pluto
campo3   paperino
va bene
RECORD2
data         11-10-10
campo1    pippo
campo2   paperino
campo3   pippo
NON VA BENE perchè nello stesso record ho inserito per due volte lo
stesso personaggio ( pippo ).
Come si può risolvere il problema ?

 ...
Come "nello stesso record" se prima scrivi di record 1 e 2?
Forse ti aiuta:
 Evitare duplicati
 
www.donkarl.com/it?FAQ4.25
-- 
Ciao
Karl
*********
Access FAQ:  
http://www.donkarl.com/it
 


Grazie Karl . ma al link segnalato non mi si apre niente.
Si ho indicato il RECORD1 come esempio che va tutto bene mentre il
RECORD 2 è il caso in cui ho due valori identici su due campi
diversi , cosa che vorrei non accadesse !!


in pratica non vuoi che sulla stessa maschera ci siano due campi uguali 
giusto?
quindi il metodo ideale sarebbe di controllare dopo la compilazione di 
ogni campo se il valore era già stato usato.
Una soluzione che mi viene in mente è quello di creare un array di 
stringhe che vado a popolare dopo ogni campo...dopo ogni aggiornamento 
campo dovrei verificare se il valore è presente nell'array...se si 
blocco tutto altrimenti lo inserisco nell'array e procedo.
altra soluzione che mi viene in mente:
metto una etichetta  nascosta...ad ogni compilazione di un campo metto:
if instr(1, me.etichettanascosta,"-" & me.campo )>0 then
	msgbox "campo doppio"
else
	me.etichettanascosta.caption=etichettanascosta.caption & "-" & me.campo
endif
se nei tuoi campi credi possa finirci anche il "-" sostituisci con un 
altro simbolo il - del mio esempio
ciao
BFS

 ...
Incolla il link di sopra nel tuo browser.



credo che lui non voglia che ci siano due campi uguali nello stesso 
record..non in due record differenti
ciao
BFS

 record..non in due record differenti
Sì, ma durante il giorno non è stato tempo per leggere bene. ;-)
Un metodo sarebbe la seconda di  
www.donkarl.com/it?FAQ6.5
,
cioè usare la proprietà Tag dei controlli in un ciclo. p.e. nel Tag di
tutti controlli che interessano scrive "Pippo". Nel modulo della
maschera ci vuole una funzione:
Private Function fctDup() As Boolean
Dim ctl As Control
For Each ctl In Me.Controls
    If ctl.Tag = "Pippo" And ctl.Name <> 
Me.ActiveControl.Name
 Then
        If ctl.Value = Me.ActiveControl.Value Then
            MsgBox "Questo valore si trova già nel controllo: " & ctl.Name
            fctDub = True
        End If
    End If
Next ctl
End Function
e nell'evento "Prima di aggiornare" di tutti controlli coinvolti:
If fctDup Then Cancel = True



Grazie infinite a tutti , ma credo che la mia richiesta l'abbia
scritta in modo poco chiaro :
lìdea di usare nel tag l'espressione Pippo è buona , ma non devo
controllare che in campi diversi non sia ripetuto sempre lo stesso
nome ( in qs. caso Pippo ) , ma i campi in effetti vengono popolati
con nomi diversi , fino a 20 , 25 nomi diversi , mi occorre in effetti
che nessuno di questi nomi siano uguali.
Per spiegare meglio : nella pratica accade che in una certa data in un
determinato turno non deve mai comparire la stessa persona due volte.
Il controllo dovrebbe indicarmi quando nella stessa data ho inserite
per due volte la stessa persona ( tral le 20-25 persone che posso
mettere in programma ) .
Spero di essere stato più chiaro.
Attendo vs. gentili suggerimenti.

 Attendo vs. gentili suggerimenti.
ciao, se ho ben capito hai una maschera con una casella data e 20-25 
caselle su cui scrivere dei nomi giusto?
e non vuoi che lo stesso nome sia scritto piů di una volta, giusto?
se č cosi sia la soluzione di karl che la mia vanno bene...entrambe 
verificano dopo la compilazione di una textbox che il valore immesso non 
sia giŕ stato inserito.
altrimenti non ti sei ancora spiegato bene...magari fai un upload della 
schermata su qualche sito di hosting immagini
ciao
BFS

 BFS
Grazie , ma probabilmente non avvo capito bene io le soluzioni da voi
proposte.
Ho provato con la tua:
altra soluzione che mi viene in mente:
metto una etichetta  nascosta...ad ogni compilazione di un campo
metto:
if instr(1, me.etichettanascosta,"-" & me.campo )>0 then
        msgbox "campo doppio"
else
        me.etichettanascosta.caption=etichettanascosta.caption & "-" &
me.campo
endif
 e ho inserito il tuo codice sull'evento DOPO AGGIORNAMENTO dei uno
dei 20-25 campi della maschera.
Purtroppo dopo aver aggiornato il campo si apre l'editor VBA e mi
genera un errore sulla seguente riga :
else
        me.etichettanascosta.caption=etichettanascosta.caption & "-" &
me.campo
endif
mi pare che non digerisca : = etichettanascosta.caption , infatti
anche durante la digitazione del codice nell'editor VBA mi dice subito
che c'è un errore di compilazione.
Mi puoi aiutare , non so cosa fare.

 Mi puoi aiutare , non so cosa fare.
se la tua mail č valida...ti ho mandato un db di esempio
ciao
BFS