Newsgroup: it.comp.appl.access
Titolo: help per una query

Nella combo dalla quale scelgo il CONTRATTOQUADRO per alimentare la maschera
ho una query con codice:
 
SELECT DISTINCT [QRY_RicaricoCanoniMensilizzati Crono].ACCORDOQUADRO, [QRY_RicaricoCanoniMensilizzati Crono].Anno
FROM [QRY_RicaricoCanoniMensilizzati Crono]
GROUP BY [QRY_RicaricoCanoniMensilizzati Crono].ACCORDOQUADRO, [QRY_RicaricoCanoniMensilizzati Crono].Anno
ORDER BY [QRY_RicaricoCanoniMensilizzati Crono].ACCORDOQUADRO;
 
che mi da questi risultati:
 
ACCORDOQUADRO	Anno
pippo	 2011
pippo	 2012
pippo	 2013
pluto	 2011
paperino 2012
paperino 2013
paperino 2014
paperino 2015
qui	 2012
qui	 2013
quo	 2012
quo	 2013
quo	 2014
quo	 2015
 
Mi servirebbe che la query mi restituisse le annualità presenti per ciascun CONTRATTOQUADRO cioè:
pippo	 3
pluto	 1
paperino 3
qui	 2
quo	 4
 
grazie infinite.


Mi sa che te la cavi con un count([QRY_RicaricoCanoniMensilizzati Crono].ACCORDOQUADRO)

 Il giorno venerdì 14 settembre 2012 11:29:27 UTC+2, ignazio.pilone ha scritto: > Nella combo dalla quale scelgo il CONTRATTOQUADRO per alimentare la maschera > > ho una query con codice: > > > > SELECT DISTINCT [QRY_RicaricoCanoniMensilizzati Crono].ACCORDOQUADRO, [QRY_RicaricoCanoniMensilizzati Crono].Anno > > FROM [QRY_RicaricoCanoniMensilizzati Crono] > > GROUP BY [QRY_RicaricoCanoniMensilizzati Crono].ACCORDOQUADRO, [QRY_RicaricoCanoniMensilizzati Crono].Anno > > ORDER BY [QRY_RicaricoCanoniMensilizzati Crono].ACCORDOQUADRO; > > > > che mi da questi risultati: > > > > ACCORDOQUADRO Anno > > pippo 2011 > > pippo 2012 > > pippo 2013 > > pluto 2011 > > paperino 2012 > > paperino 2013 > > paperino 2014 > > paperino 2015 > > qui 2012 > > qui 2013 > > quo 2012 > > quo 2013 > > quo 2014 > > quo 2015 > > > > Mi servirebbe che la query mi restituisse le annualità presenti per ciascun CONTRATTOQUADRO cioè: > > pippo 3 > > pluto 1 > > paperino 3 > > qui 2 > > quo 4 > > > > grazie infinite. Mi sa che te la cavi con un count([QRY_RicaricoCanoniMensilizzati Crono].ACCORDOQUADRO)
 
scusa Fair,
se scrivo Count come da te suggerito me lo corregge (mi obbliga a correggerlo)in Conteggio (che avevo già provato) e che però non mi dà gli anni ma conta altro.
Presumo di dover utilizzare DCOUNT e sto provando a inserirlo nella mia query.
 
grazie

 quo 4
 
1. DISTINCT e ORDER BY sono superfluo in questo
enunciato SQL (tutti e due effetti gi� inclusi nel GROUP BY)
e solo rallentano la query. Cambialo a
 
SELECT ACCORDOQUADRO, Anno
FROM [QRY_RicaricoCanoniMensilizzati Crono]
GROUP BY ACCORDOQUADRO, Anno
 
2. Salva questa query e per la maschera usa un altra query
sulla base della prima:
 
SELECT ACCORDOQUADRO, Count(Anno) AS QuantiAnni
FROM QueryDiSopra
GROUP BY ACCORDOQUADRO
 
Potresti anche usare una sola query con una sottoquery
ma due query separate sono pi� veloce.
 
Tenta di evitare spazi in nomi di oggetti e tutto in maisuscoli.
Fanno solo lavoro superfluo con parentesi quadri e
peggiorano la leggibilit�.
 
-- 
Ciao
Karl
*********
Access FAQ:  
http://www.donkarl.com/it
 
 

 Nella combo dalla quale scelgo il CONTRATTOQUADRO per alimentare la maschera ho una query con codice: SELECT DISTINCT [QRY_RicaricoCanoniMensilizzati Crono].ACCORDOQUADRO, [QRY_RicaricoCanoniMensilizzati Crono].Anno FROM [QRY_RicaricoCanoniMensilizzati Crono] GROUP BY [QRY_RicaricoCanoniMensilizzati Crono].ACCORDOQUADRO, [QRY_RicaricoCanoniMensilizzati Crono].Anno ORDER BY [QRY_RicaricoCanoniMensilizzati Crono].ACCORDOQUADRO; che mi da questi risultati: ACCORDOQUADRO Anno pippo 2011 pippo 2012 pippo 2013 pluto 2011 paperino 2012 paperino 2013 paperino 2014 paperino 2015 qui 2012 qui 2013 quo 2012 quo 2013 quo 2014 quo 2015 Mi servirebbe che la query mi restituisse le annualità presenti per ciascun CONTRATTOQUADRO cioè: pippo 3 pluto 1 paperino 3 qui 2 quo 4 grazie infinite.
 
grazie Karl,
ho fatto miei i tuoi ottimi e graditi suggerimenti ma ancora non ci siamo.
La query mi dà i totali anno, cioè fa la somma dei dati mensilizzati presenti e me ne indica la quantità per anno, mentre a me servirebbe sapere quanti e quali anni comprende l'ACCORDOQUADRO.
Forse così riesco a spiegarmi meglio:
Con il tuo esempio mi viene fuori questo:
 
ACCORDOQUADRO	Anno	QuantiAnni
paperino	2011	12
paperino	2012	12
paperino	2013	3
pippo    	2011	3
ecc. ecc.
 
mentre io avrei bisogno di conoscere
 
ACCORDOQUADRO	    QuantiAnni            Quali	
paperino	       	3           2011;2012;2013
pippo    	        1                 2011
 
Nella maschera che cerco di realizzare scegliendo l'accordo quadro, ad esempio paperino, la combo mi restituisce il valore (tre) che mi consente di visualizzare (tre) sottomaschere che collegate a (tre) caselle di testo di valore pari a 2011,2012 e 2013 mi consentiranno di filtrare i dati relativi a tali anni.
grazie per l'attenzione e la pazienza.


La cosa è decisamente più complicata. Non puoi ottenerla solo a query, hai bisogno del codice per concatenare tutto. L'esempio di Karl ti da il risultato che vuoi. I dati sono tutti li (l'accordoquadro, il conteggio degli anni e gli anni stessi) Usi quella come base per la maschera (accordoquadro e quanti anni, basta raggruppare) e tramite recordset ti componi le stringhe come vuoi (la concatenazione degli anni). poi usi caselle non associate e ci scrivi dentro (o una sub form, come vuoi tu). Tutto fattibile ma senza codice diventa molto più complicato (se sarà poi ottenibile, cosa che ignoro....)