版主高手进(难道sql版无高手了)
--求助   随机排序分页问题   (本人愚钝为什么用邹老大的方法就不对呢???) 
 --我的结果每次刷新都要更改,没有达到同一个用户刷新不变的效果希望那个帮忙 
 --就是随机分页刷新显示结果不变,很简单的原理相信人多人都遇到过    
 --QQ:12466160可加我,问题捆饶我很久了 
 Set   Rs=server.CreateObject( "Adodb.RecordSet ") 
 Set   Cm=Server.CreateObject( "Adodb.Command ") 
 Cm.CommandType=4 
 Cm.ActiveConnection=iConn 
 Cm.CommandText= "sp_PageView " 
 Cm.parameters(1)= "new " 
 Cm.parameters(2)= "newsid " 
 Cm.parameters(3)=ids                                                                               'ids大于0的 
 Cm.parameters(4)=10 
 Cm.parameters(5)= "newsid,title " 
 Cm.parameters(6)= "   newsid> 0    " 
 Cm.parameters(7)= "UserToday "                                  '用户名,这里指定用户是为了不变 
 Cm.parameters(8)=2 
 Rs.CursorLocation=3 
 Rs.LockType=1 
 Rs.Open   Cm 
 ---上面是我写的调用部分   
 下面是邹老大写的随机排序分页存储过程   
 CREATE   PROC   sp_PageView 
 @tbname               sysname,                                    --要分页显示的表名 
 @FieldKey         nvarchar(1000),                  --用于定位记录的主键(惟一键)字段,可以是逗号分隔的多个字段 
 @PageCurrent   int=1,                                          --> 0表示要显示的页码,如果为0表示仅清理缓存数据的临时表,不返回数据,其他值代表重建缓存数据的临时表 
 @PageSize         int=10,                                       --每页的大小(记录数) 
 @FieldShow      nvarchar(1000)= ' ',            --以逗号分隔的要显示的字段列表,如果不指定,则显示所有字段 
 @Where               nvarchar(1000)= ' ',            --查询条件 
 @UserName      sysname= ' ',                           --调用查询的用户名 
 @PageCount      int   OUTPUT                        --总页数 
 AS 
 SET   NOCOUNT   ON 
 --检查对象是否有效 
 IF   OBJECT_ID(@tbname)   IS   NULL 
 BEGIN 
 RAISERROR(N '对象 "%s "不存在 ',1,16,@tbname) 
 RETURN 
 END 
 IF   OBJECTPROPERTY(OBJECT_ID(@tbname),N 'IsTable ')=0 
 AND   OBJECTPROPERTY(OBJECT_ID(@tbname),N 'IsView ')=0 
 AND   OBJECTPROPERTY(OBJECT_ID(@tbname),N 'IsTableFunction ')=0 
 BEGIN 
 RAISERROR(N ' "%s "不是表、视图或者表值函数 ',1,16,@tbname) 
 RETURN 
 END   
 --分页字段检查 
 IF   ISNULL(@FieldKey,N ' ')= ' ' 
 BEGIN 
 RAISERROR(N '分页处理需要主键(或者惟一键) ',1,16) 
 RETURN 
 END   
 --其他参数检查及规范 
 IF   ISNULL(@PageSize,0) <1   SET   @PageSize=10 
 IF   ISNULL(@FieldShow,N ' ')=N ' '   SET   @FieldShow=N '* ' 
 IF   ISNULL(@Where,N ' ')=N ' ' 
 SET   @Where=N ' ' 
 ELSE 
 SET   @Where=N 'WHERE   ( '+@Where+N ') '   
 --分页数据缓存临时表状态检测 
 DECLARE   @tempTable   sysname,@TempField   sysname,@TempTableDate   datetime 
 SET   @tempTable=QUOTENAME(N '## ' 
 +RTRIM(LEFT(HOST_NAME(),50)) 
 +N '_ '+RTRIM(LEFT(CASE   WHEN   ISNULL(@UserName,N ' ')=N ' '   THEN   SUSER_SNAME()   ELSE   @UserName &nb