Newsgroup: it.comp.appl.access
Titolo: Doppioni

Come al solito i casini peggiori compaiono a fine lavoro... Ho finito
un db, ed ora mi trovo con la seguente problematica.
Ho una tabella, chiamata tbl_fo (relazionata con altre 12 tabelle) in
cui ho creato un campo ID di tipo contatore, in quanto non esisteva un
campo che non avrebbe di sicuro contenuto valori di tipo null.
In questa tabella ci sono 3 campi:
LOTTO: testuale
Data: MM/AA
N° di serie: Numerico
Con il vs aiuto, ero riuscita a risolvere la creazione automatica dei
numeri di serie tramite form (vedere il post con il titolo
da....a.....  del 24 luglio 2007)
la maschera di cui sopra, di cui allego il codice, è strutturata in
questo modo.
LOTTO:
DA:
A:
DATA:
-----------------------------------------------------------------------------------------------------------------------------------------
Private Sub aggiungi_in_tabella_Click()
Dim nContDa As Long
Dim nContA As Long
Dim ncont
Dim cod As String
nContDa = Me.casellaDA
nContA = Me.casellaA
cod = Me.casellalotto
Data = Me.caselladata
DoCmd.SetWarnings False
For ncont = nContDa To nContA
DoCmd.RunSQL "INSERT INTO tbl_fo(Nserie, lotto,  dataLotto)values " &
"('" & ncont & "', '" & cod & "','" & Data & "')"
Next
DoCmd.SetWarnings True
End Sub
-----------------------------------------------------------------------------------------------------------------------------------------
Ora scopro che non deve essere possibile creare delle combinazioni
specifiche.
Ovvero devo permettere solo le seguenti soluzioni:
1)stesso LOTTO,  stessa DATA, ma con un RANGE (DA..A..) diverso
2)stesso LOTTO, ma DATA e RANGE diversi
3)stesso LOTTO, stesso RANGE ma data diversa
4)stessa DATA, ma LOTTO e RANGE diversi
5)LOTTO, DATA, e RANGE diversi
Che faccio?
Ora, a DB finito, mi trovo veramente spiazzata. Non posso cambiare
chiave primaria e metterla multipla (credo) perchè la tabella è già
collegata tramite ID ad altre tabelle, forms, queries, reports...Avete
un'idea???? PLEAZE....
La combinazione più importante, da quel che ho capito, è che NON posso
caricare 2 volte lo stesso LOTTO, la stessa DATA, e lo stesso RANGE.
Mi basterebbe questa soluzione per offrire una pizza con birra al
primo di voi che mi risponde e che passa per torino :)
Grazie x l'attenzione.
Mony

 caricare 2 volte lo stesso LOTTO, la stessa DATA, e lo stesso RANGE.
Ok ma i range come li identifichi? Se per una combinazione  Lotto <->
Data possono essere più di uno, le cose si complicano un tantino.
Altrimenti, forse potrebbero bastare quattro controlli aggiuntivi, un
po' di DlookUp(), e poco altro.
ciao,
Panathos

 po' di DlookUp(), e poco altro.
Facciamo che è un casino, quindi mi concentro sul fatto che , seguendo
il tuo esempio, se ho scritto
Firenze  02/09/2007  5
non può piu' comparire
potresti farmi un esmpio con questi "po' di dlookup() e poco altro?"
::::)))))
MoNica

Mony
-- 
Roberto
-----------------------------------------------
il Sito Comune di it.comp.appl.access
http://www.sitocomune.com
-----------------------------------------------

 potresti farmi un esmpio con questi "po' di dlookup() e poco altro?"
La funzione DlookUp restituisce un valore pescato in una tabella,
oppure in una query... in base ai criteri che gli dai. Nel tuo caso ad
es. se vuoi verificare che una ruota sia già uscita puoi usare
qualcosa tipo:
=DlookUp("ruota";"tabella_lotto";"[ruota]='" & me.ctl_lotto & "'")
dove "ruota" è il nome del campo dove stanno le varie città,
"tabella_lotto" è il nome della tabella che vai a leggere e che filtri
tramite la terza istruzione.
Teoricamente potresti usare quattro controlli con altrettante
dlookup() in modo da sapere subito, appena digitato nei controlli, se
i valori sono già presenti; ma devi studiare benino come relazionarli
fra loro.
Personalmente seguirei un metodo un po' differente: ad ogni controllo
da validare farei corrispondere una stringa che sia un "pezzo" di
filtro per una dlookup (oppure una select....); i quattro controlli
compilati comporrebbero quindi il "filtro" completo, contenuto in un
controllo soltanto.
Se vuoi ulteriori dettagli chiedi pure.
ciao,
Panathos