Newsgroup: it.comp.appl.access
Titolo: sviluppo verticale

Ok, mi cospargo il capo di cenere, mi inginocchio sui ceci e, intonando un 
mea culpa, mi frusto la schiena.......
Dagli ultimi post ho capito di aver impostato male (o molto male) il db a 
cui sto lavorando da parecchio (che era nato per gestire ben poche cose ma 
che poi si è ampliato notevolmente).
Premetto che le mie conoscenze di access si basano sulla lettura di un 
paio di libri e niente più....a parte le frequentazioni del sitocomune e 
di questo newsgroup che mi hanno sicuramente aiutato molto.
Non ho francamente capito il concetto di sviluppo verticale......
Semplificando mi ripeto: attualmente ho creato una tabella per ogni tipo 
di prova che viene effettuata in laboratorio.
Ogni tabella ha un numero di campi fisso.
Ad esempio la tabella "allungamenti a rottura" ha:
1 un campo ID
2 un campo Codice (che identifica il materiale su cui viene fatta la 
prova)
3 un campo data 99/99/9999
4 dieci campi per l'inserimento dei valori (come previsto dalle normative 
5 longitudinali e 5 trasversali)
5 un campo note
La tabella "peso specifico" ha:
1 un campo ID
2 un campo Codice
3 un campo data
4 tre campi per l'inserimento dei valori
1 campo note
Ovviamente per l'inserimento dei dati ho creato due maschere diverse e per 
ogni tabella esiste una query che esegue dei calcoli (valori medi) e per 
ogni query un report diverso.
Le due tabelle sono collegate attraverso il campo Codice ad una tabella 
"anagrafica" in cui vado ad inserire: il tipo di materiale (es: PVC), il 
nome (es: PIPPO), lo spessore (es: 1,2) e la data di produzione (es: 
99/99/99) che messi assieme mi formano il Codice.
Domanda: devo creare una tabella unica?
Es: tabella "allungamenti/peso specifico" così composta
1 campo ID
2 campo Codice
3 campo data
4 dieci campi per i valori di allungamento
5 tre campi per i valori di peso specifico
6 un campo note
Mi fermo qui perchè voglio capire proprio come partire......
grazie di nuovo

Salto il Quoting....!
Il concetto avevo cercato di spiegartelo nel 3D originale, ma capisco
la
difficoltà di entrare nel merito.
Alla domanda che hai fatto verrebbe di risponderti di NO, ma la cosa va
inquadrata
dal punto di vista di NORMALIZZAZIONE(che devi assolutamente studiare)
e di
flessibilità.
Come ti ho premesso nel mio ambiente gestisco un DB simile per
tipologia
di dati.
Ho una Tabella chiamata Prove nella quale metto il NOME della prova.
Ho una Tabella chiamata Misure nella quale metto il NOME delle Misure
Ho una Tabella chiamata DettagliProve nella quale lego la singola prova
alle misure da prevedere per la stessa.
In questa Tabella ho anche un campo Valore di Riferimento che uso per
le comparazioni.
Come vedi fino ad ora non ho inserito nessun dato, ma ho solo
strutturato
il DB al fine di potermi gestire in modo flessibile qualsiasi tipo di
prova con
qualsiasi Misura...!
Ora la parte di immissione dati.
Per questa serve un'altra tabella dedicata alla registrazione della
prova, quindi
delle singole Misure con i relativi valori.
Come forse avrai capito è necessario appoggiarsi ad una struttura
TEMPORANEA
che abbia la formazione ricavata dalle tabelle di prima, e che preveda
un campo
di immissione del valore.
In pratica con una Query ricavi dalle tabelle di prima le misure(inteso
come nome della misura) da effettuare per quella prova, quindi compili
una Tabella Temporanea
con quanto ricavato dalla Query in questione.
La tabella Temporanea avrà anche un campo VALORE e se serve NOTE.
La Maschera d'immissione sarà basata sulla Tabella Temporanea e
terminata
l'immissione dovrai riversare il tutto nella tabella Definitiva.
Personalmente non uso la TEMP_TABLE ma lavoro in memoria con un
Recordset ADO, ma l'effetto è il medesimo.
L'utilità di questa struttura deriva dal fattop che ti evita di
scrivere nella tabella
definitiva Records che magari potresti non compilare, quindi puoi
validare meglio
l'immissione dati.
Ovviamente ti ho fatto un riassunto sintetico nella speranza ti possa
essere
di aiuto per meglio comprendere la struttura.
A quanto detto mancano chiaramente le interfacce utente per le
immissioni, la possibilità di ordinare le Misure in base ad un
criterio diverso da quello Random
che ovviamente si ottiene in questo modo...!
Tutte cose secondare in ogni caso, che non avrai difficoltà a vedere
una volta
fatta tua la logica.
@Alex

