Newsgroup: it.comp.lang.visual-basic
Titolo: Group By DescrizioneEvento Order By Eventi !!

Devo creare una proiezione di dati .
Contare quanti eventi sono presenti per ogni tipo di evento
QueryRp = "Select DescrizioneEvento , Count(*) as EVENTI  From Mytab 
Group By DescrizioneEvento "
  Fin qui Ok la tabella è ordinata per eventi, ho però la necessita di 
ordinare per eventi ma in questo modo mi da errore "nessun valore 
specificato per alcuni paraetri necessari"
QueryRp = "Select DescrizioneEvento , Count(*) as EVENTI  From Mytab 
Group By DescrizioneEvento Order By Eventi"
Claudio

Di che Database stai parlando....?
Access immagino.
Prova così:
QueryRp = "Select DescrizioneEvento , Count(*) as EVENTI  From Mytab
Group By DescrizioneEvento Order By Count(*) as EVENTI " 
Ciao
@Alex

 
Grazie ma non funziona
Adodc1 : "Operatore mancante nell'espressione della query Count(*) as 
Eventi"
Se sostituisco con ..... Order By DescrizioneEvento č Ok .. non capisco 
perche non fa l'ordinamento per la colonna Eventi (Campo calcolato)


Ciao Claudio,
premetto che sono anni che non utilizzo più Access e leggendo il tuo post ho 
provato ad eseguire la seguente query sul database Northwind:
SELECT EmployeeID, COUNT(*) AS Numero
FROM Orders
GROUP BY EmployeeID
ORDER BY Numero;
Numero viene interpretato come parametro.
Eseguendo la stessa query in SQL Server ottengo il risultato voluto:
EmployeeID  Numero
----------- ----------- 
5           42
9           43
6           67
7           72
2           96
8           104
1           123
3           127
4           156
(9 row(s) affected)
Infatti i Books Online riportano:
ORDER BY Clause
Specifies the sort for the result set. The ORDER BY clause is invalid in 
views, inline functions, derived tables, and subqueries, unless TOP is also 
specified.
Syntax
[ ORDER BY { order_by_expression [ ASC | DESC ] }     [ ,...n] ]
Arguments
order_by_expression
Specifies a column on which to sort. A sort column can be specified as a 
name or column alias (which can be qualified by the table or view name), an 
expression, or a nonnegative integer representing the position of the name, 
alias, or expression in select list.
L'help in linea di Access 2003 riporta questa sintassi:
[ORDER BY field1 [ASC | DESC ][, field2 [ASC | DESC ]][, ...]]]
field1, field2 The names of the fields on which to sort records.
Per curiosità ho provato a specificare 2 come argomento della clausola ORDER 
BY in modo da identificare la seconda colonna della select list e la query è 
stata risolta correttamente:
SELECT EmployeeID, COUNT(*) AS Numero
FROM Orders
GROUP BY EmployeeID
ORDER BY 2;
Infine ho provato a salvare la query senza clausola ORDER BY nell'oggetto 
QueryDef qryRaggruppamento:
SELECT EmployeeID, COUNT(*) AS Numero
FROM Orders
GROUP BY EmployeeID
Richiamandola da una seconda query specificando la clausola ORDER BY sulla 
colonna Numero, ottengo il risultato voluto:
SELECT *
FROM qryRaggruppamento
ORDER BY Numero;
Sinceramente non ricordavo questo comportamento, ma ribadisco che sono 
veramente tanti anni che non utilizzo più Access quindi non fare caso alle 
eventuali fesserie che posso aver scritto :-)
Ciao!
-- 
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo
http://italy.mvps.org

 perche non fa l'ordinamento per la colonna Eventi (Campo calcolato)
Se non ricordo male non puoi specificare un alias nelle clausole finali 
della SELECT, quindi devi ripetere l'espressione (non sono sicuro nemmeno 
che usando l'indice numerico, come indicato da Lorenzo, funzioni 
correttamente poichč secondo me interpreta l'indice come indice della 
colonna fisica e non della colonna nella SELECT).
Ciao 

 come indice della colonna fisica e non della colonna nella SELECT).
Ciao Fabio,
mi sono limitato ad eseguire la query in Access 2003 e funziona, poi non so 
che altro aggiungere :-)


Lorenzo Benaglia ha scritto:

Funziona grazie tanto a tutti quanti.