支持楼上! 不过如果不是用三层的话该怎么办呢? 这个还没做过,不过倒有种方法可以试一下: 根据一个关键字段来决定查询的起始截止位置! 先写个例子看看: var min,max:string; 最初min随意定义一个最小值,同理max也定义一个值。 select * from Table where id>'''+min+''' and id <='''+max+'''' 存入结果集; 同时用一sql取出其最大最小值。with temp as (select * from Table where id>'''+min+''' and id <='''+max+'''') select max(id),min(id) from temp。 下次取的时候就按这个原理,楼主不妨试一下!
参考 如果可以排序的话(要不自己加一个自增id) select top 500 from table order by id 记录最后一个排序的值ss 第二次 select * from table where id >ss and id =<ss+500 order by id ...
我就是两层结构的!先thank 楼上,现在问题?我怎么把记录读入内存中?在提取出来1!!?
分页显示 : 一个苯办法表加一个 ID ,int ,标识自增 var i : Integer ; //全局FormCreate : i := 0 ;procedure TForm1.Button1Click(Sender: TObject); //打开 ,每次显示10条记录 begin with ADOQuery1 do begin Close ; Sql.Text := 'select * from TableName where Id > ' + IntToStr(10*i) + ' and id < ' + IntToStr(10*i + 11) ; Open ; First ; end; i := i + 1 ; if TButton(Sender) = Button1 then Button1.Enabled := False ;end;procedure TForm1.Button2Click(Sender: TObject);//下一页 begin Button1Click(Button1) ; end;
如果是SQL 2000的话,可以这样写SQL 语句:select FieldName top 500 from table order by fieldName
不过如果不是用三层的话该怎么办呢?
这个还没做过,不过倒有种方法可以试一下:
根据一个关键字段来决定查询的起始截止位置!
先写个例子看看:
var min,max:string;
最初min随意定义一个最小值,同理max也定义一个值。
select * from Table where id>'''+min+''' and id <='''+max+''''
存入结果集;
同时用一sql取出其最大最小值。with temp as (select * from Table where id>'''+min+''' and id <='''+max+'''') select max(id),min(id) from temp。
下次取的时候就按这个原理,楼主不妨试一下!
如果可以排序的话(要不自己加一个自增id)
select top 500 from table order by id
记录最后一个排序的值ss
第二次
select * from table where id >ss and id =<ss+500 order by id
...
var i : Integer ; //全局FormCreate : i := 0 ;procedure TForm1.Button1Click(Sender: TObject); //打开 ,每次显示10条记录
begin
with ADOQuery1 do
begin
Close ;
Sql.Text := 'select * from TableName where Id > ' + IntToStr(10*i)
+ ' and id < ' + IntToStr(10*i + 11) ;
Open ;
First ;
end;
i := i + 1 ;
if TButton(Sender) = Button1 then Button1.Enabled := False ;end;procedure TForm1.Button2Click(Sender: TObject);//下一页
begin
Button1Click(Button1) ;
end;