Access - Seleccionar Registros Intermedios de Una Consulta

 
Vista:

Seleccionar Registros Intermedios de Una Consulta

Publicado por Adel Castillo (1 intervención) el 14/08/2007 03:00:57
Hola:
Tengo la siguiente inquietud para desarrollar con Access.
Quiero hacer una Consulta SELECT, que me seleccione 20 registros de una condición. Eso se soluciona facilmente con la Clausula TOP o BOTTON, para los registros superiores o inferiores.
Ahora que se puede hacer para seleccionar registros intermedios.
Yo quiesiera que la consulta me seleccione digamos partiendo del registro 20 de la condición y me filtre hasta el registro numero 40 digamos.
Yo programo con Visual Basic Net y lamentablemente estoy metido en un proyecto que no puedo utilizar SQL SERVER, donde facilmente se podría solucionar esta iniciativa.
Me tope con tener una BD enoooorme!! en ACCESS!, ya anda por los 80000 registros y cargar todos estos en un Data Set, para mostralos en un Data Grid por ejemplo, me parece muy mal pensado, ya que sería saturar la memoria de mi computadora, asi que deseo mostrar al usuario solo los registros que el desea ver.
Eso solo puedo lograr con ese tipo de consulta que les describo.
Bueno espero me entiendan y exista un buen programador en la Web que me explique solo la clausula que debo usar para realizar este acometido.
Gracias y muchos saludos a la gente que le gusta divertirse con la programación.
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
Imágen de perfil de Alejandro

Seleccionar registros intermedios en una consulta

Publicado por Alejandro (4142 intervenciones) el 17/08/2023 18:20:28
En Access, no hay una función directa equivalente a la cláusula `OFFSET` que se encuentra en SQL Server para seleccionar registros intermedios en una consulta. Sin embargo, puedes lograr este resultado utilizando una combinación de subconsultas y cláusulas `TOP`.

Aquí tienes un ejemplo de cómo puedes hacerlo:

Supongamos que tienes una tabla llamada "MiTabla" y deseas seleccionar los registros del 20 al 40:

1
2
3
4
SELECT TOP 20 * FROM (
    SELECT TOP 40 * FROM MiTabla ORDER BY MiCampo ASC
) AS Subconsulta
ORDER BY MiCampo DESC;

Explicación:

1. La subconsulta interna `SELECT TOP 40 * FROM MiTabla ORDER BY MiCampo ASC` selecciona los primeros 40 registros de la tabla ordenados de manera ascendente por el campo "MiCampo".

2. La consulta principal envuelve la subconsulta y selecciona los primeros 20 registros de la subconsulta (del 20 al 40 originalmente) pero ahora los ordena de manera descendente por el campo "MiCampo". Esto reorganiza los registros para que obtengas los registros del 20 al 40.

Este enfoque selecciona los registros intermedios que deseas sin cargar todos los datos en un `DataSet`. Sin embargo, ten en cuenta que esta técnica puede no ser la más eficiente para grandes cantidades de datos, ya que Access no optimiza consultas complejas de la misma manera que SQL Server. Si trabajas con una base de datos grande y necesitas consultas más eficientes, podría considerarse migrar a SQL Server o implementar técnicas de paginación más avanzadas.
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