日期:2014-05-17  浏览次数:20599 次

求修改[ P_viewPage] sql2000分页存储错误
[ P_viewPage] 的 sql2000分页存储代码网上很多,(代码详见:http://bbs.csdn.net/topics/310060544)
但我在asp网站实际引用却出了问题,我想存储代码可能没错,因为毕竟用了这么多年,那可能是我传参时出错。
出错原因:统计数量和分页页面数量出错,只有7条信息,统计却有39条信息,出错详情如下:
我用7个数据为例,2个一页,第一页出现显示共有39条(正确应是7条),内容显示正确,按第二页,显示有101条内容重复显示第一页的两条内容,按第3页显示有134条,内容也正确只剩最后一个了,但4到33页都是显示最后一个商品内容。当设为4条时,第一二页显示正常,从第三页开始重复显示第二页的3条内容,一直重复到最后一页。
我设为每页10个时,显示有4页,第一页有7个正确显示,第二到第四页一直重复第一页的内容,不知错在哪里,请各位大侠帮忙,小弟不甚感激。
asp程序应该没错,因为我用另一个存储分页时正确显示,只是那个存储分页只能按主键id排序,不符合我的要求。
我的传参代码为:
  dim totalPut   '总记录
   dim CurrentPage  '当前页次
   dim TotalPages   '总页数
Dim DL_CMD
Set DL_CMD=Server.CreateObject("ADODB.Command")
With DL_CMD
.ActiveConnection=conn 
.CommandType = 4 
.CommandText="P_viewPage"
.Prepared = true              
.Parameters.Append .CreateParameter("@TableName", 200, 1, 255, "maindata")'查询表设置
.Parameters.Append .CreateParameter("@FieldList", 200, 1, 2000, "*")'查询列设置
.Parameters.Append .CreateParameter("@PrimaryKey",200,1,100,"id") '单一主键或唯一值键
.Parameters.Append .CreateParameter("@Where", 200, 1, 2000,strwhere)'查询条件设置
.Parameters.Append .CreateParameter("@Order",200,1,100,"elite desc,groupid desc,sendtime desc,id desc") '排序 如id asc,userid desc,必须指定asc或desc

.Parameters.Append .CreateParameter("@SortType", 3, 1,4 , 3)'排序规则 1:正序asc 2:倒序desc 3:多列排序方法
.Parameters.Append .CreateParameter("@RecorderCount", 3, 1,4 , 0)'记录总数 0:会返回总记录
.Parameters.Append .CreateParameter("@PageSize", 3, 1, 4, MaxPerPage)'每页条数
.Parameters.Append .CreateParameter("@PageIndex", 3, 1,4 , CurrentPage)'页码数
.Parameters.Append .CreateParameter("@TotalCount", 3, 1,4 , 1)'记返回总记录
.Parameters.Append .CreateParameter("@TotalPageCount", 3, 1,4 , 1)'返回总页数
End With

Set rsNum=DL_CMD.Execute()
totalPut=rsNum(0)
rsNum.Close()

------最佳解决方案--------------------
在数据库里调用存储过程看看 实际执行的sql语句吧,应该是查询数据出了问题导致的
------其他解决方案--------------------
.Parameters.Append .CreateParameter("@PrimaryKey",200,1,100,"id") '单一主键或唯一值键
不符合要求 怎么还是ID?

------其他解决方案--------------------
那应该是什么
------其他解决方案--------------------
哪个列是主键? create table 语句发上来看看
------其他解决方案--------------------
单一主键或唯一值键 这个是什么意思
因为我表中只设单一主键就是id  
唯一值键是不是说我在表中再设一个列,把值设为唯一值,用这个列传这条参数
------其他解决方案--------------------
我设了一个唯一值键的列,用这个代替id ,出错,第二页就找不到相应的参数
ADODB.Recordset 错误 '800a0cc1' 

在对应所需名称或序数的集合中,未找到项目。 

/zs/zs.asp,行 259 
就是totalPut=rsNum(0)这一行,无法取得总条数参数值
Set rsNum=DL_CMD.Execute()
totalPut=rsNum(0)
rsNum.Close()

------其他解决方案--------------------
主键或唯一键 ,id 就可以了 这么说 。
------其他解决方案--------------------
就是不知哪出错
------其他解决方案--------------------
引用: