Access & VBA FAQ
| | | |
Indice de temas
Tablas
Consultas
Formularios
Informes
Macros
Módulos
Base de datos
Miscelánea
API
Utilidades
Problemas
Cadenas
Fechas
Todos los temas
Consultas : Numerar una consulta
Autor/es:
Màrius Puig
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:
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.

Ejemplos:

 

Temas relacionados:

 

Última actualización: 6/6/2005