Access - Numerar registros de consulta

   
Vista:

Numerar registros de consulta

Publicado por Javier (4 intervenciones) el 01/03/2011 13:40:46
Hola a todos,

Resulta que estoy haciendo una pequeña base de datos en ACCESS y necesito numerar los registros de una consulta.

Mirando por San Google he encontrado que puedo hacerlo de esta manera:

Creamos un modulo con el siguiente codigo:

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

Y luego ejecutamnos la siguiente consulta en SQL:

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


Hasta aqui todo bien, el problema es que yo ya tengo una consulta hecha con el siguiente codigo:

SELECT CLASIFICACION.NOMBRE, CLASIFICACION.APELLIDOS, CLASIFICACION.CATEGORIA, CLASIFICACION.SEXO, CLASIFICACION.CLUB, Count(CARRERAS.IDCARRERA) AS [CARRERAS DISput*daS], Sum(CLASIFICACION.PUNTOSCATEGORIA) AS SumaDePUNTOSCATEGORIA
FROM CARRERAS INNER JOIN CLASIFICACION ON CARRERAS.IDCARRERA = CLASIFICACION.IDCARRERA
GROUP BY CLASIFICACION.NOMBRE, CLASIFICACION.APELLIDOS, CLASIFICACION.CATEGORIA, CLASIFICACION.SEXO, CLASIFICACION.CLUB
HAVING (((CLASIFICACION.CATEGORIA)=[ESCRIBA CATEGORIA]))
ORDER BY Count(CARRERAS.IDCARRERA) DESC , Sum(CLASIFICACION.PUNTOSCATEGORIA);

Y lo que me gustaria es ahora añadir a esa consulta el codigo de arriba que hace que numere las filas, pero no se como hacerlo....

¿Como puedo unir a la consulta que ya tengo hecha, la consulta de los dos select con union para que ademas me numere los registros de la misma?

Gracias de antemano y espero haberme explicado correctamente.

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

Numerar registros de consulta

Publicado por Hernan (2 intervenciones) el 13/03/2011 16:26:59
Perdon! pero por error presione el boton equivocado y cree un nuevo tema con la respuesta
Ahora si la respuesta

Te voy a dar una opcion asi sin probar ni nada.
Primero copia esto en un modulo

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

Segundo

Toma esa consulta que muestras y vuelvela a una consulta de creacion de tabla y luego aplicas esto:

SELECT numerarSQL([toma_un_campo_de_tu_tabla]) AS RegNum, * FROM nombre_de_tu_tabla
UNION ALL
SELECT numerarSQL(Null), * FROM nombre_de_tu_tabla WHERE 1=0

Es decir, suponiendo que llames a tu tabla tbl2011 te quedaria algo como:

SELECT numerarSQL([NOMBRE]) AS RegNum, * FROM tbl2011
UNION ALL
SELECT numerarSQL(Null), * FROM tbl2011 WHERE 1=0

Al aplicar la consulta de union veras que en los resultados se te crea un campo llamado RegNum con el numero del registro en la consulta

Tercero
Algunos consejos:
-Trata de utilizar nombres para las tablas con un prefijo
-No utilices tantas mayusculas
-Te pudiera dar mas pero tendria que ver todo lo que tienes creado


Espero te sirva
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