Newsgroup: it.comp.appl.access
Titolo: Inconveniente con relazione uno-a-molti...

Ho normalizzato e strutturato un database che è costituito,schematicamente,
in questo modo (anche se in realtà contiene molte altre cose, ma il mio
problema riguarda questo tipo di struttura, relazionata uno-a-molti con
integrità referenziale):
tblNominativi; tblDocumento1; tblDocumento2; tblDocumento3
Le maschere di inserimento (in questo esempio 3) sono del tipo maschera /
sottomaschera: più copie delle maschere principali (basate su tblNominativi)
hanno al loro interno le sottomaschere basate su tblDocumentoX.
Il mio scopo era quello di inserire il Sig. Rossi (relazione uno), il quale
aveva bisogno del Documento1 (relazione a molti). Il primo inserimento
funziona perfettamente e stampo il documento. Il giorno dopo, il sig. Rossi
torna, e chiede il Documento2 (relazione a molti, sempre). Su ogni maschera
è presente una combobox che mi ricerca un valore tra i record già inseriti.
Tramite questa cbx, vedo che il sig. Rossi è già presente in tblNominativi,
per cui richiamo il suo record nel form di inserimento per il Documento2.
Giustamente, mi vengono riempiti i dati anagrafici, mentre mi restano in
bianco quelli specifici della sottomaschera. Quando riempio la sottomaschera
e mando in stampa il documento, mi dice che non è possibile proseguire
perchè bisogna prima inserire il nominativo (integrità referenziale), il
quale però è già visualizzato nel form padre.
Stesso problema mi si pone se richiamo il sig. Rossi dalla maschera del
Documento1 (cioè la prima inserita).
In pratica, mi si comporta come se fosse permesso un solo inserimento per
volta, cioè dovrei ogni volta "creare" il record del sig. Rossi, e a questo
punto non mi servirebbe a nulla l'aver instaurato la relazione con
l'integrità referenziale.
Come risolvo questo problema, cioè accodare i nuovi dati inseriti volta per
volta?
Per la stampa del documento, uso Stampa Unione in word, basata su query;
nelle tblDocumentoX c'è un campo Inserimento, con valore predefinito Now(),
in modo che Word, all'apertura dl file, visualizza direttamente l'ultimo
record inserito. Riguardo questo metodo, se io sovrascrivessi i dati già
presenti, il campo Inseriemento si aggiornarebbe automaticamente, quindi mi
risulterebbe come ultimo record inserito durante la stampa unione?
Grazie
Andrea

 volta?
Per la maschera principale usa una query. Nella casella combinata della
maschera  metti come origine riga una query con tutti i campi della tbl
Nominativi che ti servono, su "Dopo
aggiornamento" inserisci routine evento con il seguente codice:
Me.IDCliente = Me.TuaCasellaCombinata.Column(0)
Me.cognomecliente = Me.TuaCasellaCombinata.Column(1) e così via per tutti i
campi indicando la colonna in cui si trovano nella tua casella combinata.
Ovviamente dovrai indicare il numero di colonne nella proprietà della
casella combinata e la relativa larghezza per visualizzarle
Spero di aver capito il tuo problema...altrimenti ...:-((
saluti Daniele

Spero di aver capito il tuo problema...altrimenti ...:-((
Mi rendo conto che è complicato spiegare per iscritto qualcosa di vasto come
access, ma provo a fare come mi
hai suggerito e vediamo se risolvo, altrimenti taglio la testa al toro, ciao
normalizzazione e rimetto tutto come era prima (ogni brava tabella coni suoi
nominativi), anche se si incasina un pò di più.
Ciao
Andrea

 hai suggerito e vediamo se risolvo, altrimenti
riposta il problema.... magari qualcuno più bravo ci darà dei suggerimenti.
saluti Daniele

campi master e poi su suggerimento
Fatto. Sembra che funzioni, speriamo bene.
Grazie mille
(PS scusa il ritardo nella risposta)