Newsgroup: it.comp.appl.access
Titolo: problemi con tabelle

Buongiorno a tutti, ho ancora bisogno del vostro aiuto per risolvere dei 
problemi in Access.
Io ho due tabelle:
1° Tabella:    [P/N]    [EDIZ]    [DESCR]    [TIPO LAV]
                    S100    A            COMPL.    M.
                    S100    B            COMPL.    M.
                    S101    A            ELEM.        L.
2° Tabella:     [P/N]    [EDIZ]    [DESCR]    [TIPO LAV]
                    S100    B                COMPL.    M.
                    S101    A                ELEM.        L.
Il mio problema è il seguente: i caricamenti dei P/N voglio continuarli a 
fare nella 1° Tabella.
Nella 2° Tabella vorrei che venissero elencati i soli Record con l'ultima 
edizione del [P/N] come nell'esempio.
Quando scatta di Edizione il [P/N] (da A a B etc , sempre caricato 
manualmente nella 1° Tabella) come nell'esempio vorrei che nella seconda 
Tabella comparisse solo l'ultima edizione. Mi piacerebbe che inserendo nella 
2° Tabella il [P/N] in automatico compilasse tutti gli altri campi della 2° 
Tabella prendendo quelli inseriti precedentemente nella 1° Tabella ma solo 
quello con l'ultima edizione ( o per lo meno nel campo [EDIZ] della 2° 
Tabella vorrei ci fosse una casella di riepilogo che elencasse tutte le 
[EDIZ] del [P/N] interessato ed io seleziono quella che voglio.
Vorrei che la 2° Tabella fosse una Tabella a tutti gli effetti e non una 
Query.
Un ultima cosa, la 2° Tabella a sua volta ha una sottomaschera legata sotto.
Vi prego aiutatemi. 

Vi prego aiutatemi.
Aiutami tu a capire ...

 Aiutami tu a capire ...
