SQL ACCESS

Experto:
Usuario:
Fecha: 02/12/2008
Valoración: (4,00 sobre 5) Categoría: Microsoft Access
02/12/2008
navarik, usuario preguntando en Microsoft Access
Usuario
Necesito realizar una consulta en Access que me devuelva los "n" primeros registros a partir de los "m" registros. Siendo por supuesto n y m numeros enteros positivos.

Particularizando a m=2 y n=3

Esto en mysql sería:

select * from tabla limit 2,3

que me daria los registros 3º, 4º y 5º

En access tengo la opción TOP n siendo n el numero de registros que quiero obtener pero se me queda coja ya que no puedo indicarle cuantos registros iniciales quiero desestimar

Para esto no puedo suponer nada sobre la tabla sobre la que voy a realizar la consulta, es decir, no puedo jugar con un campo id, ni con ningún campo de la tabla.

Un saludo
02/12/2008
navarik, experto respondiendo en Microsoft Access
Experto
Bien, tal y como lo planteas resulta dificil (en access), la única forma que conozco de hacer lo que quieres pasa por poner el puntero en alguna parte del recordset, y para ello es necesario hacer referencia a algún campo de la tabla. Ej.:

SELECT Clientes.IdCliente, (Select Count (*) FROM [Clientes] as Temp WHERE [Temp].[IdCliente] < [Clientes].[IdCliente])+1 AS RowNum
FROM Clientes;

De esta forma obtenemos un campo RowNum autonúmerico, y a partir de aqui solo habria que indicar a RowNum un criterio >n para excluir registros iniciales, junto con TOP n creo que conseguimos algo similar a lo que quieres. Visto SQL quedaria asi:

SELECT TOP 17 Clientes.IdCliente, (Select Count (*) FROM [Clientes] as Temp
WHERE [Temp].[IdCliente] < [Clientes].[IdCliente])+1 AS RowNum
FROM Clientes
WHERE ((((Select Count (*) FROM [Clientes] as Temp
WHERE [Temp].[IdCliente] < [Clientes].[IdCliente])+1)>5));

En esta consulta excluimos los 5 primeros registros del recordset y solo mostramos los 17 siguientes registros.

Un cordial saludo
Raul
02/12/2008
navarik, usuario preguntando en Microsoft Access
Usuario
Muy Bien. Me ha sido de gran utilidad
Enlaces patrocinados