帮忙看下这个分页为什么生成的数据是乱的呢?
时间:2011-10-21
来源:互联网
VBScript code
<%@LANGUAGE="VBscript" CODEPAGE=65001%> <%Option Explicit Response.Charset="UTF-8" Response.Buffer=True Session.CodePage=65001 '---------------------------------------------------------------------------------- '本页: ' 列表生成处理页面 '说明: 'Last Modify By Luzhu(TsysChina.Net) '---------------------------------------------------------------------------------- %> <!--#include file="inc/Config.class.asp"--> <!--#include file="inc/DBControl.class.asp"--> <!--#include file="inc/FunctionLib.class.asp"--> <!--#include file="inc/Manager.class.asp"--> <!--#include file="inc/TagParser.class.asp"--> <% Dim Cfg, Db, FLib, Admin, Fso, TParser Dim ProgramStart, TotalNum, FinishedNum, CurrPage, PageSize ProgramStart = Timer TotalNum = 0 FinishedNum = 0 Set Cfg = New Config Set Db = New DBControl Set FLib = New FunctionLib Set Admin = New Manager Set Fso = Server.CreateObject(Cfg.FileSystemObject_Name) Set TParser = New TagParser If Not Admin.Logined Then FLib.Alert "对不起,你已经超时或未登录","./",1 Response.End End If If Not Admin.CheckPopedom("TSYS_GROUP4_CREATE") Then FLib.Alert "权限不足", "BACK", 0 Response.End ENd If Db.Open() Dim Work Work = Request("Work") '选择执行操作 Select Case Work Case "Create" : StartCreate() Case Else End Select Function StartCreate() Dim class_list, allpage, MyclassArray, I, Rs, sql class_list = FLib.SafeSql(Request("class_list")) allpage = FLib.SafeSql(Request("allpage")) If class_list = "0" Then class_list="" Sql = ExeSql(3) Set Rs = Db.ExeCute(Sql) While Not Rs.Eof class_list = class_list & "," & Rs("ClassID") Rs.MoveNext Wend class_list= Mid(class_list,2) Rs.Close Set Rs = Nothing End If MyclassArray= Split(class_list,",") For I=0 To UBound(MyclassArray) CreateList MyclassArray(I), allpage Next FLib.Alert "生成完毕,本次生成共花费(" & (Timer - ProgramStart) & ")秒,详细:\n1.符合生成条件数:" & TotalNum & "\n2.实际生成成功数:" & FinishedNum & "\n3.本次生成失败数:" & (TotalNum-FinishedNum) & "\n---------------------------------------------------------------\n 生成时间:" & NOW() , "BACK", 0 Response.End End Function Function CreateList(class_id, allpage) Dim PageCount, TotalResNum, list_path, list_name, real_list_path, template_path, class_title, listfile_name, class_url, CreatedPage Dim Rs, Sql, TempContent Dim sqlWhere, sqlTemp '取得列表模板和生成列表路径 Sql = ExeSql(2) sqlWhere = "A.ClassID IN (" & class_id & ") " Sql = Replace(Sql, "{sqlWhere}", sqlWhere) Set Rs = Db.ExeCute(Sql) list_path= Rs("ListPathRule") list_name= Rs("ListNameRule") PageSize= Rs("ListNum") template_path= Rs("Path") class_title= Rs("Title") CreatedPage= Rs("CreatedPage") class_url = list_path & "/" & list_name Rs.Close If FLib.ChkPathType(list_path) = 2 Then real_list_path = Server.MapPath(list_path) Else real_list_path = Replace(list_path, "/", "\") End If If Not Fso.FolderExists(real_list_path) Then FLib.CreateFolder real_list_path End If '取得数据的数目 Sql = ExeSql(0) If class_id <> "0" Then sqlWhere = "Class IN (" & class_id & ") AND Checked=True AND Deleted=False AND Created=True " End If Sql = Replace(Sql, "{sqlWhere}", sqlWhere) Set Rs = Db.ExeCute(Sql) TotalResNum = Rs(0) PageCount=Int((TotalResNum-1) / PageSize)+1 Rs.Close For CurrPage=1 To PageCount Sql = ExeSql(1) If class_id <> "0" Then sqlWhere = "Class IN (" & class_id & ") AND A.Checked=True AND A.Deleted=False AND A.Created=True " End If Sql = Replace(Sql, "{sqlWhere}", sqlWhere) Response.Write(Sql) Set Rs = Db.CreateRS() Rs.PageSize = PageSize Rs.CacheSize = Rs.PageSize Rs.Open Sql, Db.Conn, 1, 1 If Not(Rs.Eof And Rs.Bof) Then Rs.AbsolutePage = CurrPage End If TotalNum = TotalNum + 1 TempContent = FLib.ReadFromTextFile(template_path,Cfg.CharsetStr) TempContent = TParser.ListParser(class_id, class_title, class_url, PageSize, TotalResNum, PageCount, CurrPage, TempContent, Rs) If CurrPage = 1 Then listfile_name = Replace(list_name, "{i}", "") Else listfile_name = Replace(list_name, "{i}", CurrPage) End If If CreateRes(real_list_path & "\" & listfile_name, TempContent) = 1 Then FinishedNum = FinishedNum + 1 End If Next Set Rs = Nothing End Function Function ExeSql(m) Dim Sql If m = 0 Then Sql = "SELECT COUNT(*) FROM " & Cfg.DataBase_Pre & "ArticleList WHERE {sqlWhere}" Elseif m = 1 Then Sql = "SELECT TOP " & (CurrPage * PageSize) & " A.*, B.ClassID, B.Title AS ClassTitle FROM " & Cfg.DataBase_Pre & "ArticleList AS A INNER JOIN " & Cfg.DataBase_Pre & "Class AS B ON A.Class = B.ClassID WHERE {sqlWhere} ORDER BY A.ArticleID DESC" Elseif m = 11 Then Sql = "SELECT TOP " & ((CurrPage+1) * PageSize) & " A.*, B.ClassID, B.Title AS ClassTitle FROM " & Cfg.DataBase_Pre & "ArticleList AS A INNER JOIN " & Cfg.DataBase_Pre & "Class AS B ON A.Class = B.ClassID WHERE {sqlWhere} ORDER BY A.ArticleID DESC" Elseif m = 2 Then Sql = "SELECT A.*, B.Path FROM " & Cfg.DataBase_Pre & "Class A LEFT JOIN " & Cfg.DataBase_Pre & "Template B ON A.ListTemplate=B.TemplateID WHERE {sqlWhere} " Else Sql = "SELECT * FROM " & Cfg.DataBase_Pre & "Class" End If '输出 SQL Response.Write(Sql) ExeSql = Sql End Function '方法:创建列表(主方法) '参数: ' path 生成列表文件路径 ' TempContent 资源所将要套用的模板内容 '返回: ' 0 生成失败 ' 1 生成成功 Function CreateRes(path, TempContent) FLib.WriteToTextFile path, TempContent, Cfg.CharsetStr If Err.Number = 0 Then CreateRes = 1 Else CreateRes = 0 End If Err.Clear() End Function %>
作者: rebelboy 发布时间: 2011-10-21
太长。而且你说的是乱序还是乱码都不清楚。
你可以找一个好使的分页函数去用。任何的CMS里都有。
你可以找一个好使的分页函数去用。任何的CMS里都有。
作者: theforever 发布时间: 2011-10-22
没有把问题说清楚啊……
作者: lijpwsw 发布时间: 2011-10-22
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28