这个。。。送分了
对于过万条的记录怎么显示。 
 还用DATASET吗?
------解决方案--------------------/***************************************************** 
 存储过程名称:pagination 
 功能:通用分页 
 返回值:无 
 参数: 
 	1.表名(字符串,必要参数) 
 	2.主键或者唯一约束字段(字符串,必要参数) 
 	3.需不需要进行总数统计.(布尔类型,可选参数,默认为1。 
 							1或者true是只统计总条数,不进行查询,   
 							0或者false进行分页查询,不进行统计) 
 	4.查询条件(字符串,可选参数,默认为无条件查询。 
 				注意不要加where) 
 	5.排序的字段名(字符串,可选参数,默认按照主键排序) 
 	6.页码(整数,可选参数,默认第1页) 
 	7.每页大小(整数,可选参数,默认每页10条记录) 
 	8.排序类型(整数或布尔,可选参数,默认升序排序 
 				1或true按降序排序 
 				0或false按升序排列) 
 	9.需要返回的列(字符串,可选参数,默认返回所有列) 
 *****************************************************/ 
 CREATE PROCEDURE pagination 
 @TableName varchar(255), -- 表名 
 @PrimaryKey varchar(255),--主键或者唯一约束字段 
 @DoCount bit = 0, -- 需不需要进行总数统计.1是只统计总条数,不进行查询  0进行分页查询,不进行统计 
 @StrWhere varchar(1500) =  ' ', -- 查询条件 (注意: 不要加 where)   
 @OrderField varchar(255)=@PrimaryKey, -- 排序的字段名,默认按照主键排序 
 @PageIndex int = 1, -- 页码 
 @PageSize int = 10, -- 页尺寸 
 @OrderType bit = 0 ,-- 设置排序类型, 非 0 值则降序 
 @StrGetFields varchar(1000) =  '* '-- 需要返回的列  
 AS   
 declare @strSQL varchar(5000) -- 主语句 
 declare @strTmp varchar(110) -- 临时变量 
 declare @strOrder varchar(400) -- 排序类型   
 /******************************************** 
 @DoCount传递过来的不是0,就执行总数统计 
 ********************************************/ 
 if @DoCount != 0 
 begin 
 	if @StrWhere!= ' ' 
 		set @strSQL =  'select count(*) as Total from  ' + @TableName +  ' where  '+@strWhere 
 	else 
 		set @strSQL =  'select count(*) as Total from  ' + @TableName  
 end 
 /******************************************** 
 以下的所有代码都是@DoCount为0的情况: 
 ********************************************/ 
 else 
 begin 
 	/******************************************** 
 	确定是升序还是降序 
 	********************************************/ 
 	if @OrderType != 0 
 	begin 
 		set @strTmp =  ' <(select min ' 
 		set @strOrder =  'order by  ' + @OrderField + ' desc ' 
 	end   
 	else 
 	begin 
 		set @strTmp =  '> (select max ' 
 		set @strOrder =  'order by  ' + @OrderField + ' asc ' 
 	end   
 	/********************************************** 
 	为了加快执行速度,判断一下是不是第一页 
 	***********************************************/ 
 	if @PageIndex = 1 
 	begin 
 		if @strWhere !=  ' '  
 			set @strSQL = 'select top  ' + str(@PageSize) + '  '+@StrGetFields+  ' from  ' + @TableName +  ' where  ' + @strWhere +  '  ' + @strOrder 
 		else	 
 			set @strSQL = 'select top  ' + str(@PageSize) + '  '+@strGetFields+  ' from  '+ @TableName +  '  '+ @strOrder 
 	end 
 	/********************************************** 
 	不是第一页 
 	***********************************************/	 
 	else 
 	begin 
 		if @strWhere= ' ' 
 			set @strSQL= 'select top  '+str(@PageSize)+ '  '+@strGetFields+ ' from  '+ @TableName + ' where  '+@PrimaryKey+@strTmp+ '( '+@PrimaryKey+ ') as  '+@PrimaryKey+ ' from (select top  '+str((@PageIndex-1)*@PageSize)+ '  '+@PrimaryKey+ ' from  '+@TableName+ '  '+@strOrder+ ') as T)  '+@strOrder 
 		else 
 			set @strSQL= 'select top  '+str(@PageSize)+ '  '+@strGetFields+ ' from  '+ @TableName + ' where  '+@PrimaryKey+@strTmp+ '( '+@PrimaryKey+ ') as  '+@PrimaryKey+ ' from (select top  '+str((@PageIndex-1)*@PageSize)+ '  '+@PrimaryKey+ ' from  '+@TableName