Cita:
Empezado por Ignacio
¿Como es eso de limitar los registros resultantes?
|
¿No te funcionó la consulta que te puse? Me extraña porque a mi me funcionó en Paradox y me resultaría asombroso que Paradox pudiera hacer algo que Interbase no.
En algunos motores de bases de datos existen modificadores de la cláusula SELECT para que el servidor sólo devuelva un número determinado de registros. Por ejemplo, en MySql la consulta
Código SQL
[-]
select campos from tabla limit 10
te devolverá únicamente los primeros diez registros.
Yo no conozco Interbase
pero quienes saben dicen esto:
http://www.clubdelphi.com/foros/show...itar+registros
Por otra parte, a diferencia de las bases de datos de buró, como Paradox- que manda
todos los registros resultantes al cliente -muchos servidores mandan los resultados "sobre pedido" (o pueden ser configurados para que así lo hagan), esto es, mandan sólo unos cuantos registros del resultado al cliente y conforme éste va pidiendo más, el servidor le manda los siguientes. Es por ello que muchas veces, aunque los datos comienzan a aparecer de inmediato, instrucciones como DataSet.Last demoran una eternidad porque se obliga al servidor a mandar todos los datos.
Pero fíjate que en tu caso puedes ordenar los resultados en forma descendente:
Código SQL
[-]
select FechaCot, NumeroCot
from Cotizaciones
where FechaCot <= :FechaMovimiento
order by FechaCot desc, NumeroCot desc
El
primer registro de esta consulta- que no el último -es el registro que buscas, de manera que no teniendo que usar Last, me parece que en realidad no estás trayendo todos los registros por lo que no importaría cuánto crece la tabla.
De cualquier forma a mi me gusta más la primera consulta que te puse ya que no requiere de procedimientos almacenados y sólo pide lo que quieres.
// Saludos