Access - Hacer ranking con una consulta

   
Vista:

Hacer ranking con una consulta

Publicado por Marcos (2 intervenciones) el 20/04/2010 10:10:25
Buenos días:
Soy un principiante con el Access y tengo un problema para el que necesito ayuda.
Quiero crear un ranking de ventas por oficinas. Para eso hago una consulta que agrega las ventas de cada una de las oficinas y las ordeno en orden descendente. Con eso tengo creado el ranking.
Pero me falta una última cosa, poner a lado de cada oficina el puesto que ocupa. Algo así:

Posición Oficina Ventas
1 Madrid 3.000 euros
2 Barcelona 2.000 euros
3 Cuenca 1.500 euros
Necesito ese puesto para que, cuando consulte los datos de una oficina concreta, me pueda dar todos sus datos: ventas, dirección, posición en el ranking…
¿Podríais ayudarme a poner la posición del ranking dentro de la consulta access?
Muchas gracias.
Un saludo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Hacer ranking con una consulta

Publicado por kk_PP (1 intervención) el 20/04/2010 17:38:37
Esto es una forma de numerar una consulta:
Numerar registros en una consulta

Public Function numerarSQL(nDato) As Long
'variable que no se pierde entre las distintas llamadas
Static nORDEN As Integer

If IsNull(nDato) Then 'si nDato es nulo: variable a cero y salida
nORDEN = 0
Exit Function
End If

nORDEN = nORDEN + 1
numerarSQL = nORDEN

End Function

Ejecutamos esta consulta
SELECT numerarSQL([Dato1]) AS RegNum, * FROM Tabla1
UNION ALL
SELECT numerarSQL(Null), * FROM Tabla1 WHERE 1=0
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Enrique Ramírez

RE:Hacer ranking con una consulta

Publicado por Enrique Ramírez (617 intervenciones) el 20/04/2010 21:22:01
En que estoy mal, no me funciona tu código:

1) En Tabla1 cree el campo Dato1 de tipo numérico

2) En un modulo puse este código

Option Compare Database
Public Function numerarSQL(nDato) As Long
Static nORDEN As Integer
If IsNull(nDato) Then 'si nDato es nulo: variable a cero y salida
nORDEN = 0
Exit Function
End If
nORDEN = nORDEN + 1
numerarSQL = nORDEN
End Function

3) En una consulta puse este codigo:

SELECT numerarSQL([Dato1]) AS RegNum, * FROM Tabla1 UNION ALL SELECT numerarSQL(Null), * FROM Tabla1 WHERE 1=0;

Al ejecutar la consulta me sale: Error de compilación en la expresión de consulta ‘numerarSQL([Dato1]);
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Hacer ranking con una consulta

Publicado por kk_PP (11 intervenciones) el 21/04/2010 19:01:48
Tabla1 tiene que ser una tabla existente y Dato1 un campo de esa tabla
* FROM si tiene muchos campos puede darte error, asi que sustituye * por los campos que quiras que te muestre la consulta.
Comprobado que funciona.
Saludos desde Cádiz
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Hacer ranking con una consulta

Publicado por Marcos (2 intervenciones) el 26/04/2010 08:42:26
Yo lo he probado y me funciona.
Mil gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar