这里我引用一个简单实例:(旅游电子商务)全国各大城市酒店应用静态页(htm)分页显示
1.应用系统环境:win2000+ASP+MSSQL/ACCESS(数据库基本没有关系了通用的)+iis5.0
2.1个城市列表(CityHtml):包括定义静态htm名称共三个字段(城市ID(自动编号),城市名称(CityName例如北京),生成htm前缀名(HtmlStartName例如beijing))
3.1个全国酒店列表(Hotel):这里我只建立三个字段(酒店ID(自动编号),城市名称(City),酒店名称(HotelName))方便来引用实例。
4.1个ASP页面(ToHtm.asp)(生成htm使用)
5.1个循环框架页面(IframeToHtm.asp),应用框架批量生成htm
以下给出两个页面的源码
循环框架进行批量生成的页面:IFrameToHtm.asp
<!–#include file=”conn.asp”–>’连接数据库
<%
Dim rs, sql, j
Set rs = Server.CreateObject(“adodb.recordset”)
sql = “select * from CityHtml”‘打开全国城市列表
rs.Open sql, conn, 1, 1
Do Until rs.EOF’循环各大城市
%>
<!–以下应用框架打开ToHtml生成页面–>
<iframe name=”LoadRcHtm<%=j%>” frameborder=0 width=100% height=30 scrolling=no src=”ToHtml.asp?City=<%=cstr(rs(“city”))%>&HtmlStartName=<%=rs(“HtmlStart”)%>”></iframe>
<%rs.movenext
Loop
%>
生成程序页面:ToHtm.asp 我在源码大概写上注释**
<!–#include file=”conn.asp”–>’数据连接文件
<%
On Error Resume Next’容错处理
Dim City’定义取得要生成页面的城市
City = Request.Querystring(“City”)’获取生成的城市酒店值从框架传过来的在后面将介绍
HtmlStartName = Request.Querystring(“HtmlStartName”)’获得生成htm文件名前缀
Dim sql’搜索字符串,这里我就直接打开表不用搜索变量了,搜索条件按自己写就可以
sql = “select * from Hotel where [City] = ‘” & City & “‘ ”
Dim oRs’数据操作对象
Dim PageCounts’实现分页生成必须得知呀有多少页
Set oRs = Server.CreateObject(“ADODB.Recordset”)
oRs.Open Sql, oConn, 1, 1’找开酒店等于City变量的表
oRs.pagesize = 10’十个记录为一页
PageCounts = oRs.pagecount’得出要生成多少个页面,循环生成使用
Dim fs’定义fso文件对象
Dim Folders’存放生成静态页的文件夹名称
Dim Filestart’定义生成htm文件前缀
Set fs = Server.CreateObject(“Scripting.FileSystemObject”)
Dim i
For i = 1 To PageCounts’开始循环生成页面,也就是分页生成了
page = i
oRs.absolutepage = i’页码
rowcount = oRs.pagesize’当页记录数
Folders = server.mappath(“CityHtml”)
If (fs.FolderExists(Folders)) Then’判断文件夹是否存在
Else
fs.CreateFolder(Folders)’不存在则创建CityHtml文件夹
End If
If i = 1 Then
Filestart = HtmlStartName’如果为第一页则定义文件名为传值名.例如beijing则为beijing.htm
Else
Filestart = HtmlStartName&i’如果第二页则为beijing+1例如有两页也就是i等于2则为 beijing2.htm如此类推…(.htm后缀就在后面加上)
End If
Dim Files’定义生成文本文件名称变量
Dim filez’定义文件路径名称变量
Files = Filestart&”.txt”‘本文件名称
filez = Folders&”\”&”files’文本文件路径
‘册除文件
Dim checkfile’检查文本文件是否已经存在,是则删除
checkfile = server.mappath(“CityHtml\”&Filestart&”.htm”)’检查htm文件是否已经存在,是则删除
If (fs.FileExists(checkfile)) Then’检查htm文件是否已经存在,是则删除
Dim df’定义文件对象*删除文件使用*
Set df = fs.GetFile(checkfile)’定义要册除的文件
df.Delete’册除文件
End If’判断结束
Dim ts’定义写入文件对象
Set ts = fs.CreateTextFile(filez, true) ‘开启写入文件内容**我在正文只简单写入酒店名称和静态数字分页显示**
ts.Write(“<html><head><title>生成”&City&”城市酒店</title>”&vbCrLf)’之后就是要生成的正文件内容了跟使用Response.write
ts.Write(“<meta http-equiv=Content-Type content=text/html; charset=gb2312>”&vbCrLf)
ts.Write(“<meta name=keywords content=”&city&”酒店>”&vbCrLf)
ts.Write(“<link href=’/Style/style.css’ rel=’stylesheet’ type=’text/css’></head><body topmargin=0>”&vbCrLf)
ts.Write(“<table WIDTH=760 cellspacing=0 cellpadding=0 align=center>”&vbCrLf&_
“<tr><td width=’100%’>”&vbCrLf)
‘分页输出开始
‘数字分页程序原理在这我就不多说了,不懂的朋友可在网上搜索一下
Dim page’当前页
Dim Page2’数字分页变量
Dim s’数字分页变量
If page = 1 Then
ts.Write (” [首 页] [前一页] “)
Else
ts.Write (” <a href=”&HtmlStartName&”.htm”&”>[首 页]</a> <a href=”&HtmlStartName&Replace(page -1, 1, “”)&”.htm”&”>前一页</a> “)
End If
page2 = (page – (page Mod 10)) / 10
If page2<1 Then page2 = 0
For s = page2 * 10 -1 To page2 * 10 + 10
If s>0 Then
If s = CInt(page) Then
ts.Write (” <font color=’#000000’>[“& s & “]</font>”)
Else
If s = 1 Then
ts.Write (” <a href=”&HtmlStartName&Replace(s, 1, “”)&”.htm”&”>[“& s &”]</a>”)
Else
ts.Write (” <a href=”&HtmlStartName&s&”.htm”&”>[“& s &”]</a>”)
End If
End If
If s = ors.pagecount Then
Exit For
End If
End If
Next
If CInt(page) = ors.pagecount Then
ts.Write (” [后一页] [尾 页]”)
Else
ts.Write (” <a href=”&HtmlStartName&page + 1&”.htm”&”>[后一页]</a> <a href=”&HtmlStartName&ors.pagecount&”.htm”&”>[尾 页]</a>”)
End If
ts.Write(“</td></tr>”)
‘分页输出结束
Do While Not ors.EOF And rowcount>0 ‘输出酒店名称
ts.Write(“<tr><td width=’100%’>”&oRs.Fields(“Chinese_Name”)&”</td></tr>”&vbCrLf)
oRs.movenext
rowcount = rowcount -1’当页记录数-1 loop
ts.Write(“</table></body></html>”&vbCrLf)
ts.Close
Set ts = Nothing ‘释放对象
Dim EditFile’定义改写文件变量
Set EditFile = fs.GetFile(filez)’设置改写文件对象
EditFile.Name = Left(EditFile.Name, Len(EditFile.Name) -4)&”.htm” ‘改写文本文件成htm
Next’循环生成结束(分页生成)
Set EditFile = Nothing ‘释放对象
Set fs = Nothing’释放对象
If Err.Number<>0 Then ‘处理生成错误
Response.Write(City&”更新时发生未知错误<a href=ToHtml.asp?City=”&City&”&HtmlName=”&HtmlStartName&”>重新更新</a>”)
Else
Response.Write(City&”酒店更新已完成 “&Now())
End If
%>