1、本人曾用Idc/Htx 开发过Web 应用程序,Idc/Htx 功能有限,其中最大的缺点是对满足条件的纪录只能一次性显示出来,假设有一万条纪录,像Idc/Htx 那样一次全部显示出来。简直是不可忍受的。Asp 功能强大,对此问题应付自如。 一. 表 结 构 定 义: 表 名:Product 字 段 名: 产 品 编 号:Product_Id 产 品 名 称:Product_Name 二. 功 能 描 述: 用户输入产品号,不必输入全名,采用模糊查询的方法,找到满足条件的纪录。 三. 程 序 脚 本 整个程序有三个 Asp 文件(省略H
2、tml语言部分) 1. 用户查询数据输入表单:Input.Asp -----用户输入产品编号 < Form Method="Post" Action="/Cgi/Prod.Asp" > < Input Type="Text" Name="Id" Size="20" > < Input Type="Submit" Value="Submit" Name="B1" > < /Form > 2.分页处理程序之一:Prod.Asp ----用户提交表单Input.Asp后触发 < %Cid=Trim(Request.For
3、m("Id"))% > < %Set Rlt = Createobject("Adodb.Recordset")% > ******创建Recordset对象 < %Sql="Select * From Product Where Product_Id Like ' "& Cid &"'+'%'" > < %Rlt.Open Sql,"Uid=Ncgi;Pwd=Sql;Dsn=Tcgi",1% > ******执行Sql语句 < % If Rlt.Pagecount< 1 Then % > < H2 >没有纪录< /H2 >
4、 < A Href="Javascript:History.Back()" > 返回< /A > < %Else% > ---------------------------------------------------------------- *****以下显示查询信息:显示样式: *****共有XX页XXX条纪录 页号:1 .2 .3. 4. 5......... ---------------------------------------------------------------- 共有< %=Rlt.Pagecount% >页 <
5、 %=Rlt.Recordcount% >条纪录 页号:< % For I=1 To Rlt.Pagecount% > < %cid=rlt("product_id") < AHref="Prodpage.Asp?Pcnt=< %=I% >&id=< %=cid% > > < %=I% >.< /A > < %Next % > < /A > < Hr > < %Rlt.Pagesize=20% > -----------------------------------------------------
6、 ******以下显示产品列表:显示样式: ******1.XXXX ******2.XXXX ****** ........... ------------------------------------------------------------- < %Rlt.Absolutepage=1% > < % For I=1 To Rlt.Pagesize% > < % If Rlt.Eof Then Exit For End If% > < Li >< %=I% >. <
7、Trim(Rlt("Product_Name"))< /Li > < %Rlt.Movenext Next% > < %Rlt.Close% > 3.分页处理程序之二:Propage.Asp ----用户选择 (页号:1 .2 .3. 4. 5.........)中某页号后触发 < %Cid=Trim(Request.querystring("Id"))% > < %Rlt.Absolutepage=Request.Querystring("Pcnt")% > ******以上部分与Prod.Asp相同 ***** < % For I=1
8、 To Rlt.Pagesize% > < % If Rlt.Eof Then Exit For End If% > < Li >< %=I% >. < %=Trim(Rlt("Product_Name"))< /Li > < %Rlt.Movenext Next% > < %Rlt.Close% > 四。 补 充 说 明; 你可以让用户设置每页的长度。方法是用Session 对象维护用户信息接受用户设置信息: < %session("size")=request.form("size")% > 把Prod.as
9、p中 < %Rlt.Pagesize=20% >一句用下列语句代替 < %if session("size")="" then rlt.pagesize=20 else rlt.pagesize=session("size") end if% > 疑难解析 1.分页功能的关键: Pagesize Absolutepage属性的应用 Pagesize: 每页纪录大小 Absolutepage:光标定位到那一页.比如说有20条纪录,分成两页,每页十条
10、Absolutepage=1则从第一条纪录开始。 Absolutepage=2则从第十一条纪录开始。 2.< %Rlt.Open Sql,"Uid=Ncgi;Pwd=Sql;Dsn=Tcgi",1% > Dsn:系统数据源名,Uid:用户名,Pwd:用户密码,1:光标类型 你必须在控制面板-- > 32位Odbc中建立系统数据源,记住是系统数据源而不是用户数据源 光标类型:0,是默认值,但如果你想实现分页功能光标类型必须设为1 不然 Recordcount Pagesize Pagecount属性都不能用. 3.request.form("id")和request.querystring("id") request.form("id")指从表单接收数据,注意表单input.asp中输入框的名字是id request.querystring("id")指从URL中接受数据






