Newsgroup: it.comp.appl.access
Titolo: Controllare valori presenti in una casella di riepilogo

Salva a tutti
sono un paio di giorni che sbatto la testa contro un problema che
dall'alto della mia ignoranza mi sembra inrisolvibile: ho bisogno di
controllare se un certo valore è gia presente in una casella di
riepilogo.
Mi spiego meglio:
io ho 3 tabelle TAB_Modelli, TAB_Misure e TAB_Componenti in modelli i
vari tipi di modelli di macchine che posso avere, in Misure le varie
Misure che le macchine lavorano e in Componenti i Componenti che
servono per assemblare la macchina.
Modelli è una tabella con solo 2 campi ID_Modelli e Modelli
Misure è un po piu ricca con ID_Misure, ID_Modelli (per poter
associare Modelli e Misure) e Misure
Componenti è la tabella piu complicata con varie colonne
ID_Componente, ID_Misure, Componente e Quantit
I modelli sono unici:
A
B
C
Le misure si ripetono:
il Modello A c'è nelle Misure 1, 2, 3
il Modello B c'è nelle Misure 3, 4, 5
il Modello C c'è nelle Misure 4, 5, 6
Anche i componenti si ripetono
e cosi via
Nel Modello A Misura 1 ci sono i Componenti; A B C D
Nel Modello A Misura 2 ci sono i Componenti; D E F G
Nel Modello A Misura 3 ci sono i Componenti; A B F G
e cosi via
Fin qui tutto bene, il problema nasce dalla maschera in cui dovrei
poter aggiungere nuove taglie e modelli, ho creato una maschera con 3
caselle di riepilogo:
CAS_Modelli (che visualizza tutti i Modelli)
CAS_Misure (che visualizza le misure filtrandole in base alla
selezione in Modelli)
CAS_Componenti (che visualizza i componenti della macchina filtrandoli
in base alla selezione in misure)
poi ho creato 2 "gruppi di modifica" sotto a CAS_Modelli e CAS_Misure
in ognuno di questi gruppi ho comprenmdono una casella di testo in cui
inserire il nuovo valore un pulsante per aggiungere il valore della
casella ditesto alla lista e l'altro per toglierlo (per facilitare il
compito nell'evento click di ogni casella ho inserito il comando Me!
casella_modifica.DefaultValue e un requery cosicche ogni volta che si
seleziona un modello o una misura automaticamente il valore venga
scritto nella casella di modifica)
nell'evento click che aggiunge il valore c'è:
Private Sub PULS_Aggiunge_Click()
DoCmd.RunSQL "insert into TAB_Modelli(Modelli) VALUES ('" &
valore_casella_modifica & "')"
DoCmd.Requery "CAS_Modelli"
End Sub
e nell'evento click che toglie il valore c'è:
Private Sub PULS_Toglie_Click()
If VAR_Misure.ListCount = 0 Then
DoCmd.RunSQL "delete from TAB_Modelli where ID_Modelli = " &
valore_casella_modifica & ""
DoCmd.Requery "CAS_Modelli"
Else
MsgBox "Errore Non Puoi eliminare Modelli con misure", vbCritical,
"Errore"
End If
End Sub
a questo punto nascono i problemi della serie:
Come posso impedire che vengano aggiunti dei doppioni?
Per la Tabella Modelli ho semplicemente impostato il campo Modelli com
indicizzato che non permetta duplicati e il problema è risolto ma come
posso fare per le misure? dove sia il campo modelli che misure possono
avere dei duplicati.
Scusate la lunghezza ma volevo essere sicuro di spiegarmi per bene
Jaba.

 avere dei duplicati.
Fai esattamente la stessa cosa, un indice puo' contenere piu' campi...
Apri la tabella in struttura, fai visualizza->indici, inserisci un
nome a piacere per l'indice e specifichi che deve essere univoco, poi
nell'elenco campi inserisci, uno sotto l'altro, i campi da indicizzare
(il nome dell'indice deve apparire solo in corrispondenza del primo
campo).
cia'
Max


il mio problema è che nella stessa tabella le misure si ripetono
perchè la stessa misura puo esse lavorata da varie macchine è per
questo che non posso indicizzare non duplicate le misure.
Io voglio impedire che si possano aggiungere misure doppie per un
modello di macchina.

 modello di macchina
Appunto. Indicizzi >insieme< "macchina" e "misura". Cosi' puoi
inserire quanti duplicati vuoi di "misura" e di "macchina", MA ogni
coppia Macchina+Misura puo' apparire una volta sola!
Occhio, non devi impostare l'indice sulla proprieta' del campo, ma
devi proprio creare un indice con la procedura che ti ho scritto.
Oppure, se vuoi giocare al DBAdmin, con SQL:
CREATE UNIQUE INDEX NomeIndice ON Tab_Misure (ID_Misure, ID_Modelli)
cia'
Max
(Ovviamente ripetibile con un numero grande a piacere di campi)