关于使用 存储过程 分页的问题,请大家帮帮忙

Larrystudy 2006-05-17 02:55:31
下面的存储过程以及在ASP中调用时都没有错误出现,我认为是 OK 的。
问题是:

当我
Set rs=myComm.Execute

response.write rs.recordCount

无法输出 rs.recordCount的值,请大家帮忙看看

-------------------------------------------------------------

存储过程如下:

CREATE PROC myx_prPageRecordset
@queryStr nvarchar(1000),
@keyField nvarchar (200),
@pageSize int,
@pageNumber int
AS
BEGIN
DECLARE @sqlText AS nvarchar(4000)
DECLARE @sqlTable AS nvarchar(4000)
SET @sqlTable = 'SELECT TOP ' + CAST((@pageNumber + 1) * @pageSize AS varchar(30)) + ' ' + @queryStr
SET @sqlText =
'SELECT TOP ' + CAST(@pageSize AS varchar(30)) + ' * ' +
'FROM (' + @sqlTable + ') AS tableA ' +
'WHERE ' + @keyField + ' NOT IN(SELECT TOP ' +
CAST(@pageNumber * @pageSize AS varchar(30)) + ' ' + @keyField +
' FROM (' + @sqlTable + ') AS tableB)'
print @sqlText
EXEC (@sqlText)
END

GO

在 ASP 中调用如下:
<%
PageSize=10
myPage=2

set myComm = server.CreateObject("adodb.command")
myComm.ActiveConnection = conn
myComm.CommandType = adCmdStoredProc
myComm.CommandText = "myx_prPageRecordset"
myComm.prepared=True

sql=" * from cw82014.hyxx order by newsid DESC"
myComm.Parameters.Append myComm.CreateParameter("@queryStr", adVarWChar, adParamInput, 1000, sql)

myComm.Parameters.Append myComm.CreateParameter("@keyField", adVarWChar, adParamInput, 200, "[newsid]")

myComm.Parameters.Append myComm.CreateParameter("@pageSize", adVarWChar, adParamInput, 1000, PageSize)

myComm.Parameters.Append myComm.CreateParameter("@pageNumber", adVarWChar, adParamInput, 1000, myPage - 1)

Set rs=myComm.Execute

response.write rs.recordCount
%>
...全文
194 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
liuzhanpeng 2006-05-18
  • 打赏
  • 举报
回复
将Connection对象的CursorLocation设置为adUseClient就可以了
liuzhanpeng 2006-05-18
  • 打赏
  • 举报
回复
使用 RecordCount 属性可确定 Recordset 对象中记录的数目。ADO 无法确定记录数时,或者如果提供者或游标类型不支持 RecordCount,则该属性返回 –1。读已关闭的 Recordset 上的 RecordCount 属性将产生错误。

如果 Recordset 对象支持近似定位或书签(即 Supports (adApproxPosition) 或 Supports (adBookmark) 各自返回 True),不管是否完全填充该值,该值将为 Recordset 中记录的精确数目。如果 Recordset 对象不支持近似定位,该属性可能由于必须对所有记录进行检索和计数以返回精确 RecordCount 值而严重消耗资源。

Recordset 对象的游标类型会影响是否能够确定记录的数目。对仅向前游标,RecordCount 属性将返回 -1,对静态或键集游标返回实际计数,对动态游标取决于数据源返回 -1 或实际计数。
Larrystudy 2006-05-18
  • 打赏
  • 举报
回复
这个问题我想它已经死了
Larrystudy 2006-05-18
  • 打赏
  • 举报
回复
难道真的没有可以解决了吗

帮忙啊
Larrystudy 2006-05-18
  • 打赏
  • 举报
回复
什么都不显示,真是气死我了
什么都不能 2006-05-17
  • 打赏
  • 举报
回复
楼主,你得到的值是什么,是-1?
Larrystudy 2006-05-17
  • 打赏
  • 举报
回复
再顶

希望可以解决问题
Larrystudy 2006-05-17
  • 打赏
  • 举报
回复
谢谢 ilik(煊烨※涅磐)

我按照你的写了,可还是没有结果显示出来啊

再请帮帮忙
煊烨 2006-05-17
  • 打赏
  • 举报
回复
Set rs=myComm.Execute
rs.Close()
response.write rs.recordCount
Larrystudy 2006-05-17
  • 打赏
  • 举报
回复
再顶一下
Larrystudy 2006-05-17
  • 打赏
  • 举报
回复
晕了,难道是分少了吗?

为什么没有一个人愿意帮我一下呢
Larrystudy 2006-05-17
  • 打赏
  • 举报
回复
自己顶一下,大家帮忙看看啊

在线等......
跑腿,在古代中国从事这个职业的称为差役或仆役。而逐渐发展成为一种行业可以追溯到欧美,以同城快递物流为主要业务。近几年来,随着中国城市化的发展,生活节奏加快、人们互相寄件的频率也越来越频繁,十分需要一些专门平台来为人们解决物品来往中产生的问题,提供优质、高效、环保的服务。所以,在国内的市场需求下,跑腿行业顺理成章的在国内慢慢发展起来。有资料显示,跑腿公司最早发源于 1997 年的新加坡,然后在国外许多发达国家慢慢的发展起来,现在的普及度已经非常高。我国的跑腿公司大概在 2005 年下半年兴起,但是发展速度之快也可以算得上是星火燎原。早在 200 多年前,英国著名经济学家亚当·斯密就提出过,随着人们生活水平的提高,社会上的分工与专业化将会日益普遍,国民财富的增长正是因为分工与专业化所促进的。首先跑腿公司的出现表现出社会分工近一步细化,其次,跑腿公司这一类新兴行业的出现,也促进了社会分工的进一步细化,所以说跑腿公司的存在意义是有其根本依据的。这样的新兴服务行业不止能够满足一部分社会需要,也能让一部分人的就业问题得到解决,还可以推动行业技术发展,是有其存在和发展的价值的。

28,408

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