Newsgroup: it.comp.appl.access
Titolo: Fasi e attività lavorative - struttura

Ciao,
vorrei associare alle offerte dei clienti una tabella "FASI" con le relative
"ATTIVITA"..
ma non riesco a capire come strutturare le tabelle
Praticamente, una volta creata l'offerta, vorrei poter inserire le varie
fasi lavorative e le attivita o sottofasi...
io ho pensato a qualcosa del genere:
tbOfferte
O_ID - K
O_DESC
...
tbFasi
F_ID - K
F_O_ID -K da tbOfferte
F_DESC
tbAttività
A_ID
A_F_ID - K da tbFasi
A_O_ID - K da tbFasi
A_DESC
praticamente avrei:
tbOfferte
04001 Impianto elettrico
04002 Impianto automazione
tbFasi
04001 01 Appartamento primo piano
04001 02 Appartamento secondo piano
04001 03 Impianto esterno
tbAttività
04001 01 001 Canaline... ecc ecc
04001 01 002 Cavidotto....
04001 02 001 Installazione lampade ecc ec
04001 02 002 altra attività
ecc ecc
Potrebbe essere una soluzione?
diventerebbe troppo complicato gestire le doppie chiavi di FASI-ATTIVITA nel
momento dell'inserimento?
Si potrebbero inserire prima tutte le fasi relative ad un'offerta...
...poi inserire le attività scegliendo di volta in volta la Fase a cui
appartiere selezionandola da una casella combinata...
cmq il problema adesso è la struttura...
potreste darmi una mano?
Grazie a tutti!

 ha scritto nel messaggio
news:4EdOc.57389$OR2.3...@news3.tin.it...

