Newsgroup: it.comp.appl.access
Titolo: Relazione fra più tabelle

Sto modificando un vecchio DB, in quanto ho la necessità integrare i dati
registrati con nuovi dati.
Il precedente DB era costitutito da due tabelle: nella tblA vi era un ID
contatore relaziona ad un ID numerico della tblB; la relazione è di tipo
UNO - a - MOLTi, in quanto ad un record di A potevano andare associati più
record in B.
Una query apposita poi mi visualizzava correttamente i record in una
struttura maschera/sottomaschera.
Adesso ho necessità di creare una terza tabella, in cui associare ulteriori
dati: in pratica, ad ogni record di A adesso dovranno continuare a
corrispondere altri record di B ed in più altri record di C.
Ho necessità di utilizzare due tabelle separate per i record correlati, in
quanto si può verificare che un record di A abbia correlati più record di B
e nessuno di C, o viceversa. Anche in questo caso avevo provato a fare una
relazione UNO- a.- MOLTI tra tblA e tblC; il tutto che fa capo ad una
struttura maschera/sottomaschera/sottomaschera.
Solo che non riesco a visualizzare correttamente i record adesso. In
particolare, inoltre, mi si è anche verificato che se non inserisco dati
nella tblB non mi viene visualizzato più nulla, mentre inserendo anche un
solo record in tblB mi vengono visualizzati i dati, ma solo dalla relazione
tblA-tblB
Sto continuando a fare prove e controprove, ma sembra che non riesco a
risolvere.
Quasi sicuramente sarà una sciocchezza, ma non riesco a trovarla.
Sbaglio qualcosa nela progettazione della relazione o non so cosa altro?
Qualcuno mi sa dare qualche suggerimento??
Grazie
Andrea

M. Rick ha detto: in data 14/02/2006 15.29:

come hai strutturato le sottomaschere?
hai messo la sottomaschera C inserita nella sottomaschera B? o hai messo 
nella maschera A le due sottomaschere (separate tra loro) ??
la struttura sembra essere ok, penso sia solo un problema di 
maschere/sottomaschere
ciao
Nick

 ha scritto nel messaggio 
news:_OlIf.93648$eD5.1...@twister2.libero.it...

naturalmente la visualizzazione la fai da maschera principal e due 
sottomaschere ben collegate?
hai settato adeguatamente le relazioni tra campo principale  e campi 
collegati ...
i campi sono dello stesso tipo ....
Ivan 

i campi sono dello stesso tipo ....
Allora, nella tblA c'è un IDSoggetto di tipo contatore (impostato a chiave
primaria), mentre nelle due tblB e tblC ci sono due IDSoggetto di tipo
numerico, sui quali ho fatto la relazione (con integrità refereziale). Per
essere più preciso dovrei rimandare ai prossimi gionri, quando torno in
ufficio e magari controllo meglio.
Cmq, a prima vista, sembrerebbe che tutto funzioni a dovere, solo che se non
inserisco almeno un campo in ognuna delle due tabelle (B e C), poi il report
che mi visualizza i dati estrapolati mi risulta in bianco.
Invece a volte ho necessità di lasciare in bianco i campi di una delle due
tabelle B o C.
Andrea

 
ma allora il problema è sul report, non sulla maschera... nonavevo capito :)
e il report come è costruito?
hai inserito i collegamenti master->secondario giusti?
teoricamente dovrebbe stampare il record A e lasciare in bianco i 
sottoreport B e C
...dubbio.. nel report usi i sottoreport o colleghi tutto tramite una 
query e quidni hai 1 sola origine dati?
se è così allora devi cambiare il tipo di join che non sarà un INNER ma 
un LEFT (nel senso di tutti i record di A e solo i record di B 
collegati, idem per C)
...facci sapere
Ciao
Nick

 ha scritto nel messaggio 
news:2SGIf.110$S6....@twister2.libero.it...

scusa la precisazione, ogni sottomschera è un Oggetto, e come tale ha 
pochissime proprietà tra le quali ci sono i campi collegati. Campo master o 
principale nella maschera principale... che pilota il campo collegato nelle 
varie sottomaschere. Normalmente se utilizzi l'autocomposizione, Access fà 
le cose per benino, ma se trascini o crei una sottomaschera che aveva altri 
settaggi, potresti avere dei problemi.
Inoltre è importante anche la rete di relazioni che hai stabilito tra le 
tabelle, potrebbe fare  a pugni con gli scopi della maschera. Il fatto che 
tu non veda nulla se non inserisci almeno un  record correlato, dovrebbe 
dipendere proprio dalle relazioni e da qualche applicazione di integrità 
referenziale. Controlla ...
-- 
... spero di esserti stato d'aiuto, facci sapere
       \|/\|/\|/
       (@ @)
---o00-(_)-00o----- Ivan

collegati, idem per C)
Infatti cambiando il tipo di JOIN a quanto pare funziona tutto, cioè, se
anche lascio in bianco uno dei campi di una delle tabelle correlate, il
report funziona (a proposito, non uso sottoreport, uso una query per
raggrupare i dati e genero il report su questa).
Adesso, in verità, il problema che mi si è presentato (un altro....) è che
quando genero uno dei report....ok un attimo di spiegazioni prima.
tblA contiene i dati principali, mentre tblB e tblC contengono dati
secondari.
Con la stessa query genero due report, uno che mi riepiloga i dati tblA e
tblB collegati, e uno che riepiloga i dati tblA e tblC collegati.
Il primo report (cioè A+B) funziona bene (del resto è quello d'origine,
quando creai il DB); il nuovo report (cioè A+C), e qui mi riallaccio al
problema di qualche riga fa, viene generato con le informazioni giuste ma le
ripete.
Mi spiego. Per effettuare un test, in questa tblC ho inserito alcuni record
(3 per l'esattezza), collegandoli così ad un qualunque record di tblA che ho
scelto come cavia. Poi ho generato il report, e succede che mi ripete
ciclicamente quei record. Come base avevo usato la struttura del report già
presente (i dati principali sono gli stessi, variano solo quelli dele
tabelle collegate, ed il layout è lo stesso), facendo ovviamente i dovuti
combiamenti per le origini dati.
Alla fine mi ritrovo che i dati tblC (nel report) mi vengono ripetuti 2
volte. Non riesco a capire perchè
Andrea

volte. Non riesco a capire perchè
Ho trovato il problema: per ogni record presente in tblB, mi vengono
riportati i record di tblC.
In sostanza, se in tblC ho 3 record collegati a tblA e in tblB 2record
collegati a tblA, allora il report mi porta un totale di 6 voci, cioè mi
ripete i record di C per ogni record contenuto in B......
Come lo risolvo? Avevo pensato a due query di riepilogo separate (cioè una
che raggruppa dati da A e B, e una che li raggruppa da A e C). Ma
funzionerebbe??
Andrea