Newsgroup: it.comp.appl.access
Titolo: Utilizzo funzioni matematiche (urgente).

Salve a tutto il NG.
Ho un problema che non risolverò certamente in tempi brevi se non ho da voi
un aiuto piuttosto ' massiccio'.
Ho, diciamo, quasi terminato un programma che dovrà gestire la concessione
di acqua per l'irrigazione di campi agricoli.
In effetti manca la parte più importante che non riesco a risolvere.
Vi descrivo il tutto, ho una Tabella LETTURE con i seguenti campi:
IDlettura   = contatore
IDditta =  chiave esterna collegata alla tabella delle ditte che fanno
richiesta di acqua.
IDmatricola1 = numero di matricola del contatore.
IDtipolettura = la lettura del contatore può essere di 4 tipi:
'Iniziale' , quando ha inizio il consumo,
 'Intermedia', quando si riferisce a tutte le rilevazioni dei consumi
successive a quelle iniziali.
 'Sospensione' , si verifica quando cessa il contratto e quindi avviene la
disdetta del contatore.
 'Sostituzione' , quando si verifica una rottura del contatore per cui viene
cambiato l'apparecchio, ma il numero del contatore rimane sempre lo stesso.
datalettura = data della lettura del consumo di acqua.
letturamc = valore numerico della lettura espressa in metri cubi.
Il problema è questo:
devo calcolare i consumi del contatore effettuando una operazione di
sottrazione tra l'ultimo ed il penultimo valore letto.
Quindi si procede in questo modo finchè il tipo lettura è uguale a iniziale,
intermedio o sopensione.
In caso di sostituzione, il calcolo del consumo deve avvenire solo fino a
questo punto, poi (con la sotituzione del pezzo) dovrà ricominciare con un
nuovo valore a cui sarà associato il tipo lettura 'iniziale'.
Spero di non aver annoiato e di non aver confuso le idee.
Io ho creato la Sottomaschera contenente tutti i controlli della Tabella
Letture.
Come faccio ad impostare i relativi calcoli, tenendo anche conto delle
condizioni indicate?
Per me è davvero difficile.
Vi ringrazio per l'aiuto sempre gradito.
Ciao Rita

Correggimi se sbaglio: per ogni contatore avresti una serie di letture,
e quindi altrettanti consumi; per ogni consumo devi fare un certo
calcolo. Č cosě?

 calcolo. Č cosě?
Sě certo č proprio cosě, poi il contatore assegnato ad un utente non puň
assolutamente essere assegnato ad un altro utente, solo se avviene la
sospensione, cioč si chiede di non voler piů usufruire del servizio, il
contatore viene svincolato e puň essere assegnato ad un altro utente.
Grazie ciao
Rita

iniziale, >intermedio o sopensione. >In caso di sostituzione, il
calcolo del consumo deve avvenire solo fino a >questo punto, poi (con la
sotituzione del pezzo) dovrà ricominciare con un >nuovo valore a cui
sarà associato il tipo lettura 'iniziale'. >Spero di non aver annoiato e
di non aver confuso le idee. >Io ho creato la Sottomaschera contenente
tutti i controlli della Tabella >Letture. >Come faccio ad impostare i
relativi calcoli, tenendo anche conto delle >condizioni indicate?
----------------------- Ho buttato giù qualche idea. Vedi se ti può
servire come partenza. Semmai ci risentiamo.  Potremmo avere tre
tabelle. 1) Contatori, con i dati di ciascun contatore: -codcont ;
numerico univoco di riferimento al contatore, -IDmatricola1 ; il nome
"ufficiale" ...ecc. 2) Ditte -IDditta ; codice ditta -nomeditta ...ecc.
3) Letture -IDlettura ; univoco e solo per riferimento -codcont -IDditta
-codcont -datalettura -letturamc -consumo ; che è più pratico scrivere
che ricalcolare ogni volta ...ecc.  Ora abbiamo una maschera che si
chiama, per esempio, "Dati", nella quale inseriamo due caselle
combinate: "contatore", che accetta codcont e IDmatricola1 (necessario
in caso una ditta abbia più contatori, sennò forse superfluo); "ditta"
che accetta IDditta e nomeditta. Un pulsante produce la requery di una
sottomaschera "letture" in formato maschere continue, basata su una
query "datiletture" che prende come parametri le due caselle suddette.
Questa sottomaschera dà tutte le letture fatte fino a quel momento. Non
è strettamente necessario, ma senz'altro utile, per esempio per vedere
se si è già inserita una certa lettura. Un pulsante "inserisci lettura"
apre una maschera in cui inserisci datalettura e letturamc; il campo
"consumo" è calcolato per differenza del nuovo letturamc con:
dmax("[letturamc]";"datiletture") Il pulsante "scrivi" aggiungerà i dati
in un nuovo record della tabella Letture.  Dalla medesima query
"datiletture" puoi produrre anche un report con lo storico del contatore
e il calcolo dei vari costi.  Per il caso di sostituzione può essere
necessaria qualche altra funzione. Mi pare di capire che serve anche
qualche funzione per assegnare i contatori, ma questa è una storia che
si può vedere in seguito.  Spero di avere capito la questione e di
esserti utile. Riccardo