Io opterei per una soluzione costituita da tre tabelle fisicamente slegate
tra di loro ma in relazione logica molti-a-molti.
Così facendo sarà possibile che un preventivo sia composto di più fasi e che
una fase faccia parte di più preventivo; altresì sarà possibile che una fase
sia articolata in più attività ma un'attività potrà fare parte di più fasi
(nel tuo esempio le canaline faranno parte sia della fase Appartamento primo
piano, che della fase Appartamento secondo piano e sia della fase Impianto
esterno.
Quindi a mio avviso la struttura delle tre tabelle fondamentali dovrebbe
essere la seguente:
tbOfferte
---------
O_ID    (chiave primaria)
O_DESC
...
==================
tbFasi
------
F_ID   (chiave primaria)
F_DESC
==================
tbAttività
--------- 
A_ID    (chiave primaria)
A_DESC
===================
Come ho già detto queste tre tabelle non sono in relazione fra di loro né
uno-a-uno e neppure uno-a-molti.
==============================
A questo punto creerei la tabella che mette in relazione molti-a-molti le
prime due tabelle.
tbOff_Fasi
-----------
OF_ID            (Contatore e chiave primaria)
O_ID               (chiave esterna verso la tabella tbOfferte)
F_ID                (chiave esterna verso la tabella tbFasi)
Questa tabella la devi mettere in relazione uno-a-molti sia con la tabella
tbOfferte (in base ai rispettivi campi O_ID) e sia con la tabella tbFasi (in
base ai rispettivi campi F_ID). Per queste due relazioni aggiungi
l'integrità referenziale.
Per il campo O_ID di tbOff_Fasi effettuerei l'Autocomposizione Ricerca...
basandola sulla tabella tbOfferte, così che nelle query, nelle maschere e
nei report anziché essere visualizzato il valore di O_ID (il codice
dell'offerta) verrà visualizzato il valore di O_DESC (la descrizione
dell'offerta).
Per il campo F_ID di tbOff_Fasi effettuerei l'Autocomposizione Ricerca...
basandola sulla tabella tbFasi, così che nelle query, nelle maschere e nei
report anziché essere visualizzato il valore di F_ID (il codice della fase)
verrà visualizzato il valore F_DESC (la descrizione della fase). Avrai così
anche il vantaggio, in fase di inserimento e/o aggiornamento, che la scelta
della fase la effettuerai tramite una casella combinata la cui lista
conterrà l'elenco delle fasi.
===============================
A questo punto creerei una tabella che metterà in relazione molti-a-molti la
tabella tbOff_Fasi con la tabella tbAttività.
tbOffFasi_Attività
------------------
OFA_ID        (Contatore e chiave primaria)
OF_ID            (chiave esterna verso la tabella tbOff_Fasi)
A_ID              (chiave esterna verso la tabella tbAttività)
Questa tabella la devi mettere in relazione uno-a-molti sia con la tabella
tbOff_Fasi (in base ai rispettivi campi OF_ID) e sia con la tabella
tbAttività (in base ai rispettivi campi A_ID). Per queste due relazioni
aggiungi l'integrità referenziale.
Per il campo A_ID di tbOffFasi_Attività effettuerei l'Autocomposizione
Ricerca... basandola sulla tabella tbAttività, così che nelle query, nelle
maschere e nei report anziché essere visualizzato il valore di A_ID (il
codice dell'Attività) verrà visualizzato il valore A_DESC (la descrizione
dell'attività). Avrai così anche il vantaggio, in fase di inserimento e/o
aggiornamento, che la scelta dell'attività la effettuerai tramite una
casella combinata la cui lista conterrà l'elenco delle attività.
==============================
Per l'aggiornamento userei la tecnica
Maschera/Sottomaschera/Sottosottomaschera; in questa struttura gerarchica la
Maschera principale sarà con visualizzazione a maschera singola ed avrà
tbOfferte come origine record; la Sottomaschera sarà con visualizzazione a
maschera singola ed avrà tbOff_Fasi come origine record; infine la
Sottosottomaschera sarà con visualizzazione a maschere continue ed avrà come
origine record tbOffFasi_Attività.
Le tabelle tbFasi e tbAttività verranno aggiornate a fronte degli eventi "Su
non in elenco" delle rispettive caselle combinate; un esempio di questa
tecnica la trovi sul Sito Comune (link qui sotto), nella Sezione Forms,
nella mia FAQ intitolata "Si può aggiungere un record alla tabella che è
origine riga di una casella combinata senza usare una maschera?".
-- 
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

 ha scritto nel messaggio
news:lhoOc.22796$OH4.5...@twister1.libero.it...

Pfiuuuhhhhh...!
Roberto, non sei terreno vero?
trascorrerò il weekend a studiare quanto hai scritto per cercare di capirci
qualcosa...
cioè, sei stato abbastanza chiaro ma devo capire per bene le relazioni tra
le tabelle...
spero solo che questi 2 giorni siano sufficienti :)
Grazie Roberto, grazie davvero!

 ha scritto nel messaggio
news:lhoOc.22796$OH4.5...@twister1.libero.it...

Scusami di nuovo Roberto,
ho riletto attentamente il tuo msg ma per capire meglio avrei bisogno ancora
di un piccolo aiutino..:)
le tabelle tbFasi e tbAttività le hai considerate come tabelle generali,
cioè che contengono un elenco di Fasi e Attività valide per tutte le Offerte
generate?
Io dovrei inserire per ogni offerta un elenco di Fasi e relative Attività;
Le fasi e le attività inserite per un'offerta sono valide solo per
quell'offerta...
Nel momento in cui vado a redigere una nuova offerta inserisco un nuovo
elenco di Fasi e Sottofasi
Quindi non dovrei avere una tabella generale da cui scegliere la fase e
quindi le sottofasi...
non so se mi sono spiegato...
per questo facevo l'esempio delle chiavi doppie
Genero un offerta 04001
per l'offerta 04001 creo un elenco di Fasi lavorative
per ogni fase inserisco le varie attività
magari mi hai spiegato la stessa cosa ed io non sonon riuscito a capire...
Scusami ancora..Ciao.

 Scusami ancora..Ciao.
Non c'è alcun motivo per cui tu debba scusarti.


 Roberto
Ciao Roberto,
ho riletto e capito il tuo suggerimento ( anche se non sembra...:) )
magari venissero a me in mente delle soluzioni del genere (il mio livello è
ancora molto basso ,ed anche su questo hai ragione :))
Sto cercando di utilizzare la tua struttura :)
Il dubbio è nato dal fatto che io dovevo solo limitarmi ad inserire dati
presi da un foglio elettronico che il tecnico di turno mi passa...
nel foglio c'è la descrizione del lavoro (tipo : Impianto piano terra) è poi
una lista del materiale utilizzato..
Tutto qua!
Il tuo suggerimento mi sembrava molto più avanti... più completo..
Infatti ti ho chiesto se sei terreno..
ma non hai voluto dirmelo :)
Ciao Roberto e grazie per i consigli!

 ma non hai voluto dirmelo :)
Onestamento la prima volta non avevo capito la tua battuta, quindi non ho
risposto; comunque non sono un marziano: ho solo un po' di conoscenza
dell'applicativo ed una decennale sperienza nell'informattizzazione delle
procedure.
-- 
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------
