Mostrando las entradas con la etiqueta row_number. Mostrar todas las entradas
Mostrando las entradas con la etiqueta row_number. Mostrar todas las entradas

viernes, 2 de agosto de 2013

ROWNUM en ACCESS (solución)

Al parecer muchos han buscado este tema y si bien ya había puesto una posible solución creo no fue la mejor solución para todos.

Pues bueno, creo que esta les funcionará mejor.

Primero, tengo esta tabla:


Así, sin más, solo 2 columnas con datos cualesquiera de tipo texto.


Ahora, en Access creamos 2 funciones públicas:


Declaran esta variable de tipo pública (ID)



Aquí el código para que lo copien y peguen:

Public Function RN(valor As Variant) As Double
    If valor = 1 Then
        ID = 0
        RN = ID
    End If
End Function

Public Function Rownum(valor As Variant) As Double
   ID = ID + 1
   Rownum = ID
End Function

Y solo queda usarlo.... desde código VB el ejemplo:



Bueno, dentro de la función test() hago un primer Select y tal cual me traigo todo de la tabla y lo pinto en la ventana del debug, excepto la primera columna, que el dato no nos sirve para nada pero es necesario para que la función Rownum funcione correctamente.

En el segundo Select hago un filtro por datos y el Rownum que me genera por cada renglón es correcto.

Bueno, este ejemplo es generándolo por código, pero también por consulta en Access


Y el resultado


Pues bueno, espero sea esto lo que realmente necesitan.

Comentarios, mejoras o sugerencias ... 





sábado, 14 de julio de 2012

ROWNUM en MS ACCESS

Buscando cómo obtener en ACCESS el número de registro que estoy obteniendo en una consulta por SQL, no encontré ninguna función que me lo dé. El concepto de ROWNUM es creo solo para ORACLE, pero para MS ACCESS debería de haber algo similar ... no lo encontré.

Pero por SQL lo puedo obtener. Suponiendo que tengo la siguiente tabla:




Y deseamos obtener el Id del empleado, nombre, apellido y dirección, de todos los empleados de USA, pero queremos que vayan numerados.











Para esto utilizamos la siguiente sentencia SQL:


SELECT   a.employeeid,
         a.firstname,
         a.lastname,
         a.address,
         (SELECT   COUNT ( * ) + 1
            FROM   employees b
           WHERE   b.country = 'USA' AND b.employeeid < a.employeeid) as ROWID
  FROM   employees a
 WHERE   a.country = 'USA'



Revisen también esta posibilidad de hacerlo:  ROWNUM en ACCESS


Translate