Ciao...grazie per la risposta
La prima tabella è ok penso che debba essere una cosa tipo (riferendomi 
agli esempi fatti in precedenza):
ID
Prova
e cioé:
ID / Prova
1 / allungamento a rottura
2 / peso specifico
3 / carico a rottura
4 / ecc ecc
Ma cosa intendi per tabella chiamata "misure"nella quale metti il nome 
delle misure?
Gli allungamenti a rottura sono delle "trazioni" fatte con uno strumento 
chiamato "dinamometro" (e se ne fanno 10 per ogni campione di materiale) 
quindi devo creare una tabella del tipo:
ID
Prova
Misura
e cioè:
ID /                 Prova                 / misura
1 / allungamento a rottura / trazione 1
2 / allungamento a rottura / trazione 2
3 / allungamento a rottura / trazione 3
4/ ecc ecc
? Probabilmente una volta capita questa tabella mi viene più chiara anche 
la terza
Grazie per la pazienza......ciao

La prima tabella potrebbe essere quella.
La 2° "Misure" riporta il nome delle misure che inserirai.
Nel mio caso ho:
1-Resistenza d'Isolamento
2-Indice di Polarizzazione(che forse hai anche tu)
3-Vibrazioni
4-Frequenza di risonanza
.......ecc...!
E' sostanzialmente l'elenco di cosa POSSO fare, nel tuo caso
avrai :
1-Trazione
2-Percussione(per la durezza non ricordo il nome)
3-rigidità dielettrica
ecc....!
Ora ti serve una tabella che assegna ad ogni tipologia di Test(quelli
della 1° Tabella)
le possibili misure che puoi effettuare.
Quindi avrai Tbl_Dett_Prove
  IdDettaglio (questa è opzionale)
  IdProva      (PrimaryKey)
  IdMisura    (Primary Key)
  ValoreRiferimento
A questo punto non hai ancora fatto nessuna struttura per registrare i
dati...!
Ora ti serve una tabella per registrare i Dati e la famosa Tabella
Temporanea.
Il concetto difficile è capire che per inserire i dati devi mostrare
all'utente
solo quelle Misure relative alla prova, quindi se devi eseguire una
prova di trazione
dovrai estrarre una Query dalla Tab_Dettaglio in Join con la Tabella
Misure(per avere
il Nome) e popolare la famosa Tabella Temporanea.
La Form basata sulla TempTable(io uso la visualizzazione a maschere
continue)
esporrà il Nome delle Misure ed affianco una TextBox vuota per
inserire il Valore.
Tieni presente che in questa fase se vuoi inserire una Misura non
prevista puoi farlo
benissimo, se vuoi eliminarne alcune perchè non sei riuscito a
completarle puoi farlo...!
Al termine io salvo nella Tabella Defnitiva solo i dati che hanno un
valore....!
Se devo aggiungere Tipologie di prove le aggiungo nella Tabella Prove,
sedevo aggungee
tipologie di Misure nuove le aggiungo nella Tabella Misure e modifico
le eventuali associazioni
PROVE---MISURE nella Tab_Dettagli.
Si potrebbe ottimizzare ulteriormente gestendo una situazione
gerarchica a livello di Misure
ma ti farei solo confusione...!
Ciao
@Alex

 intonando un mea culpa, mi frusto la schiena.......
Non basta
;-)
-- 
_ _
Ciao
MAssimiliano Amendola            
www.accessgroup.it
Cisa - Conferenza Italiana per Sviluppatori Access
Info:  
www.donkarl.com/it

Ciao......allora vediamo se ho capito bene.
Mi sono creato (per una prova) tre tabelle:
- TabProve con i campi "IdProva" e "Prova"e con i seguenti dati
1 allungamento a rottura
2 peso specifico
- TabMisure con i campi "IdMisura" e "Misura" e con i seguenti dati
1 trazione
2 peso
- TabDettProve con i campi "Id" (chiave primaria?), "IdProva", "IdMisura" 
e "ValoreRiferimento"
Ho poi creato una query (query1) dove ho inserito la TabDettProve e la 
TabMisure prendendo da queste il campo "Misura" e il campo 
"ValoreRiferimento" (e spero che sino ad ora sia tutto giusto)
Quello che non so fare è creare una tabella temporanea che, anche come 
concetto, purtroppo mi sfugge.
E' da creare in VBA? 
Ciao

E' detta temporanea solo perchè il suo utilizzo è di tranzizione, ma
è una
tabella reale nella quale metti i campi che ti servono, ricordati il
campo
Valore che dovrai poi trasferire nella tabelle Definitiva.
Come ti dicevo si potrebbe non usare una Tabella reale, appoggiandosi
ad ADO con i recordset in memoria, ma per ora lascia perdere...!
Ciao
@Alex