Juanjo Luna

MVP Microsoft 365 Apps & Services 2023

LinkedIn Learning Instructor

Presidente de Access User Groups España

CEO Luna-Soft

Desarrollador

Consultor Informático

Juanjo Luna

MVP Microsoft 365 Apps & Services 2023

LinkedIn Learning Instructor

Presidente de Access User Groups España

CEO Luna-Soft

Desarrollador

Consultor Informático

Blog Post

Numerar una consulta

16 de febrero de 2024 ACCESS, Consultas, El rincón de Happy

Pregunta

Quiero crear un campo calculado en una consulta y que numere los registros correlativamente ¿es esto posible?

Respuesta

Sí. Mediante el siguiente metodo es posible numerar los registros en una consulta. Para que sea mas claro usaremos el siguiente ejemplo.

Partimos de una tabla (Tabla1) con 2 campos (Dato1,Dato2 – ambos texto/10); con los siguientes datos:

Tabla1

Dato1Dato2
Hola1
Adiós2
Hasta luego2
Buenas1

la idea seria conseguir mediante una consulta el siguiente resultado:

Consulta1

RegNumDato1Dato2
1Hola1
2Adios2
3Hasta luego2
4Buenas1

Para crear el “numero de orden” usaremos esta función:

Código

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

Hacemos la consulta con el siguiente SQL:

SELECT numerarSQL([Dato1]) AS RegNum, * FROM Tabla1

Si ejecutamos la consulta nos dará la numeración de registros correlativa pero con el inconveniente de que si volvemos a ejecutarla el primer RegNum ya no será el 1, pues la variable Static nOrden sigue almacenando los datos entre las distintas llamadas a la función.

Debemos indicarle a la función que queremos empezar desde el numero 1, lo haremos con el siguiente SQL:

SELECT numerarSQL(Null), * FROM Tabla1 WHERE 1=0

Como no nos interesa tener dos consultas independientes, las juntamos en una sola con la clausula UNION, quedando así:

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

Con esto ya tendremos una consulta con los registros numerados.

Créditos

con el fin de dar a conocer el trabajo de uno de los más grandes en el mundo de Access en español, y tras solicitar su permiso, replico este artículo de Juan M Afán de Ribera. Todos los derechos y autoría corresponden a él. Access & VBA FAQ – Numerar una consulta (archive.org)

Taggs:
Related Posts
Opciones de impresión a través de código

Pregunta Sé cómo imprimir un informe mediante código y sé cómo hacer para que aparezca el cuadro de diálogo imprimir,…

Totales por página

Cómo conseguir en un informe calcular sólo el total para cada página

Write a comment