C/S 两层中TAdoDataSet 怎么分段下载记录?
解决方案 »
- 如何获取 treeview中,父节点和子结点的值?
- Delphi 7 中怎么没有了Socket控件,谁知道哪里有,怎么加?
- 做好的程序,我在主界面上放上businessskin 控件,为什么菜单相没了啊,
- 想对edit控件 加些功能 如何实现
- 有兴趣的看看。
- 有趣的编程逻辑题,讨论者有高分,up者也有分+1,,呵呵,讨论,讨论
- 征集解决方案:准备做一套查询系统,C/S结构同B/S结构相结合;用Delphi作一套,再用Asp作一套;还是....
- 一个窗体中有2个DBGrid控件,怎样能让他们2个分别实现鼠标的滚动?
- MS office系列用VB还是DELPHI写的? 好像有分歧
- 关于ImageList在DFM里面生成的Bitmap的16进制码怎么转成图片?
- 怎样把delhi的开发环境变的和visual stduio一样的风格啊
- DLL高手请进,数据模板问题
const
Options : TGetRecordOptions = [grMetaData,grReset];var
RecsOut: integer;
begin
......
ClientDataSet1.Close;
ClientDataSet1.Data := DataSetProvider1.GetRecords(5, RecsOut, Byte(Options));
Edit1.Text := inttostr(RecsOut);
ClientDataSet1.Open;
......
end;2、http://bdn.borland.com/article/0,1410,20846,00.html
http://bdn.borland.com/article/0,1410,22571,00.html
Try
AdoDataSet.Open;
AdoDataSet.Recordset.PageSize:=10; //每页10笔记录
AdoDataSet.Recordset.AbsolutePage:=2; //设置当前为第2页
ShowMessage(AdoDataSet.Fields[0].AsString); //区第2页第一笔记录
AdoDataSet.Recordset.PageCount; //得到总页数
设定MaxRecords后, Delphi 会将数据集的CommandText解释执行如下:
SET ROWCOUNT 10 SET NO_BROWSETABLE ON
你的数据集的CommandText(SELECT * FROM tblItem ...) 我如何取到10条之后的呢?TO: cdhuanglei(落花岛上花倒落)
我要的是C/S结构中的两层的TADODataSet的实现, 并且既使三层中, 你的写法也是有问题的,你实现的只是从中间层到客户端的分段下载记录, 在这之前, 其实所有记录已下载到中间层了. 所以在三层中其实也有这个问题.
你的方法好像也不行, 不只你是否这样实现过?
其实我自己也写了一个这样的控件, 但是觉得效果不是很明显. 不知你是否有什么好的思路?
个可擦写的属性
P a g e C o u n t 数据表中所有的数据除以P a g e S i z e之后所得到的P a g e页数。这是
属性
P a g e S i z e 指明每一个P a g e中包含的数据笔数。这是一个可擦写的属性
因此要使用A D O页面定位功能,程序员只需要使用下面的步骤即可:
□ 取得A D O的R e c o r d s e t对象。
□ 设定R e c o r d s e t对象的P a g e S i z e属性值,以决定一个页面包含多少笔数
□ 存取R e c o r d s e t对象的P a g e C o u n t以便了解数据表被切割成多少的页面
□ 设定R e c o r d s e t对象的A b s o l u t e P a g e属性值以决定要存取的页面数据。
AbsolutePage, PageSize 的方式我试了一下, 好像不行!
/*--分页方法:回复人: j9988(j9988)
--*/
declare @sqlstr nvarchar(4000), --查询字符串
@pagecount int, --第N页
@pagesize int --每页行数select @pagecount=3,@pagesize=10
,@sqlstr='select * from sysobjects'set nocount on
declare @P1 int, --P1是游标的id
@rowcount intexec sp_cursoropen @P1 output,@sqlstr,@scrollopt=1,@ccopt=1,@rowcount=@rowcount output
select @rowcount as 总行数,ceiling(1.0*@rowcount/@pagesize) as 页数,@pagecount as 当前页
set @pagecount=(@pagecount-1)*@pagesize+1
exec sp_cursorfetch @P1,16,@pagecount,@pagesize
exec sp_cursorclose @P1
谢谢你的回复, 我看看是否满足我的需求.
如何处理呢?
SET @SQL='SELECT TOP '+cast(@每页大小 AS varchar)+' * FROM 表 WHERE 主键列 NOT IN (SELECT TOP '+cast((@每页大小-1)*@第几页 AS varchar)+' 主键列 FROM 表 )'EXEC(@SQL)