با سلام
برای مورد اول
select top(n) * from tablename where ..
برای مورد بعدی من متوجه منظورت نشدم. یعنی مثلا اول 20 رکورد انتخاب کنی بعد اگه از 20 رد شدی دوباره به 20 قبلی اضافه بشه؟
یعنی 21 تا select شه و الی آخر؟
به نظر من این کار یه کم غیر عادیه . برای این کار دستور SQL رو باید تو خود برنامه بنویسی
n:=20;
ADOQUERY!.close;
ADOQuery1.SQL.text:='select top ('+#39+inttostr(n)+#39+') * from tablename';
ADOQuery1.open;
حالا اگه به رکورد آخر رسیدیم n رو تو برنامه به n+1 تغییر بدیم.