Riassumento tutto (tenendo conto dell'esempio proposto precedentemente:
La specifica è la seguente:
-Il caricamento di tutti i Record deve essere fatta nella Tabella 1 (perché 
devo tener conto di tutti i Record processati, siano o no superati da nuove 
revisioni)
-La tabella 2 oltre a contenere gli stassi Campi di Tabella 1, ne contiene 
altri 2, Tabella 2 è collegata ad altre 2 Tabelle mendiante questi ultimi 2 
campi con delle relazioni.
-Il mio requisito è semplicemente che in Tabella 2, gli unici campi che 
voglio inserire sono [P/N] e gli altri 2 campi collegati alle altre tabelle, 
mentre per tutti gli altri in comune con Tabella 1 che vengano aggiornati 
automaticamente con l'ultima edizione del [P/N] contenuto in Tabella 1. Hai 
ragione sono stato un po' pasticcione, ma adesso spero di essere stato più 
chiaro. 

chiaro. 
Allora, ri-riassumendo:
hai due tabelle con questa struttura
Tabella1:    [P/N]    [EDIZ]    [DESCR]    [TIPO LAV]
                   S100    A            COMPL.    M.
                   S100    B            COMPL.    M.
                   S101    A            ELEM.        L.
Tabella2:     [P/N]    [EDIZ]    [DESCR]    [TIPO LAV] [Campo1] [Campo2]
                    S100    B                COMPL.    M.
                    S101    A                ELEM.        L.
Ogni riga in Tabella2 contiene nei campi [P/N],[EDIZ],[DESCR],[TIPO LAV] i valori della riga in Tabella1 corrispondente
all'edizione più recente, qualunque cosa questo voglia dire (dove il valore del campo [EDIZ] è il più alto di tutti ?).
Sempre inTabella2 i campi [Campo1] e [Campo2] costituiscono ciascuno la foreign key per l'accesso ad ulteriori tabelle
che chiamerò Tabella21 e Tabella22.
Il problema non è di utilizzo di Access, ma di disegno della base di dati.
Infatti, come la teoria insegna, è inutile (oltre che pericoloso) portarsi dietro in Tabella2 i campi di Tabella1:
infatti cosa succede se devi cambiare il valore di [DESCR] ad una riga in Tabella1? Devi per forza andare a ricercare la
riga corrispondente in Tabella2 e cambiarla pure lì.
E, ancora peggio, se quell'articolo ha avuto decine di edizioni ? ci saranno decine di righe in Tabella1 da cercare per
aggiornare il valore di DESCR in modo che tutte le righe siano coerenti.
Quindi secondo me, prima di tutto devi ridisegnare la struttura delle tabelle.
Io suggerisco:
Tabella1
[P/N]    [DESCR]    [TIPO LAV]
S100    COMPL.     M.
S101    ELEM.        L.
dove [PN] è chiave primaria
Edizioni
[ID_EDIZ]	[P/N]	[EDIZ]
1		S100	A
2		S100	B
3		S101	A
dove [ID_Ediz] è chiave primaria (per es, un campo contatore)
Tabella2
[P/N]	[ID_EDIZ]	[Campo1]	[Campo2]
S100	2		
S101	3
dove [P/N]+[EDIZ] è chiave primaria.
In questo modo ogni tabella contiene solo i dati "di competenza" e non ci sono ridondanze.
I dati sono disaggregati nelle varie tabelle, ma tramite le maschere puoi presentarli all'utente così come gli servono.
Per la gestione, devi creare 3 maschere:
- una che ha come origine dati Tabella1, che chiamerò FrmTab1
dove, oltre ai controlli per l'editazione di [P/N],[DESCR] e [TIPO LAV], avrai anche la sottomaschera che ha come
oggetto origine FrmEdiz (vedi sotto) collegata tramite i campi [P/N] delle due tabelle
In questo modo in FrmTab1 potrai vedere nella sottomaschera, per ogni PN, l'elenco di tutte le sue edizioni 
- una che ha come origine dati Edizioni, che chiamerò FrmEdiz
definita come maschera continua (che presenta quindi un elenco di righe)
- una che ha come origine dati Tabella2, che chiamerò FrmTab2
qui il controllo associato al campo [P/N] (che chiamerò cboPN) sarà di tipo "casella combinata" definita con origine
dati "Tabella/query" e origine riga Tabella1
il controllo associato al campo [ID_EDIZ] sarà anch'esso di tipo "casella combinata", con tre colonne, colonna associata
1, origine dati "Tabella/query", origine riga la seguente istruzione SQL:
SELECT ID_EDIZ, PN, Ediz FROM Edizioni As TabEdiz WHERE Ediz=(SELECT Max(Ediz) AS MaxEdiz
FROM Edizioni WHERE Edizioni.PN=TabEdiz.PN
GROUP BY Edizioni.PN) AND PN=Forms!FrmTab2!cboPN
Questa casella combinata consente di selezionare per il PN correntemente visualizzato in FrmTab2, solo la sua edizione
più alta presente in Edizioni.
Buon divertimento !
Vincenzo Turturro
---------------------------------------------
il sito comune di it.comp.appl.access:
http://www.sitocomune.com/
---------------------------------------------
E quello di it.comp.as400
http://www.faq400.com/
---------------------------------------------

 ha scritto nel messaggio 
news:4583fc49$0$19093$4faf...@reader4.news.tin.it...



Prima di tutto alcuni consigli sul comportamento in questo NG:
- quando rispondi, scrivi dopo i messaggi precedenti
- non postare lo stesso messaggio piů volte a cosě breve distanza di tempo (19:44 e 20:09 del 18/12/06)
- leggi il post di Roberto "Come ci si dovrebbe comportare in un newsgroup, ovvero 'Istruzioni per l'uso'" del 01/12/06
ore 17:54
Ciň detto, non saprei bene cosa suggerirti se non provare a:
- compattare il file mdb che contiene il FE (form, query ...)
- da VBA 
(in access 2000) menů debug, compila
(in Access 97) menů debug, compila e salva tutti i moduli
- compattare il file mdb che contiene il BE (tabelle)
Se quanto sopra non dovesse avere alcun effetto, prova a creare un nuovo mdb ed importare al suo interno tutti gli
oggetti del mdb originale.
