Newsgroup: it.comp.appl.access
Titolo: un aiuto per un operazione che non so fare

buongiorno a tutti e in particolari ai miei angeli custodi (presenti sul forum).
 
Ho una tabella che per migliaia di contatori mi indica la lettura giornaliera con un valore progressivo (contatore gas).
Tramite una query dovrei ottenere il consumo giornaliero, ottenuto dalla lettura del giorno in parola meno quella del giorno precedente.
Qualcuno mi potrebbe dare una mano ?
 
grazie infinite

nella query sono riuscito a inserire un  progressivo che indica i gg. trascorsi rispetto al primo giorno presente in tabella.
 

buongiorno,
puoi dividere il problema per semplificarlo:
 
tabella1: cont, data, numero
 
query cont oggi:
SELECT Tabella1.cont, Tabella1.data, Tabella1.numero
FROM Tabella1
WHERE (((Tabella1.data)=Date()));
 
query cont ieri
SELECT Tabella1.cont, Tabella1.data, Tabella1.numero
FROM Tabella1
WHERE (((Tabella1.data)=Date()-1));
 
query lettura
SELECT [cont ieri].cont, [cont oggi]![numero]-[cont ieri]![numero] AS delta
FROM [cont ieri] INNER JOIN [cont oggi] ON [cont ieri].cont = [cont 
oggi].cont;
 
ammesso che i numeri vengano inseriti tutti i giorni.
 
Akery
 
 
"ignazio.pilone"  ha scritto nel messaggio 
news:587017ff-614e-4dbd...@googlegroups.com...
 
nella query sono riuscito a inserire un  progressivo che indica i gg. 
trascorsi rispetto al primo giorno presente in tabella. 
 
 
---
Questa e-mail è stata controllata per individuare virus con Avast antivirus.
https://www.avast.com/antivirus
 
 

grazie Akery del tuo aiuto ma non è applicabile al mio caso.
 
Il mio lavoro parte infatti da una tabella di letture giornaliere (dei contatori gas) di tutto l'anno. 
Con la query dovrei riuscire a ottenere per ogni PDR  il consumo giornaliero.(oggi meno ieri) ottenuto come differenza tra le letture del Totalizzatore.
In pratica nella query ho queste colonne:
 
PDR  dataLettura    Totalizzatore   ggtrascorsi   Consumogiorna
 
Nella colonna Consumogiorna Avrei bisogno di ottenere, per quel PDR la differenza ottenuta tra:
 
(Totalizzatore del ggtrascorsi)
 - 
