Newsgroup: it.comp.appl.access
Titolo: dati unici se.....

ho una tabella in cui vi � un campo "anno" e un campo "N_targa"
nella maschera di gestione, vorrei che nel campo N_targa non si possa
aggiungere un valore gi� esistente riferito allo stesso anno
es.
anno 2009   targa  mi1234d      ok
anno 2008   targa  mi1234d      ok
anno 2008   targa  mi1234d      NO! valore gi� esistente!
come posso fare?
grazie
l
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 l
sluzione 1:
puoi usare la funzione dcount
la butto l� ma devi scrivertela meglio tu
dcount("[id]";"[tabella_tua]";"[anno]=[campo_anno] and [targa]=" &
[campo_targa])
qui ti restituisce il numero di inserimenti fatti per anno e targa
soluzione 2:
metti una chiava univoca per i 2 campi anno e targa
soluzione 3:
fai una sql che ti restituisce i valori gi� inseriti per i campi anno e
targa inseriti (questo � simile a dcount anche se fatto in modo diverso)
ciao


 anno 2008   targa  mi1234d      NO! valore gi� esistente!
 Evitare duplicati
 
www.donkarl.com/it?FAQ4.25
Siccome hai due campi da controllare con la variante 1
dell'articolo devi creare un indice multicampo. La procedura
dipende dalla versione di Access che non hai rivelata:
fino a A03:
http://office.microsoft.com/it-it/access/HP051875621040.aspx
in A07:
http://office.microsoft.com/it-it/access/HA102103471040.aspx?pid=CH100645691040#2
Con la variante 2 devi aggiungere un secondo criterio nella
funzione DLookUp.
-- 
HTH
Karl
*********
Access FAQ: 
www.donkarl.com/it
 

  
www.donkarl.com/it?FAQ4.25



la variante 1  preferirei scartarla.
la variante 2 � fattibile, spero di azzeccare la sintassi e i comandi
giusti, anzi se mi dai la soluzione mi fai un ENORME piacere! :-))
preciso che:
uso access 2003
il campo N_targa � di tipo TESTO
il campo Anno � di tipo numerico e viene calcolato in automatico come
valore predefinito nella maschera di gestione con la sintassi
"Year(Date())"
l.
ps. come faccio in un campo data a memorizzare il 31 dicembre dell'anno in
corso?


 corso?
Dateserial(year(date),12,31)
Ciao.
-Marco-


 comunque la chiave primaria sui due campi.
Non bisogna essere la chiave primaria. Basta un indice mutlicampo e
univoco se la chiave primaria sia gi� diversa e certamente pi� adatta. ;-)
-- 
cu


 univoco se la chiave primaria sia gi� diversa e certamente pi� adatta. ;-)
Giusto.
Non so perch� ma, anche se luigi non lo ha scritto esplicitamente, un
presentimento mi dice che in quella tabella non ci sono altre chiavi
primarie :-)


 -Marco-
non mi convince la soluzione in quanto nella tabella "autorizzazioni" in
cui vi sono archiviati dati di pi� anni, possono esserci pi� record con lo
stesso anno e targhe differenti ma possono esserci anche pi� record con
targhe uguali ma con anno differenti, quindi non credo di poter mettere
l'unicit� sui singoli campi, o dalla mia ignoranza, sbaglio?
quindi mi starebbe bene anche un messaggio di avertimento quando inserisco
una nuova targa, che per quell'anno esiste gi� quella targa.
l.
ps � possibile anche un'altra ipotesi: non ho capito niente dei vostri
consigli :-)


 sbaglio?
S�.
Se procedi come descritto, l'univocit� si rifersce alla combinazione
di tutti e due campi.
-- 
HTH


 Peccato come spiegi Marco.




come faccio a fare un indice multicampo? 
l.


  
www.donkarl.com/it?FAQ4.25



la variante 1 l'ho appena provata, ma non funziona! 
ho seguito i passi delle istruzioni della microsoft per a03 ma niente!
mi avete confuso le idee sappiatelo! :-)))))))) non ci capisco pi� nulla.
l.


 -Marco-
l'ho provato come valore predefinito sulla tabella - niente!
l'ho provato come valore predefinito nel controllo campo della maschera di
controllo - niente!
l'ho provato nell'evento prima di aggiornare del controllo campo data1
sulla tabella - niente!  e mi da errore "="
....dove devo infilarlo questo codice?
l.


 ....dove devo infilarlo questo codice?
in una txtbox i posti dove metterlo sono due :<))
p.e. origine controllo oppure valore predefinito.....prova con:
=DateSerial(Year(Date());12;31)
ciao Luigi
Daniele

 Daniele
Grazie daniele!   funziona alla grande!  maledetta sintassi!
l.
ps. mi puoi aiutare anche con l'altro problema dei valori uguali dei 2
campi citati nel presente tread?  
io ci provo :-)))


 ha scritto nel messaggio 
news:hhvp4b$u0l$1...@news.newsland.it...

Bravo!! :D
prova anche a rispondere alle domande di Karl e a seguire i suoi consigli...
ciao
Daniele 

 >> [cut]


Traduco: devi usare una chiave primaria (o indice univoco) multicampo, su
tutti e due i cmpi contemporaneamente, non su uno solo alla volta.
In Struttura tabella selezioni i due campi e premi il tastino "chiave
primaria", il simboletto di chiave comparir� vicino ad entrambi i campi,
poi salva la tabella. Se ti d� un errore quando la salvi vuol dire che
nella tabella c'� gi� una coppia anno/targa ripetuta.
Poi prova ad inserire a mano nella tabella una combinazione anno/targa gi�
presente, vedrai che non te lo lascia fare.
Ciao.
-Marco-


 di tutti e due campi.
dopo vari tentativi sono riuscito a fare una prova con la variante 1,
ottimo per un database vuoto, ma per la modifica al mio db, non va bene in
quanto gi� contiene migliaia di record  e con situazioni  "doppione"
Quindi mi serve un'opzione da inserire sulla maschera di controllo e che
basta anche a mandarmi un messaggio di errore nel caso si verifichi di
nuovo la duplicazione di entrambi i campi.
Confesso che con il tuo suggerimento alla variante 2 e le mia cultura di
access non ci arrivo alla soluzione.
l.
