Access - SELECT TOP

 
Vista:
sin imagen de perfil

SELECT TOP

Publicado por Angel (25 intervenciones) el 23/11/2015 17:10:36
Buenas tardes, mi consulta para Access 20000 es la siguiente...

Quiero que en un informe me muestre un numero determinado de registros, por ejemplo, de todos los empleados que solo me liste 30, y en otro informe el resto de registros.

Para el primer informe en la consulta SQL añadí

SELECT TOP 30 (resto consulta)

Funciona perfectamente, pero claro, lo que quiero conseguir es que ese numero "30" lo tome de un campo numerico desde el cual si se cambia ese valor a otro distinto, la consulta lo recoja.

He probado con la función Dbúsq llamando al campo numerico y me da error.

Hay que hacerlo de otra forma?

Y para el segundo informe seria que listara los registros a partir del "31" en adelante.

Otra opcion que he probado pero no consigo dar con la formula para conseguirlo, es la de crear un campo en la consulta que enumere los registros por orden ascendente, y luego sobre los criterios indicarles los valores >30 ó <30 para que asi me se mostraran en los dos informes.


Espero haberme explicado.


Gracias,
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 8
Ha disminuido su posición en 29 puestos en Access (en relación al último mes)
Gráfica de Access

SELECT TOP

Publicado por Juan R. (18 intervenciones) el 23/11/2015 17:29:33
Buenas Angel

Es un poco lioso lo que explicas, a ver si lo he entendido bien. Quieres listar los 30 primeros registros de una consulta, pero ya teniendo un registro que lleva el número (por ejemplo el ID)? Si es así te valdría con algo así:

SELECT * FROM tu_tabla t ORDER BY t.id LIMIT 30

o bien

SELECT * FROM tu_tabla tb WHERE t.id > 30 ORDER BY t.id

Espero haberte ayudado. Si es sin campo, la primera consulta anterior te vale lo mismo, ordenando por el campo que sea (voy a seguir suponiendo el id) y la segunda podría ser algo así:

SELECT * FROM tu_tabla t1 WHERE t1.id != (SELECT t2.id FROM tu_tabla t2 ORDER BY t2.id LIMIT 30) ORDER BY t1.id

Ésta última consulta si no me he equivocado al hacerla lo que hace es que te selecciona únicamente los registros que no coincidan con los de la subconsulta (serían los 30 primeros id).

Un saludo y ya me contarás.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

SELECT TOP

Publicado por Angel (25 intervenciones) el 24/11/2015 08:43:49
Evidentemente no he puesto todos los detalles. Lo que deseo es:

Sacar un listado por orden el campo puntuación (conseguido)
Darle un numero de orden en Informe. (conseguido)

Necesito:

En el mismo Informe decirle que solo muestre los "30" primeros registros listados ya ordenados por el campo puntuacion.

Y en otro informe que muestre el resto de registros ordenados por el mismo campo puntuacion.


Para rizar el rizo, quisiera que ese valor "30" pueda ser cambiado facilmente, es decir, por ejemplo utilizando la expresión DBúsq

Gracias,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar