Newsgroup: it.comp.appl.access
Titolo: Fatturazione annuale: come debbo regolarmi

Un saluto a tutto il Ng.
Vi espongo il seguente problema:
Ho le seguenti tabelle:
TabellaPersona(codice_fiscale, campo2, campo3)
TabellaServizio(idservizio, codifefisc,campoX,campoY,CampoZ)
TabellaFatt(Contatore, CodFiscale, idserv,importo, iva)
I campi univoci delle tabelle sono:
TabellaPersona ---> codice_fiscale
TabellaServizio ---> idservizio, codicefiscale
TabellaFatt ---> contatore
Ho impostato le seguenti relazioni
tabellaPersona ---> tabellaServizio   : 1 a molti
tabellaPersona --->tabellaFatt           : 1 a molti
tabellaServizio --->tabellaFatt          :1 a molti
Sostanzialmente una persona puo' richiedere piu' servizi dello stesso tipo.
Una volta assegnato l'idservizio quell'id puo' corrispondere ad una sola
persona. Il servizio deve essere fatturato alla persona che l'ha richiesto
ogni anno.
Se tizio ha richiesto il servizio "X" nel 1998 allora a Tizio tale servizio
deve essere fatturato nell'anno 1999, 2000, 2001 ecc. a meno di eventuali
disdette del servizio stesso.
Naturalmente il costo di fatturazione dipende dalle caratteristiche
richieste per il serv. "X"
Mi chiedevo (anzi vi chiedo), data la tabellaPersona e la tabellaServizo
come posso (magari nel modo piu' semplice possibile) riempire di dati la
tabellaFatt
Sinceramente avevo pensato ad una query di accodamento, a tale query passo
come parametro l'anno che intendo fatturare, naturalmente pero' debbo
gestire via codice gli importi da fatturare in base alle caratteristiche
richieste per il determinato servizio.
Esiste una soluzione piu' efficiente ed eventualmente meno
laboriosa.....indicatemi la strada giusta onde evitare di imboccare un
vicolo cieco.
Grazie a tutti per la cortese collaborazione
e.

"elio" <not...@you.gk> ha scritto nel messaggio
news:9ju8de$mfa$1...@nreadA.inwind.it...

Io lo risolverei con una routine scritta in VBA.
Aprirei 3 recordset sulle tre tabelle. Per ogni record letto dal recordset
aperto sulla tabellaServizio, se è da fatturare, mi ricercherei il relativo
record nel recordset aperto sulla tabellaPersona in base al codice fiscale,
effettuerei i calcoli e registrerei un record nel recordset aperto nella
tabellaFatt.
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

 tabellaFatt.
Ciao,
grazie della risposta. Ho gia' risolto proprio come hai detto
tu.....(l'intera interfaccia e' ottenuta tramite VB). Sto solo cercando di
capire come fare a :
evitare di fatturare due volte lo stesso servizio alla stessa persona nello
stesso anno, nel caso in cui il terminalista avvia la routine (per il
servizio "X") piu' volte. Non vorrei aggiungere un ulteriore campo "si/no"
nella tabella che mi indicherebbe se il servizio e' gia' stato fatturato o
no , pero' effettuare una ricerca sulla tabella fatture ogni volta
risulterebbe gravoso. Oltre a queste due soluz. soprascritte hai qualche
suggerimento consiglio da indicarmi?
Ciao e grazie
e.

"elio" <not...@you.gk> ha scritto nel messaggio
news:9k0ig9$4b6$1...@nreadA.inwind.it...

Non mi viene in mente altro e opterei sicuramente per la soluzione che
effettua la ricerca sulla tabellaFatt, naturalmente non previa scorrimento
di tutti i record della tabella, ma usando i metodi FindFirst e NoMatch
oppure la funzione DLookup, che come sai ti restituisce un valore Null se la
ricerca ha esito negativo. Se poi nella tabellaFatt indicizzi i due campi di
tale ricerca direi che non dovresti avere problemi di performance.
Nella mia ipotesi, anche la ricerca sulla tabellaPersona la immaginavo fatta
con un metodo FindFirst.


 Roberto
Ciao,
grazie per la celerita' della risposta.........pomeriggio provero' cosi'. Le
ricerche le effettuo via codice tramite sql, come ti dicevo ho intefacciato
tutto tramite Vb, una volta inizializzate le variabili di tipo recordset
(utilizzando connessioni di tipo ADO) mi sposto facilmente tramite findfirst
o movenext  (a secondo delle esigenze).
Ciao e grazie davvero
e.