Newsgroup: it.comp.appl.access
Titolo: sottrazione in maschera?

Salve,
premetto che sono abbastanza digiuno con access e l'ho ritenuto sempre 
abbastanza ostico come programma...ma adesso mi sa che mi serve imparare!
La cosa che sto per chiedervi è una cosa all'apparenza semplice e che fa 
parte di un più grande progetto..
Arrivo al punto.
Una tabella contiene questi due semplici campi:
DATA
CONTATORE
Quello che sostanzialmente devo fare è di rilevare ogni giorni il contatore 
della luce in modo da avere un database completo da compilare giorno per 
giorno.
Ora mettiamo che oggi 12/10/2004 il contatore registri il numero 200....
Domani con data 13/10/2004 registra il numero 250.
Vorrei in una maschera del giorno 13 mi venisse fatta la differenza fra il 
250 e il 200...
Quindi "Contatore di Oggi"-"Contatore di Oggi-1" ....
Questo per ogni giorno.
Poi il risultato dovrebbe essere salvato in un altra tabella avente come 
chiave primaria sempre la data.
E' difficile?
Ho smanettato un pò....ma non riesco a trovare niente di buono.
ciao 

 ha scritto nel messaggio
news:HAUad.24645$B06...@news.edisontel.com...

Ciao Matrix,
prova un po' a vedere se queste due query possono fare al caso tuo:
Query1:
SELECT Letture.[Data], Letture.Contatore,
Format(DateAdd("d",-1,[Data]),"mm/dd/yyyy") AS giornoPrec
FROM Letture;
Query2:
SELECT Query1.[Data], Query1.Contatore,
[Contatore]-DLookUp("Contatore","Letture","[Data]=#" & [giornoPrec] & "#")
AS Differenza
FROM Query1;
Saluti
Cinzia


Ciao Cinzia,
grazie mille per la risposta!
Sono riuscito ad ottenere quello che volevo.
In più ho provato ad usare sempre la seconda query a sommare..e funziona 
alla grande.
Ora ne approfitto per chiederti sempre qualcosa riguardo ai calcoli..
Supponiamo che il contatore di ieri sia 300 e quello di oggi sia 400.
La differenza mi da 100 e questo lo ottengo con quello che mi hai detto tu.
Domani il contatore sarà per esempio 450 e quindi la differenza con 400 mi 
da 50.
Tutti questi risultati, 100...50 me li ritrovo nella tabella che viene fuori 
dalla query...e mi sta benone!
Ora vorrei far fare alla query questa operazione...:
Oggi calcolo la differenza che mi da 100
Domani la differenza mi da 50...in un altra colonna voglio che mi si calcoli 
100+50....
Dopodomani la differenza sarà per esempio 80 e quindi in questa altra 
colonna che voglio fare il calcolo sarà il 150 (100+50)+80 ...cioè  230....
In pratica i 50...100...80 sono i kilowatt prodotti al giorno...mentre 
nell'altra colonna si calcolano quelli del mese....
es..
data                kw    kw del mese
01/10/2004    100    100
02/10/2004    150    250
03/10/2003    80      330
e così via...
Ti offro qualcosa al bar se mi aiuti :-)
ciao 

 03/10/2003    80          330                    330
Però immaginandomi un contatore reale (cosa non difficile viste le
bollette!!!)
la situazione potrebbe essere questa:
data                 Diff.kw    Tot. Prog    Lettura Originale
30/09/2004        20        1000                1000
 01/10/2004    100       100                    1100
 02/10/2004    150       250                    1250
 03/10/2003    80         330                    1330
Modifica la query2 così:
SELECT Query1.DataLettura, Query1.Lettura,
[lettura]-nz(DLookUp("Lettura","Letture","DataLettura=#" & [giornoPrec] &
"#"),0) AS ConsumoG, GetTotProgressivo([DataLettura]) AS TotProg
FROM Query1;
Crea una Query4 così:
PARAMETERS datax DateTime;
SELECT Sum(Query2.ConsumoG) AS TotProg
FROM Query2
WHERE (((Month(DataLettura))=Month([datax])) AND
((Query2.DataLettura)<=[Datax]));
Apri un  modulo e incollaci questa funzione:
Function GetTotProgressivo(dataC As Date) As Long
    Dim qdef As DAO.QueryDef
    Dim rs As DAO.Recordset
    Set qdef = CurrentDb.QueryDefs("Query4")
    qdef.Parameters(0) = dataC
    Set rs = qdef.OpenRecordset()
    If Not rs.EOF Then
        GetTotProgressivo = Nz(rs.Fields(0), 0)
    Else
       GetTotProgressivo = 0
    End If
    rs.Close
End Function
In Menu Strumenti  -  Riferimenti seleziona Microsoft DAO se non è già
selezionato!
Temo che per questa consulenza non basterà un caffè, :-)
ci vorrà almeno un gelato!!!
Ciao
Cinzia

 ha scritto:

Ciao Cinzia,
ho provato il codice che mi hai suggerito.
C'è qualcosa che non va...
Se la prima letture è il numero 1957 mi troverò con questa situazione:
Lettura: 1957
ConsumoG: 1957
TotProg: 1957
Ecco ho dimenticato di dire che anche se inizio giorno 1 del mese a 
registrare il contatore egli dovrà sempre calcolare la differenza con il 
giorno precedente..cioè giorno 30-31 che sia..
In excel avevo creato un giorno 0 che compilavo a mano dove c'era la lettura 
di fine mese...
Quindi es:
Giorno 31/09 Lettura 13862
Giorno 01/10 Lettura 13867
Quindi il database dovrà darmi come primo risultato del giorno il numero 5
..e anche come tot. progressivo.
Giorno 02/10 Lettura 13873...risultato 6.....tot progressivo 11...e così 
via...
Ciao e grazie ancora
P.S. Mi sa che ora ti devo offrire una cena!
Inviato da 
www.mynewsgate.net

 P.S. Mi sa che ora ti devo offrire una cena!
Se mai verrò in vacanza in quel bellissimo posto che ho visto sul tuo sito,
ti faccio uno squillo!
Cinzia


Accidenti è vero..scusami!
E allora non mi resta che ringraziarti e rimango in debito con te....
Appena finito il progetto mi dai un voto :-)
ciao 


Se me lo mandi, gli do un'occhiata volentieri! Mi incuriosisce sempre sapere
come vanno a finire i db a cui ho in piccola parte contribuito!
Buon lavoro!
Cinzia