我用Microsoft OLE DB Provider for SQL Server通过ADOConnection连接SQL Server数据库,采用分页机制,如下:ADOQuery.CursorLocation := clUseServer;
ADOQuery.CursorType := ctKeyset;
ADOQuery.CacheSize := 1000;
ADOQuery.SQL.Text := 'select * from test';
ADOQuery.Open;ADOQuery.Recordset.PageSize := 1000;
输出ADOQuery.Recordset.PageSize为-1使用ACCESS就可以。这是为什么?ADO的分页机制不是靠驱动实现的吗?难道SQL SERVER的ADO驱动不支持分页机制?
ADOQuery.CursorType := ctKeyset;
ADOQuery.CacheSize := 1000;
ADOQuery.SQL.Text := 'select * from test';
ADOQuery.Open;ADOQuery.Recordset.PageSize := 1000;
输出ADOQuery.Recordset.PageSize为-1使用ACCESS就可以。这是为什么?ADO的分页机制不是靠驱动实现的吗?难道SQL SERVER的ADO驱动不支持分页机制?
ADOQuery.SQL.Text := 'select * from test';
ADOQuery.Open;
ADOQuery.Recordset.PageSize:=20;
ADOQuery.Recordset.AbsolutePage:=2;//这个方法只能将ADOQuery.Recordset(注意这里是Recordset,不是ADOQuery,他们不是同步地,只有执行ADOQuery。resync([rmExact])后才同步)的当前记录移动到第21条,如果要只显示21-40这20条记录需要自己控制.(页可以说不支持分页,只是为分页提供一种可能)
ADOQuery.Recordset.PageSize
ADOQuery.Recordset.AbsolutePage
ADOQuery.SQL.Text := 'select * from test';
ADOQuery.Open;
ADOQuery.Recordset.PageSize:=20;
ADOQuery.Recordset.AbsolutePage:=2;//这个方法只能将ADOQuery.Recordset(注意这里是Recordset,不是ADOQuery,他们不是同步地,只有执行ADOQuery。resync([rmExact])后才同步)的当前记录移动到第21条,如果要只显示21-40这20条记录需要自己控制.(页可以说不支持分页,只是为分页提供一种可能)