Access - Crear consulta con número de registros limitado

Me he bloqueado con una consulta que ejecuto desde un formulario en Access. Antes al ejecutarla, tenía puesto en mi código SQL para limitar el nº de registros de salida TOP 100. Pero ahora necesito limitarlo por varios campos y desconozco cómo hacerlo en SQL. Supongo que hay que hacerlo con visual basic.

Tengo 3 campos: marca, código, aleatorio. Para cada marca hay 3 posibles códigos y en el formulario lo que le indico es la marca y el nº de registros que quiero extraer para cada uno de los códigos antes de hacer click en el botón extraer (ordenados por el campo aleatorio ). La idea es poder extraer de cada vez el nº de registros que se indique en el cuadro de texto. ¿Alguna idea? No encuentro nada por google...

Os paso una img con una idea de lo que sería la tabla y el formulario. Mil gracias!

http://subefotos.com/ver/?7c551f7f00db453d2534ba6844cce1b3o.jpg 

1 respuesta

Respuesta
2

Se me ocurre que lo hagas por medio de varias consultas unidas. Por ejemplo, si quieres sacar 10 registros del código 1, 20 del 2 y 30 del 3 de la marca "A":

SELECT TOP 10 * FROM TuTabla WHERE Marca="A" AND Codigo=1
UNION 
SELECT TOP 20 * FROM TuTabla WHERE Marca="A" AND Codigo=2
UNION
SELECT TOP 30 * FROM TuTabla WHERE Marca="A" AND Codigo=3

Si sustituyes la "X" del TOP X y los valores de filtro de marca y código por las referencias a tu formulario, deberías tenerlo solucionado.

Un saludo.


Mil gracias!! Lo de las consultas separadas lo había pensado, pero no sabía cómo escribir el código en visual basic y no en sql. Lo intento y te digo si me funciona! Gracias!

Hola,

Estoy escribiendo el código, he creado con DIM 3 variables (una para cada recuadro donde escribo el nº de registros a extraer)

Dim num1 as integer

Dim num2 as integer

Dim num3 as integer

Al escribir el Select y después num1 (para que seleccione ese número de registros que hay el cuadro de texto del formulario) me pide que ponga el Case... y todo el tiempo me dice se esperaba fin de la instrucción.

Lo mismo me estoy confundiendo... el código que me envías es para incluirlo dentro de la consulta de access en el sql? o en visual basic en el botón extraer del formulario?

Es que no sé si directamente en el sql de la consulta puedo hacer referencia a formularios...

Muchísimas gracias.

No, no, el código que te puse es una SQL de una consulta de unión de otras 3 consultas, no necesitas nada de VBA.

Te he preparado un ejemplillo para que veas cómo se haría para coger los valores de los registros que devolverá del formulario (el ejemplo no lleva ningún tipo de control ni validación de los datos de los cuadros del formulario, por lo que si metes cosas "raras" o los dejas en blanco, posiblemente "petará"): http://filebig.net/files/ySPtFgVPxr

Tienes que crear en tu BD una consulta que se llame "Consulta", da igual qué campos cojas, porque cada vez que pulses el botón, se modificará.

¡Gracias! Hola! Funciona perfectamente... es una pasada. Mira que llevo años usando access y no conocía las consultas de unión. Algo nuevo que he aprendido... mil millones de gracias!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas