Poiché la gestione delle sottomaschere è prevista a due livelli, se Tabella1
è in relazione uno-a-molti con Tabella2 e Tabella2 è in relazione
uno-a-molti con Tabella3, non ti serve alcun codice VBA: crea Maschera1 che
ha come origine record Tabella1 e che contiene in un controllo sottomaschera
Sottomaschera1 che ha come origine record Tabella2; a sua volta
Sottomaschera1 deve contenere un controllo sottomaschera che contiene
Sottomaschera2 che ha come origine record Tabella3.
Tutto avverrà automaticamente a condizione che setterai adeguatamente le
proprietà "Collega campi secondari" e Collega campi master" dei due
controlli sottomaschera.
Roberto
ho fatto gia come da te indicatomi ma la cosa funziona solo fra la mashera1
e la sottomashera1 mentre nella sottomaschera2 ho dei problemi di
aggiornamento dei dati e di eliminazione dei record, succede che eliminando
un record non mi aggiorni la sottomashera2
saluti fabrizio
Nella relazione tra le tre tabelle:
1) hai applicato l'integrità referenziale?
2) hai abilitato l'opzione "Aggiorna campi correlati a catena" ?
3) hai abilitato l'opzione "Elimina record correlati a catena" ?
Roberto
Hai
attivato tutto come sopra
per farlo funzionare ho dovuto inserire nella sottomaschera1 "su corrente"
il segunte codice
On Error GoTo linea
If IsNull(Me![CAT SC 2]) = True Then
'Chiave primaria sottomashera1
Exit Sub
Else
Forms![Prodotti CAT SC 1]![Prodotti CAT SC 3].Form.Requery
'sottomashera2
End If
linea:
ora la cosa funziona ma si inchiada se elimino l'ultimo record dalla
sottomaschera1
se elimino un'altro che non sia l'ultimo non si inchioda
grazie per l'aiuto
fabrizio
Per caso alla chiave primaria di Tabella2 e/o Tabella3 hai dato un valore
predefinito ed hai dei campi calcolati in sottomaschera1 o sottomaschera2.
Che errore ti dà Access ?
Mi sono fatto un esempio e a me funziona tutto bene.
Roberto