vb改成asp

leiziaitudou 2009-11-22 02:16:38
<script language="VB" runat="server">
'定义若干页面级变量和常量,主要用来分页
Dim conn As OleDbConnection '数据库连接对象变量
Dim PageSize As Integer '每行显示多少条记录
Dim StartPosition As Integer '从第几条记录开始显示
Dim CurrentPage As Integer '当前显示第几页
Dim TotalPage As Integer '该变量用来表示总共多少页

Sub Page_Load(Sender As Object, E As EventArgs)
'建立Connection对象
conn= New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.Mappath("guest.mdb"))
'从web.Config文件中读取数据
PageSize=ConfigurationSettings.AppSettings("PageSize")

'如果没有提交表单,就执行下面的绑定函数
If Not Page.IsPostBack Then
'下面调用函数,绑定数据
Call BindData()
End If
End Sub

'数据绑定过程,供其它函数调用
Sub BindData()
'在绑定数据之前,先计算得到有关变量**************************************************************

'先调用函数,返回总共有多少页
TotalPage=GetTotalPage()

'计算当前要显示的页
If Request.QueryString("commandname")<>"" Then
'这种情况表示选择了上一页或下一页,因此从Session中读取,并根据具体情况加1或减1
Select Case Request.QueryString("commandname")
Case "first"
CurrentPage=1
Case "prev"
CurrentPage=CInt(Session("CurrentPage"))-1
If CurrentPage<1 Then CurrentPage=1 '如果小于1,当然应该显示第1页
Case "next"
CurrentPage=CInt(Session("CurrentPage"))+1
If CurrentPage>TotalPage Then CurrentPage=TotalPage '如果大于总数,就显示最后页
Case "last"
CurrentPage=TotalPage
End Select
'选择完毕,重新将页码保存到Session中
Session("CurrentPage")=CurrentPage
ElseIf Not (Session("CurrentPage") Is Nothing) Then
'这种情况表示没有选择下面的页码,但也不是刚打开页面,可能是提交了表单,或者从回复和删除页面返回。
'此时应该从Session中读取。(当然,如果要考虑复杂,还可以细分各种情况)
CurrentPage = Session("CurrentPage")
Else
'这种情况表示刚刚打开页面,还没有提交或选择页码,因此另其为1
CurrentPage=1
Session("CurrentPage")=CurrentPage
End If

'下面开始绑定数据***********************************************************************************
Dim adp As New OleDbDataAdapter("select * from guest order by submit_date Desc", conn) '建立DataAdapter对象
Dim ds As New DataSet() '建立DataSet对象

'计算从第几条记录开始显示,应该是当前页的第1条记录,请仔细理解其中的数学计算
'注意记录索引从0开始

StartPosition=(CurrentPage-1)*PageSize

'这里的Fill方法有4个参数,第2个表示从第几行开始,第3个表示总共要多少行
adp.Fill(ds,StartPosition,Pagesize,"guest") '填充DataSet对象

MyRepeater.DataSource=DS.Tables("guest").DefaultView '指定数据源
MyRepeater.DataBind() '执行绑定

'下面设置有关显示总页数和当前显示页数信息*************************************************************
theCurrentPage.Text=CurrentPage.Tostring
theTotalPage.Text=TotalPage.Tostring
End Sub

'该函数用来返回总共有多少页
Function GetTotalPage()
'下面先返回总共有多少条记录
Dim TotalRecord As Integer
Dim strsql As String = "select count(*) as total From guest"
Dim cmd As New OleDbCommand(strsql, conn)
conn.Open()
Dim dr As OleDbDataReader = cmd.ExecuteReader
If dr.Read() Then
' intCount = Int32.Parse(dr.Item("total").ToString)
TotalRecord = dr.Item("total")
Else
TotalRecord = 0
End If
Conn.Close()
'下面计算总共有多少页
If (TotalRecord Mod PageSize)=0 Then
'如果能整除,则
GetTotalPage=TotalRecord/PageSize '返回函数值
Else
'如果不能整除,则用整除\并+1
GetTotalPage=TotalRecord\PageSize+1 '返回函数值
End If
End Function

这些代码谁给该成ASP
我感谢了
...全文
66 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
leiziaitudou 2009-11-22
  • 打赏
  • 举报
回复
vC#的
在网上找了一个 Asp数据操作组件(百万级分页) ,实用环境:Asp+DLL+MsSQL(这个网上很多地方都可以下载),并且其中结合SQL存储过程,说实话以前SQL存储过程接触的比较少,所以在调试该组件的时候遇到了一些问题,并试着改了一下(作者别生气(^..^)),高手们别笑话我。 原代码如下: 有分页列表数据: cls.tblName="Tablename" '表名 cls.fldName="Id" '排序关键字段 cls.PageIndex=Request("P")*1 '当前页码 cls.PageSize=20 '每页列数 cls.OrderType=1 '排序方式,0 、1 cls.strWhere=StrW '查询条件,不带Where cls.ListUrl="?Y="&Y&"&M="&M&"&D="&D&"&Sn="&Sn&"&P=" 分页URL Set Rs=cls.Result do while not rs.eof rs.movenext loop 分页数据 cls.page 在原文的使用说明中,在翻页代码中对表查询默认是全部字段也就是*,这样是不是会浪费资源,而无法查询需要的字段,于是我在DLL代码中新加入一个变量名为zdName,作为传递可控制查询条件的变量,同时在SQL存储过程中也加入相应的接受变量@zdName 字符型。 在这个小问题解决后,又在使用上发现cls.strWhere付给它的变量StrW 如果条件变量其中带有类似 例如 a='b'则执行SQL存储过程时候会提示错误,后来发现是DLL代码中: sql = "exec GetList " & tblName & "," & fldName & "," & PageSize & "," & PageIndex & "," & OrderType & ",'" & strWhere & "' " 这个地方是否写的不够严谨,在StrW中如果含有单引,那么将无法执行,所以我在DLL的VB代码改成 If InStr(strWhere, "'") 0 Then sql = "exec GetList " & tblName & "," & fldName & "," & PageSize & "," & PageIndex & "," & OrderType & ",""" & strWhere & """ " Else sql = "exec GetList " & tblName & "," & fldName & "," & PageSize & "," & PageIndex & "," & OrderType & ",'" & strWhere & "' " End If 试了试目前的问题确实解决了,这个组件我也是刚刚使用,希望对大家能有点帮助!

28,406

社区成员

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

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