|
asp能完成很多的功能,但是每个例子都有它的独特性,要使用统一的方法很难,为了大家不重复的提问 每个功能,建议编写asp各种功能函数库,以便大家相互学习,统一编码,提到水平 编写函数的要求 1、函数名称 2、函数的简单介绍 3、函数的内容 4、函数的调用例子
例如: 函数名称:通用打开access数据库的函数 函数说明:通用打开asp数据库的函数
<% function openAccessDB AccessDb=access.mdb Set conn = Server.CreateObject("ADODB.Connection") connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(AccessDB) conn.Open connstr End Function %>
函数名称:通用关闭access数据库的函数 函数说明:同上
function CloseAccessDB Conn.close Set conn = Nothing End Function
函数调用
<% openaccessDB sql="select * from art" set rs=server.createobject("adodb.recordset") rs.open sql,conn,1,1 ................. CloseAccessDB %>
下面的代码是一个购物车的类!
<% Class CartKit ’开始类CartKit的定义 Sub CreateCart() If IsArray(Session("Cart")) = False Then Dim aryCart(19,2) Session("Cart") = aryCart End If End Sub
Function CheckCart() If IsArray(Session("Cart")) Then CheckCart = True Else CheckCart = False End If End Function
Function CheckItem(ID) Dim aryCart If CheckCart = True Then aryCart = Session("Cart") For i = LBound(aryCart) To UBound(aryCart) If aryCart(i,0) = ID Then CheckItem = True Exit Function ElseIf aryCart(i,0) <> ID Then CheckItem = False End If Next End If End Function
Function RemoveItem(ID) dim i,intPos,aryRemoveCart aryCartRemove = Session("Cart") For i = LBound(aryCart) To UBound(aryCart) If aryCart(i,0) = ID Then intPos = i Exit For End If Next
For i = intPos To UBound(aryRemoveCart) - 1 If Not aryRemoveCart(i,0) = "" Then aryRemoveCart(i,0) = aryRemoveCart(i+1,0) aryRemoveCart(i,1) = aryRemoveCart(i+1,1) aryRemoveCart(i,2) = aryRemoveCart(i+2,2) End If Next Session("Cart") = aryRemoveCart End Function
Function UpdateItem(ID,Num) dim aryUpdateCart,i aryUpdateCart = Session("Cart") For i = LBound(aryUpdateCart) To UBound(aryUpdateCart) If aryUpdateCart(i,0) = ID Then aryUpdateCart(i,1) = Num Session("Cart") = aryUpdateCart End If Next End Function
Function AddItem(ID,Num) Dim btnCartStatus,aryAddCart btnCartStatus = CheckCart If btnCartStatus = False Then CreateCart aryAddCart = Session("Cart") aryAddCart (0,0) = ID aryAddCart (0,1) = Num Session ("Cart") = aryAddCart Exit Function ElseIf btnCartStatus = True Then If CheckItem(ID) = True Then UpdateItem ID,Num ElseIf CheckItem(ID) = False Then aryAddCart = Session("Cart") For i = LBound(aryAddCart) To UBound(aryAddCart) If aryAddCart(i,0) = "" Then aryAddCart(i,0) = ID aryAddCart(i,1) = Num Session("Cart") = aryAddCart Exit Function End If Next End If End If
End Function
End Class %>
通用分页函数
<% ’调用方法如下 ’Create Recordset Object的代码这儿就不贴了 PageSize = 5 RecordCount=rs.recordcount Call TurnPage(rs,"admin_product.asp?info=" & strID,recordcount) ’###############################################
’翻页函数 ’传入参数: objRS (记录集) ’调用翻页过程的文件名,如需要参数,则跟上参数 ’Records ’总记录条数 ’输 出: 记录集翻页显示功能
Sub TurnPage(ByRef objRS,FileName,Records) If objRS.Eof And objRS.Bof Then Exit Sub Dim FormPage,strPageInfo Dim TotalPage Dim PageNo ’当前显示的是第几页 Dim postion PageNo = Trim(Request.QueryString ("PageNo")) ’许算总页数 TotalPage = INT(Records / PageSize * -1)*-1 If PageNo = "" Then PageNo = Trim(Request.Form("PageNo")) ’如果没有选择第几页,则默认显示第一页;
If PageNo <> "" Then PageNo = CInt(PageNo)
If (PageNo = "" OR PageNo > TotalPage) Then PageNo = 1
objRS.AbsolutePage = PageNo postion = InstrRev(FileName,"?") FormPage = FileName If postion > 0 Then FileName = FileName & "&PageNo=" Else FileName = FileName & "?PageNo=" End If %> <script language="javascript"> <!-- function test(){ if (document.gopage.PageNo.value=="" || isNaN(document.gopage.PageNo.value)) { alert("输入页数必须为数字"); document.gopage.PageNo.focus(); return false; } return true; } // --> </script> <table border=0 width=’100%’ cellspacing="0" cellpadding="0" bgcolor="#98cefb"> <tr> <td align="center" valign="middle"> <% If TotalPage > 1 Then If PageNo <= 1 Then Response.Write ("首页 前页 <a href=""" & FileName & PageNo+1 & """>后页</a> <a href=""" & FileName & TotalPage & """>末页</a>") Else If PageNo >= TotalPage Then Response.Write ("<a href=""" & FileName & "1"">首页</a> <a href=""" & FileName & PageNo -1 & """>前页</a> " & "后页 末页") Else Response.Write ("<a href=""" & FileName & "1"">首页</a> <a href=""" & FileName & PageNo -1 & """>前页</a> " & "<a href=""" & FileName & PageNo+1 & """>后页</a> <a href=""" & FileName & TotalPage & """>末页</a>") End If End If Response.Write ("页次:<font color=""#FFFFFF"">" & PageNo & "</Font>/" & TotalPage & "页 共<font color=""#ffffff"">" & Records & "</font>篇文章 <font color=""#ffffff"">" & PageSize & "</font>篇/页") %> </td> <form onSubmit="return test();" name=gopage action=<%=formpage%> method="post"> <td align=right>第</td> <td> <input type=text name=PageNo size=3 value="" class=input maxlength=4 title=请输入页号,然后回车>页 <input type="submit" value="GO" name=button class=button_s> </td> </form> <% End If %> </td> </tr> </table> <%End Sub%>
<% ’这是我用ASP写的一个N进制转换的函数,不过还有局限性,感兴趣的可以测试一下,有问题请告诉我 ’【题目】任意进制间的互化。 ’ 把n进制的M转化成k进制表示 ’ 如m=ff n=16 k=2 ’ 则有 (ff)16=(11111111)2 ’【参考程序】 Dim a(100)
’将N进制转换成十进制 Function NTOD(m,n) Dim cf,i,j m = Trim(m) For i=1 TO Len(m) sTemp = Mid(m,Len(m)-i+1,1) If (sTemp<="9") And (sTemp>="0") Then a(i)=Asc(sTemp)-48 End If If (Ucase(sTemp)<="F") And (Ucase(sTemp)>="A") Then a(i) = Asc(Ucase(sTemp))-55 End If s = s + a(i) * n^(i-1) Next NTOD = s End Function ’将十进制转成N进制 Function DTON(m,n) If n = 10 Then DTON = m Exit Function End If
Dim i,j i = 0 Do i = i + 1 a(i) = m Mod n m = m \ n Loop While(m<>0)
For j=i To 1 step -1 If a(j)>9 Then DTON = DTON & Chr(a(j)+55) Else DTON = DTON & a(j) End If Next End Function
Function NTOK(m,n,k) s = NTOD(m,n) NTOK = DTON(s,k) End Function
’调用示例 ’参数1:"abf"是需要转换的字符串 ’参数2:16是指需要转换字符串原来的进制 ’参数3:8是指将要转换成进制 Response.Write (NTOK("abf",16,8)) %>
|