Newsgroup: it.comp.appl.access
Titolo: Problemi (concettuali) di impostazione di un DB

Devo calcolare i consumi di carburante effettuati per eseguire diversi tipi
di lavorazioni su diverse coltura agrarie. Mi spiego meglio:
L'ARATURA del MAIS ha, ad es.,un  CONSUMO di 10 litri per ettaro;
L'ARATURA della SOIA ha un CONSUMO di 8 litri per ettaro;
La SEMINA del MAIS CONSUMA 5 litri per ettaro;
La SEMINA della SOIA CONSUMA ad es. 4 litri.
Il tutto viene reso più complicato dal fatto che questi valori vengono
modificati da percentuali di maggiorazione che variano da Comune a Comune.
Perciò sempre facendo un esempio, il CONSUMO per l'ARATURA del MAIS nel
Comune di ROMA è maggiorato del 2%, mentre nel Comune di NAPOLI, è
maggiorato del 4%.
Vorrei fare in modo che inserendo in una maschera, la superficie in ettari,
scegliendo poi il tipo di lavorazione, la coltura ed il comune, potessi
calcolare il consumo effettivo.
Il primo problema che devo affrontare è come strutturare il DB, ovvero come
e quante tabelle devo creare. Il secondo problema che affronterò (spero
sempre con un po' di aiuto...) è far eseguire i calcoli ad Access sulla base
delle scelte fatte.
Sono più che disponibile ad integrare quanto scritto (non so se sono stato
molto chiaro, infatti), perchè per me questa cosa è molto importante.
Grazie in anticipo a tutti.
Ciao. Giancarlo.

 wrote in message
6le37.55326$q77.4...@news2.tin.it...

Uhhmmmm..
io partirei creando queste tabelle:
- "lavorazioni" con i campi "IDlavor" , "nomelavoraz"  (ed eventuali campi
sulle lavorazioni che non hai nominato)
- "Coltivazioni"  con  "IDcoltiv" , "nomecoltiv"  (ed eventuali campi sulle
coltivazioni che non hai nominato)
- "Citta"  con "IDcitta" , "nomecitta", "ricarico"  (ed eventuali campi
sulle città che non hai nominato)
(naturalmente i 3 campi ID sono le chiavi delle tabelle e i nomi sono di mia
fantasia)
poi ti serve la tabella che insieme alla combinazione dei dati delle prime 2
ti dia il consumo in litri base:
- "costi" con i campi "IDlavor", "IDcoltiv" e "consumolitribase"
E adesso se i calcoli che farai fare alla maschera devono essere memorizzati
oltre che visualizzati devi creare la tabella finale che verrà "riempita"
appunto con le selezioni e i calcoli da maschera:
-"consumi"  con i campi  "IDlavor", "IDcoltiv" , "IDcitta" , "consumo
finale"
Poi viene il bello...la maschera:
inserisci i controlli relativi ai campi che ti interessano (avranno come
origine i campi di "consumi")
quelli per Lavorazione, Coltivazione e Città dovrebbero essere secondo me
delle Caselle Combinate:
    - la prima avrà come Origine Riga un select con "nomelavoraz" e una
routine "dopo aggiornamento" con Requery sulla seconda casella
    - la seconda un select che userà come criterio IDlavor appena
selezionato e visualizza i "nomecoltiv" che hanno con questo una
associazione in "coltivazioni" e una routine "dopo aggiornamento" che copia
il valore "consumolitribase" in una casella di testo (magari nascosta)
    - la terza un select con "nomecitta" e una routine "dopo aggiornamento"
che prende il relativo "ricarico" e lo moltiplica con la casella nascosta
suddetta e lo memorizza nel controllo relativo a "consumo finale"  (cioè
circa così consumo finale=ricarico*casellanascostaconsumolitribase  ; occhio
la formula dipende da come hai memorizzato la percentuale di ricarico)
Mahhhh.... in velocità questo è quello che mi viene in mente per la tua
situazione,
non so se mi sono spiegata a dovere o se ho capito quello che ti serve.
Bye Bye Silvia


Cia. Giancarlo.


----------------
silvia:
Uhhhhmmmmmm ...come posso spiegarmi!
- inserisci nella maschera una casella di testo non associata (cioè senza
nulla nella proprietà "origine record") poichè serve solo da appoggio per i
calcoli la puoi anche nascondere (nella proprietà 'Visibile' metti 'No')
-torna nella seconda casella e nell'evento 'Dopo aggiornamento' inserisci
un'istruzione Dlookup del tipo
        Me![casellanascosta] = DLookup("[consumolitribase]", "costi",
"((costi.Idlavor)=[Forms]![maschera]![primacasella]) AND
((costi.IDcoltiv)=[Forms]![maschera]![secondacasella])")
        Naturalmente è il caso che tu legga l'help relativo al Dlookup
        per comprendere il senso dell'obrobrio che ho scritto qui sopra
        Mi scuso se ho digitato male qualcosa
        ma ci penserà Access a darti dei begli errori se tu non scrivi
correttamente!! ;-)
        Ahh i nomi sono sempre di fantasia e vanno sostituiti con quelli che
utilizzi realmente.
        Una nota importante:
        la funzione qui sopra funziona se nei controlli 'primacasella' e
'seconda casella'
        sono memorizzati l' IDlavor e l' IDcoltiv
        perciò quando crei i 2 controlli imposta correttamente
        il valore della Proprietà 'Colonna Associata' (vedi sempre l'Help)
        in modo che vengano salvati i 2 ID e non 'nomelavoraz' e
'nomecoltiv'
Spero di aver chiarito qualche dubbio!!
Silvia
-----------------------------------------


 wrote in message 9img89$raj$1...@serv1.iunet.it...

Ma questo  non implica che la tabella "coltivazioni" abbia un 'aggancio' con
la tabella "lavorazioni" tipo IDlavor? Altrimenti come fa la seconda ad
aggiornarsi in funzione delle scelte fatte sulla prima?



______________________________
Silvia:
Certo ed è rappresentata dalla tabella 'costi' dove IDlavor e IDcoltiv hanno
valori associati nello stesso record,
ed infatti la seconda casella combinata va impostata su una query con questa
tabella
e vincolata al valore scelto nella prima casella (tramite dei criteri )
Se vuoi capire meglio leggi l'help realtivo al funzionamento
delle caselle combinate e della loro proprietà Origine Riga
Se però ti è concettualmente difficile avere a che fare con diverse tabelle
collegate
puoi optare per questa soluzione:
non creare le 3 tabelle Lavorazioni , Coltivazioni e Citta;
naturalmente senza queste tabelle cambia anche la tabella Costi
che non avrà più i campi IDlavor ecc...
ma conterrà direttamente i valori 'nomelavoraz' ,'nomecoltiv' , 'nomecitta'
e 'ricarico';
(si tratterà di lavorare un pò di più per inserire i valori in 'costi')
____________________________