(Totalizzatore  (ggtrascorsi-1)
 
grazie infinite per l'aiuto.

 grazie Akery del tuo aiuto ma non č applicabile al mio caso.

Puoi fare un esempio? Dati da cui parti a 
dati che vorresti
 visualizzare. Io sto capendo che vuoi visualizzare il consumo
 come differenza tra oggi e ieri e la query proposta fa appunto
 questo, o ti interessa visualizzare la differenza di ogni
 giorno?
 
Saluti
-- 
akery
 
 
----Android NewsGroup Reader----
http://usenet.sinaapp.com/
 

mi interessa proprio visualizzare la sequenza dei consumi giornalieri.
Al momento l'ho fatto in excel e provo ad incollarlo qui per chiarire meglio cosa mi serve:
 
	ggtrascorsi	1	2	3	4	5	6	ecc.
		giorno n	n+1	n+2	n+3	n+4	n+5	ecc.
 
PDR								
35250030450748	totalizzatore	7434	7625	7817	8008	8199	8391	
	Consumogiorna		191	192	191	191	192	
35250253232725	totalizzatore	69448	69707	69960	70193	70418	70657	
	Consumogiorna		259	253	233	225	239	
35250548583934	totalizzatore	43024	43024	43024	43024	43024	43024	
	Consumogiorna		0	0	0	0	0	
352502259679098	totalizzatore	12915	12915	13059	13217	13393	13545	
	Consumogiorna		0	144	158	176	152	
 
In pratica sulla seconda riga trovi il dato che vorrei mi venisse restituito dalla query e cioè la differenza tra il totalizzatore e lo stesso riferito alla data precedente.
Tieni presente che i giorni sono 365 in quanto la tabella contiene i dati annuali.
 
grazie infinite per la cortese e graditissima attenzione.

dividiamo le query cosi
 
tabella1: cont, data, numero
 
query1
SELECT Tabella1.cont, Tabella1.data, Tabella1.numero, [data]-1 AS datepre
FROM Tabella1;
 
query delta
SELECT Tabella1.cont, Tabella1.data, [query1]![numero]-[Tabella1]![numero] 
AS delta
FROM Tabella1 INNER JOIN query1 ON (Tabella1.cont = query1.cont) AND 
(Tabella1.data = query1.datepre);
 
query lettura
TRANSFORM Min(delta.delta) AS MinDidelta
SELECT delta.cont
FROM delta
GROUP BY delta.cont
PIVOT delta.data;
 
ammesso sempre che il campo data sia valorizzato ogni giorno.
 
Akery
 
"ignazio.pilone"  ha scritto nel messaggio 
news:5525d817-0072-42dc...@googlegroups.com...



errata corrige;
ho invertito le sottrazioni, le prime due query sono cosi:
 
 
query1 
SELECT Tabella1.cont, Tabella1.data, Tabella1.numero, [data]+1 AS datepre 
FROM Tabella1; 
 
query delta 
SELECT Tabella1.cont, Tabella1.data, [Tabella1]![numero]-[query1]![numero]
AS delta 
FROM Tabella1 INNER JOIN query1 ON (Tabella1.cont = query1.cont) AND 
(Tabella1.data = query1.datepre); 
 
 
Akery

Akery, grazie mille per l'aiuto.
 
Fammi capire e scusami per la mia ignoranza.
la query1 la inserisco nel campo della mia query ?
posso quindi inserire :
 
Consumogiorna: (SELECT Tabella1.cont, Tabella1.data, Tabella1.numero, [data]+1 AS datepre 
FROM Tabella1)
 
e le altre due query dove le metto (....sic!). Devo compilare due moduli nominandoli querydelta e querylettura che contengano il codice che gentilmente mi hai proposto ?
 
grazie infinite e scusami ancora.
 
 

non sono moduli! sono 3 queries distinte, query1 prepara una copia della 
tabella di origine con una colonna in più, la query delta fa le differenze 
per ogni giorno ed infine lettura presenta i dati come li vuoi.
vai su crea una nuova query,
vai nella visualizzazione sql e incolli quanto scritto, poi modifichi 
secondo le tue tabelle.
 
al seguente link il file
https://www.dropbox.com/s/37hlboh8qxw3p95/delta.accdb?dl=0
 
 
Akery
 
"ignazio.pilone"  ha scritto nel messaggio 
news:18c66bbe-ac42-4c7a...@googlegroups.com...



PERFETTO !!!!
 
grazie mille per l'aiuto e per la pazienza infinita.
 
un caro saluto.
 

mi scuso se rompo ancora ma mi sono messo in un bel pasticcio.
Con il preziosissimo suggerimento di Akery ho ottenuto, in una query a campi incrociati, il consumo giornaliero dei miei impianti dove in riga ho i PDR e in colonna i giorni dell'anno (01/01/2015; 02/01/2015;ecc.)
 
Ora mi ritrovo in difficolta per elaborare e interfacciare i dati.
Mi sono creato 12 query mensili con un campo mese ed ho ottenuto questa struttura: (ovviamente è la query di marzo)
 
 
PDR	         MESE	    01/03/15	02/03/15   03/03/15  04/03/15
 
00881112402701	marzo 2015	479	  452	     441	 449
00881112474278	marzo 2015	244	  360	     342	 352
00881112530190	marzo 2015	536	  504	     496	 527
 
Secondo voi riesco a rielaborare i dati in modo tale (magari creando una tabella o altri modi strani...) da ottenere i dati di tutto l'anno di un singolo PDR?
In altre parole posso "ri-unire" i valori giornalieri dei consumi per singolo PDR ?
Preciso che il valore della data in colonna (risultante dalla query a campi incrociati) non mi consente di unificare i dati come se fosse, permettetemi, il primo, secondo terzo giorno del mese ecc..
 
Spero di essermi spiegato a sufficenza e resto completamente disponibile per ogni eventuale vostro suggerimento.
grazie ancora a tutti.

puoi fare un esempio di quel che vorresti ottenere?


solo una domanda : 
 
sei in grado di costruire una  piccola applicazione in  Access che ti 
legge con una certa query la tabella  e ti scarica il risultato in un
foglio excel ? Perchè in casi come questo è il modo più elegante  per
risolvere. Per sempre. 
 
 
 
 

vai in menu "dati esterni" e clicchi sul tasto excel, e access ti crea un file excel.

 > Grazie a chiunque mi potrà aiutare a fare chiarezza,

ok sono riuscito a venirne fuori.
grazie
 

Sono veramente in difficoltà, ringrazio Akery per il prezioso aiuto ma non riesco a venirne fuori.
Cerco di spiegarmi meglio e ricapitolo il mio problema.
 
Ho una tabella che contiene circa 150 PDR (contatore gas) con un valore data giornaliero (da marzo 2015 in poi) e un valore totalizzatore.
Ho realizzato una maschera in cui selezionando il PDR riesco a visualizzare il relativo grafico e a trasferire i valori a un foglio excel.
La maschera funziona perfettamente (...si fa per dire) ma il grafico somma il valore totalizzatore, che non è quello che cerco perchè a me serve visualizzare il consumo giornaliero ottenuto quale differenza tra la lettura del giorno e quello precedente.
 
In pratica dovrei interfacciare il grafico della mia maschera con la query a campi incrociati, suggerita dal gentile Akery, che (purtroppo) mi riporta i valori giornalieri in oltre 250 colonne (01/03/2015; 02/03/2015; 03/03/2015; ecc.) e non so più come fare, sopratutto perchè, alla luce dei prossimi dati giornalieri, queste colonne aumenteranno sempre
Spero di essermi spiegato in modo chiaro e esauriente e posso eventualmente "passare" il db a chi gentilmente mi volesse aiutare.
grazie infinite

credo di aver capito che ti serva una cosa del genere:
 
https://www.dropbox.com/s/zlm5ywurwoyevx2/delta.accdb?dl=0
 
 
Akery
 
"ignazio.pilone"  ha scritto nel messaggio 
news:23793fc3-2d61-435e...@googlegroups.com...



Akery,
il tuo esempio è perfetto.
Il problema nasce dal numero di colonne della query "lettura".
Infatti, avendo io dati giornalieri dal 1/03/2015 a oggi (...e per il futuro) mi ritrovo con oltre 300 campi dati, oltretutto con nome diverso, (le colonne01/03/2015; 02/03/2015; 03/03/2015; ecc.) che non riesco più a gestire.
Ho pensato e provato a fare delle query di riepilogo mensile,ma poi mi sono demoralizzato anche se inizio a pensare che forse sia l'unica strada percorribile.
grazie per l'aiuto.
 

questo è il codice della query di marzo 2015:
 
TRANSFORM Min(delta.delta) AS MinDidelta
SELECT delta.PDR, "marzo 2015" AS MESE
FROM delta
WHERE (((Format([DataLettura],"dd")) Between #3/1/2015# And #3/31/2015#))
GROUP BY delta.PDR, "marzo 2015"
ORDER BY Format([DataLettura],"dd")
PIVOT Format([DataLettura],"dd");
 
mi rimane il dubbio se possa funzionare o se devo ulteriormente trasformare le 31 colonne dei giorni in righe.
continuo a provare, grazie.
 

non è importante il percorso, ma avere il quadro chiaro del punto di 
partenza e del punto di arrivo.
 
 
"ignazio.pilone"  ha scritto nel messaggio 
news:b38198fe-ea49-4fb5...@googlegroups.com...



le queries fanno già il lavoro che hai chiesto, ora devi lavorare sulle 
maschere per filtrare i vari PDR, in altre parole se il dato lo hai già 
ottenuto devi migliorare solo la presentazione.
Aiutaci con degli esempi.
 
Akery
 
"ignazio.pilone"  ha scritto nel messaggio 
news:db2f0e46-c6f0-4b9b...@googlegroups.com...



"....non è importante il percorso, ma avere il quadro chiaro del punto di 
partenza e del punto di arrivo.   "
 
Akery, anche se devo confessare che il tuo commento in prima lettura mi ha spiazzato, mi ha fatto capire che mi ero smarrito per strada....
Oltretutto, alla luce della mia profonda ignoranza, mi sono sentito come un agnello per le vie di Broadway (Genesis). 
 
Ho risolto interfacciando la query Delta (che è la soluzione al mio problema iniziale) con il grafico della maschera.
Ora provo pure a realizzare ciò che pensavo fosse il top inarrivabile, cioè sul grafico medesimo, che di default è annuale, dare la possibilità di scegliere una diversa periodicità, sia mensile che di periodo dal mese di / al mese di.
 
grazie di cuore.

Avrei bisogno di un ultimo aiuto per il mio grafico che attige i dati dalla query. Chiarisco che i valori giornalieri sono riferiti a più anni  e  quindi  il grafico oltre che una visualizazione mensile dovrebbe restituire anche diverse annualità.
 
Ho creato una tabella "mesi" composta da due campi :
 
  mese	           data
marzo 15	>=01/03/2015
aprile 15	>=01/04/2015
ecc.            ecc.
 
nella maschera ho messo una combo "DataDA" che attinge dalla tabella "mesi" e li copia su una casella di testo "InizioData"  con cui vorrei aggiornare la query.
 
Ad esempio se voglio i dati a partire dal primo giugno nella combo "DataDa" seleziono il mese giugno 2015 e nella casella di testo "InizioData" mi viene incollato il valore ">=01/06/2015"
 
 
Nella query ho replicato il campo lettura e nelle criteri ho messo :
Like "*" & [forms]![nomemaschera]![InizioData]
 
Se faccio cosi la query non mi restituisce nessun record mentre se nella query incollo ">=01/06/2015" funziona perfettamente.
 
Non capisco il motivo e chiedo cortesemente un vostro aiuto.
grazie