** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Tus Funciones Favoritas & Aportaciones & Artí­culos
  Mensajes nuevos Mensajes nuevos RSS - Consultas: Simulación Autonumérico 1
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoConsultas: Simulación Autonumérico 1

 Responder Responder
Autor
Mensaje
admin Ver desplegable
Administrador
Administrador
Avatar

Unido: 14/Agosto/2013
Localización: Cualquier lugar
Estado: Sin conexión
Puntos: 790
Enlace directo a este mensaje Tema: Consultas: Simulación Autonumérico 1
    Enviado: 21/Agosto/2013 a las 17:21

Palabras Clave: Simulación, Simulacion, Autonumérico, Autonumerico, Numeración, Numeracion, Consulta.

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:

dato1     dato2
Hola        1
Adios       2
Taluego    2
Buenas     1

la idea seria conseguir mediante una consulta el siguiente resultado:
RegNum.    Dato1      Dato2
1              Hola          1
2              Adios         2
3              Taluego     2
4              Buenas      1

Para crear el "numero de orden" usaremos esta funcion:

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 dara la numeracion de registros correlativa pero con el inconveniente de que si volvemos a ejecutarla el primer RegNum ya no sera el 1, pues la variable Static nOrden sigue almacenando los datos entre las distintas llamadas a la funcion.

Debemos indicarle a la funcion 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 asi:

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.

====Añadido por Búho====
Este método de Marius Puig permite numerar cualquier tipo de consulta, si bien, el resultado es otra cosulta no editable.
Este método y el expuesto por Antonio Pineda, podrá ser aplicado, según las necesidades y el escenario de trabajo que cada uno estime oportuno. Gracias a ambos por vuestro esfuerzo y codigo, ya que es una pregunta que se suele hacer en los foros de programación de Access.



Editado por genoma111 - 21/Agosto/2013 a las 18:53
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable