codegooglecom / easyasp

Automatically exported from code.google.com/p/easyasp
0 stars 0 forks source link

请教,为什么数据会出错了? #13

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
下面是我调用easp类的代码,可奇怪的是在最后一页时总是出�
��,出错的提示是:

ADODB.Recordset 错误 '800a0bcd' 

BOF 或 EOF 
中有一个是“真”,或者当前的记录已被删除,所需的操作��
�求一个当前的记录。 

再有一个问题就是:若我用如下while取出数据时,分页(Easp.d
b.PageSize=3),第一页会
将全部的数据取出来,而第二页就会从第四条记录开始到最��
�一条记录,而三页就从第七条记录
开始到最后一条记录...
do while not rs.eof
rs.movenext
loop

第三个问题就是:
Set rs = Easp.db.GPR(0:3,Array
("ArticleClass:ClassID,ClassName,ParentID","","ClassID desc","ClassID"))
若我是在0那个参数后加冒号再加3后,就会出现错误:
Microsoft VBScript 编译器错误 错误 '800a03ee' 

缺少 ')' 

/test/easp/index.asp,行 18 

Set rs = Easp.db.GPR(0:3,Array
("ArticleClass:ClassID,ClassName,ParentID","","ClassID desc","ClassID"))
----------------------^

上面三个问题请指教是什么原因呢?多谢了~~

'------------------------------------------------------
下面是代码
<%
Dim rs,Conn

Easp.db.dbConn = Easp.db.OpenConn("access","C:\web 
Test\test\Easp\Database\kklpksyg.mdb","")
Set Conn = Easp.db.dbConn
Easp.db.PageSize=5
Set rs = Easp.db.GPR(0,Array
("ArticleClass:ClassID,ClassName,ParentID","","ClassID desc","ClassID"))
for i = 0 to rs.pagesize
    if rs.eof then
    exit for
    end if
  Response.Write ("<br>ClassID is:" & rs("ClassID") & " ClassName is:" & rs
("ClassName") & "<br />")   
  rs.movenext()   
rs.movenext
next
Easp.db.SetPager "default", " <div class=""pager"">{first}{prev}{liststart}
{list}{listend}{next}{last}  共{recordcount}条, 每页{pagesize}条, 
{pageindex}/{pagecount}页, 转到{jump}页 </div>", Array
("jump:select","jumplong:10")
Easp.w Easp.db.GetPager("default")
%>

Original issue reported on code.google.com by vroo...@gmail.com on 17 Mar 2009 at 7:35

Attachments:

GoogleCodeExporter commented 9 years ago
先来说说你帖的代码本身的问题:
<%
Dim rs,Conn

Easp.db.dbConn = Easp.db.OpenConn("access","C:\web 
Test\test\Easp\Database\kklpksyg.mdb","")
Set Conn = Easp.db.dbConn 
*如果Conn在后面没有用到,这里就不用赋值了,前面也不用定
义*
Easp.db.PageSize=5
Set rs = 
Easp.db.GPR(0,Array("ArticleClass:ClassID,ClassName,ParentID","","ClassID 
desc","ClassID"))
for i = 0 to rs.pagesize  *这里应该是for i = 1 to*
    if rs.eof then
    exit for
    end if
  Response.Write ("<br>ClassID is:" & rs("ClassID") & " ClassName is:" & rs
("ClassName") & "<br />")   
  rs.movenext()   
rs.movenext     *这里为什么有两个movenext?* 
next
Easp.db.SetPager "default", " <div 
class=""pager"">{first}{prev}{liststart}{list}
{listend}{next}{last}  共{recordcount}条, 每页{pagesize}条, 
{pageindex}/{pagecount}
页, 转到{jump}页 </div>", Array("jump:select","jumplong:10")   
*定义分页样式最好在开始处*
Easp.w Easp.db.GetPager("default")  
*default样式可用Easp.db.GetPager("")调用*
%>

所以修改后可以正常运行的代码如下:
<%
Easp.db.dbConn = Easp.db.OpenConn("access","C:\web 
Test\test\Easp\Database\kklpksyg.mdb","")
Easp.db.SetPager "default", " <div 
class=""pager"">{first}{prev}{liststart}{list}
{listend}{next}{last}  共{recordcount}条, 每页{pagesize}条, 
{pageindex}/{pagecount}
页, 转到{jump}页 </div>", Array("jump:select","jumplong:10")
Easp.db.PageSize=5
Dim rs
Set rs = 
Easp.db.GPR(0,Array("ArticleClass:ClassID,ClassName,ParentID","","ClassID 
desc","ClassID"))
for i = 1 to rs.pagesize
  if rs.eof then exit for
  Response.Write ("<br>ClassID is:" & rs("ClassID") & " ClassName is:" & rs
("ClassName") & "<br />")   
  rs.movenext()
next
Easp.w Easp.db.GetPager("")
%>

另外关于你前面提到的三个问题:

第一个问题是i循环的赋值问题导致最后一页读取到了不存在�
��数据。

第二个问题:While循环也需要i配合的
<%
i = 0
While Not rs.Eof And (i<rs.PageSize)
  '......
  i = i + 1
  rs.MoveNext()
Wend
%>

第三个问题:GPR方法的第一个参数只能是数字或者字符串,��
�果加了冒号肯定就要加引号了
Easp.db.GPR("0:3",Array("ArticleClass:ClassID,ClassName,ParentID","","ClassID 
desc","ClassID"))

Original comment by Tainray@gmail.com on 17 Mar 2009 at 11:59

GoogleCodeExporter commented 9 years ago
多谢~~~是我太大意了。

Original comment by vroo...@gmail.com on 17 Mar 2009 at 12:41

GoogleCodeExporter commented 9 years ago
请问,如果将代码改成Ajax的话,那应该对代码如何修改,按�
��帮助来做,总是出错。

<%
Easp.db.dbConn = Easp.db.OpenConn("access","C:\web 
Test\test\Easp\Database\kklpksyg.mdb","")
Easp.db.SetPager "default", " <div 
class=""pager"">{first}{prev}{liststart}{list}
{listend}{next}{last}  共{recordcount}条, 每页{pagesize}条, 
{pageindex}/{pagecount}
页, 转到{jump}页 </div>", Array("jump:select","jumplong:10")
Easp.db.PageSize=5
Dim rs
Set rs = 
Easp.db.GPR(0,Array("ArticleClass:ClassID,ClassName,ParentID","","ClassID 
desc","ClassID"))
for i = 1 to rs.pagesize
  if rs.eof then exit for
  Response.Write ("<br>ClassID is:" & rs("ClassID") & " ClassName is:" & rs
("ClassName") & "<br />")   
  rs.movenext()
next
Easp.w Easp.db.GetPager("")
%>

Original comment by vroo...@gmail.com on 17 Mar 2009 at 1:40

GoogleCodeExporter commented 9 years ago
Ajax只是在当前页面上通过点击链接调用js函数再异步载入数��
�,所以分页的这一页上面只涉及到链接调用的
问题:
Easp.db.Pager("<div 
class=""pager"">{first}{prev}{liststart}{list}{listend}{next}
{last}  共{recordcount}条, 每页{pagesize}条, {pageindex}/{pagecount}
页, 转到{jump}页 </div>", 
Array("jump:select","jumplong:10","link:javasctipt:jsGo
(*)")")
同时在在页面上定义javascript函数jsGo(),Ajax部分以jQuery库为例
:
<script type="text/javascript">
function jsGo(p){
    var url = "data.asp?page="+p+"&radom="+rdm();
    $.get(url,function(data){
        //这里是分页数据载入成功后的更新操作
    });
}
function rdm(){
    return (new Date().getTime());
}
</script>
同时在data.asp中,根据URL参数page来显示不同的数据即可(可用E
asp.db.GPR函数)。

Original comment by Tainray@gmail.com on 18 Mar 2009 at 6:20