⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 function.asp

📁 功能简介: 前台: 1.用户名注册:登 录 名:密码:确认密码:性别:查询权限: 地址: 联系电话: 移动电话: E - mail: 工作单位 2.系统优点管理,公告新闻管理,联系我们管理
💻 ASP
📖 第 1 页 / 共 4 页
字号:
	end if
	
	set rs=conn.execute("select "&PrevID&","&NextID&" from "&TableName&" where "&ClassID&"=" & reClassID)
	rePrevID=rs(0)
	reNextID=rs(1)
	rs.close
	set rs=nothing
	
	'先修改上一栏目的NextID和下一栏目的PrevID
	if rePrevID>0 then
		conn.execute "update "&TableName&" set "&NextID&"=" & reNextID & " where "&ClassID&"=" & rePrevID
	end if
	if reNextID>0 then
		conn.execute "update "&TableName&" set "&PrevID&"=" & rePrevID & " where "&ClassID&"=" & reNextID
	end if

	dim mrs,MaxRootID
	set mrs=conn.execute("select max("&rootid&") From "&TableName&"")
	MaxRootID=mrs(0)+1
	'先将当前栏目移至最后,包括子栏目
	conn.execute("update "&TableName&" set "&RootID&"=" & MaxRootID & " where "&RootID&"=" & reRootID)
	
	'然后将位于当前栏目以下的栏目的RootID依次减一,范围为要下降的数字
	sqlOrder="select * From "&TableName&" where "&ParentID&"=0 and "&RootID&">" & reRootID & " order by "&RootID&""
	set rsOrder=server.CreateObject("adodb.recordset")
	rsOrder.open sqlOrder,conn,1,3
	if rsOrder.bof and rsOrder.eof then
		exit sub        '如果当前栏目已经在最下面,则无需移动
	end if
	i=1
	do while not rsOrder.eof
		tRootID=rsOrder(""&RootID&"")       '得到要提升位置的RootID,包括子栏目
		tclassid=rsOrder(""&classid&"")

		set rs=server.CreateObject("adodb.recordset")
		rs.open"select * from "&TableName&"  where "&classid&"=" & tclassID,conn,1,3
		conn.execute("update "&TableName&" set "&RootID&"="&RootID&"-1 where "&RootID&"=" & tRootID)
		i=i+1
		if i>MoveNum then
		  if not rs.eof then
			rs(""&nextid&"")=reclassid
			rs.update
		  end if
			rs.close
			set rs=nothing
		
			conn.execute("update "&TableName&" set "&PrevID&"=" & tclassid & " where "&ClassID&"=" & reClassID)
			exit do
		end if
		rsOrder.movenext
	loop
	rsOrder.movenext
	rsorder.movenext
	if rsOrder.eof then
		conn.execute("update "&TableName&" set "&NextID&"=0 where "&ClassID&"=" & reClassID)
	else
		rsOrder(""&PrevID&"")=reClassID
		rsorder.update()
		conn.execute("update "&TableName&" set "&NextID&"=" & rsOrder(""&ClassID&"") & " where "&ClassID&"=" & reClassID)
	end if	
	rsOrder.close
	set rsOrder=nothing
	
	'然后再将当前栏目从最后移到相应位置,包括子栏目
	conn.execute("update "&TableName&" set "&RootID&"=" & tRootID & " where "&RootID&"=" & maxRootID)
end sub


'***************************************
 '过程名:MoveNup()
 '作用:用于子级栏目的上移
 '时间:2005-4-20
 '开发者:郭立江
 '参数设置:
 '  Tablename:表名
 '  Reclassid:要上移的ClassID
 '  Movenum:要上移的位数
 'Talbename表里的字段设置
 '  Classid:栏目ID,唯一标识;程序写入
 '  Parentid:父级栏目ID
 '  ParentPath:栏目路径
 '  Nextid:前栏目ID(同级栏目比较下)
 '  Previd:后栏目ID(同级栏目比较下)
 '  Child:拥有子栏目数
 '  Orderid:一级栏目排序
'***************************************
Sub MoveNup(TableName,Movenum,ReClassID,ClassID,ParentID,NextID,PrevID,orderID,ParentPath,Child)
    dim sql,rsClass,i
	dim ReNextid,ReprevID,ReorderId
    dim sqlOrder,rsOrder
	
	if reClassID="" then
		FoundErr=True
				response.Write"<script language='javascript'>alert('参数不足');history.back();</script>"
		        response.End()
	else
		reClassID=CLng(reClassID)
	end if
	
	if MoveNum="" then
		FoundErr=true
		response.Write"<script language='javascript'>alert('错误参数');history.back();</script>"
		response.End()
	else
		MoveNum=Cint(MoveNum)
		if MoveNum=0 then
			FoundErr=True
			response.Write"<script language='javascript'>alert('请选择要提升的数字!');history.back();</script>"
		    response.End()
		end if
	end if
	if FoundErr=True then
		exit sub
	end if
	
	'要移动的栏目信息
	set rs=conn.execute("select "&ParentID&","&OrderID&","&ParentPath&","&child&","&PrevID&","&NextID&" From "&TableName&" where "&ClassID&"="&reClassID)
	reParentID=rs(0)
	reOrderID=rs(1)
	reParentPath=rs(2) & "," & reClassID
	rechild=rs(3)
	rePrevID=rs(4)
	reNextID=rs(5)
	rs.close
	set rs=nothing
	if rechild>0 then
	   '得到要移动的下级栏目的总数
		set rs=conn.execute("select count(*) From "&TableName&" where "&ParentPath&" like '%"&reParentPath&"%'")
		oldorders=rs(0)
		rs.close
		set rs=nothing
	else
		oldorders=0
	end if
	
	'先修改上一栏目的NextID和下一栏目的PrevID
	if rePrevID>0 then
		conn.execute "update "&TableName&" set "&NextID&"=" & reNextID & " where "&ClassID&"=" & rePrevID
	end if
	if reNextID>0 then
		conn.execute "update "&TableName&" set "&PrevID&"=" & rePrevID & " where "&ClassID&"=" & reNextID
	end if
	
	'和该栏目同级且排序在其之上的栏目------更新其排序,范围为要提升的数字
	sql="select "&ClassID&","&OrderID&","&child&","&ParentPath&","&PrevID&","&NextID&" From "&TableName&" where "&ParentID&"="&reParentID&" and "&OrderID&"<"&reOrderID&" order by "&OrderID&" desc"
	set rs=server.CreateObject("adodb.recordset")
	set rs1=server.CreateObject("adodb.recordset")
	rs.open sql,conn,1,3
	i=1
	l=0
	do while not rs.eof
		tOrderID=rs(1)
		tclassid=rs(0)
		'response.Write torderid&"&nbsp;"
		set ptr=server.CreateObject("adodb.recordset")
		ptr.open"select * from "&TableName&" where "&classid&"="&tclassid,conn,1,3
		iOrderID=tOrderID+oldorders+i
		iOrderID=iOrderID-l
		'response.Write iorderid&"&nbsp;"
		conn.execute("update "&TableName&" set "&OrderID&"="&iorderid&" where "&ClassID&"="&rs(0))
		if rs(2)>0 then
			ii=i+1
			set trs=conn.execute("select "&ClassID&","&OrderID&" From "&TableName&" where "&ParentPath&" like '%"&rs(3)&","&rs(0)&"%' order by "&OrderID&"")
			if not (trs.eof and trs.bof) then
				do while not trs.eof
					conn.execute("update "&TableName&" set "&OrderID&"="&tOrderID+oldorders+ii&" where "&ClassID&"="&trs(0))
					ii=ii+1
					trs.movenext
				loop
				
			end if
			trs.close
			set trs=nothing
		end if
		i=i+1
		l=l+1
		
		if i>MoveNum then
		 if not ptr.eof then
			ptr(""&previd&"")=reClassID
			ptr.update
		 end if
			ptr.close
			set ptr=nothing
			conn.execute("update "&TableName&" set "&NextID&"=" & rs(0) & " where "&ClassID&"=" & reClassID)		
			exit do
		end if
		rs.movenext
	loop
	rs.movenext
	if rs.eof then
		conn.execute("update "&TableName&" set "&PrevID&"=0 where "&ClassID&"=" & reClassID)
	else
		rs(5)=reClassID
		rs.update
		conn.execute("update "&TableName&" set "&PrevID&"=" & rs(0) & " where "&ClassID&"=" & reClassID)
	end if	
	rs.close
	set rs=nothing
	
	'更新所要排序的栏目的序号
	conn.execute("update "&TableName&" set "&OrderID&"="&tOrderID&" where "&ClassID&"="&reClassID)
	'如果有下属栏目,则更新其下属栏目排序
	if rechild>0 then
		i=1
		set rs=conn.execute("select "&ClassID&" From "&TableName&" where "&ParentPath&" like '%"&reParentPath&"%' order by "&OrderID&"")
		do while not rs.eof
			conn.execute("update "&TableName&" set "&OrderID&"="&tOrderID+i&" where "&ClassID&"="&rs(0))
			i=i+1
			rs.movenext
		loop
		rs.close
		set rs=nothing
	end if
end sub


'**************************************************
'过程名:MoveNdown
'作用:用于子级栏目的下移
 '时间:2005-4-20
 '开发者:郭立江
 '参数设置:
 '  Tablename:表名
 '  Reclassid:要上移的ClassID
 '  Movenum:要下移的位数
 'Talbename表里的字段设置
 '  Classid:栏目ID,唯一标识;程序写入
 '  Parentid:父级栏目ID
 '  ParentPath:栏目路径
 '  Nextid:前栏目ID(同级栏目比较下)
 '  Previd:后栏目ID(同级栏目比较下)
 '  Child:拥有子栏目数
 '  Orderid:一级栏目排序
'**************************************************
Sub MoveNdown(TableName,Movenum,ReClassID,ClassID,ParentID,NextID,PrevID,orderID,ParentPath,child)
    dim sql,rsClass,i
	dim ReNextid,ReprevID,ReorderId
    dim sqlOrder,rsOrder
	'dim sql,rs,oldorders,ii,trs,tOrderID
	
    if reClassID="" then
		FoundErr=True
				response.Write"<script language='javascript'>alert('参数不足');history.back();</script>"
		        response.End()
	else
		reClassID=CLng(reClassID)
	end if
	
	if MoveNum="" then
		FoundErr=true
		response.Write"<script language='javascript'>alert('错误参数');history.back();</script>"
		response.End()
	else
		MoveNum=Cint(MoveNum)
		if MoveNum=0 then
			FoundErr=True
			response.Write"<script language='javascript'>alert('请选择要下移的数字!');history.back();</script>"
		    response.End()
		end if
	end if
	if FoundErr=True then
		exit sub
	end if
	
	'dim sql,rs,oldorders,ii,trs,tOrderID
	'要移动的栏目信息
	set rs=conn.execute("select "&ParentID&","&OrderID&","&ParentPath&","&child&","&PrevID&","&NextID&" From "&TableName&" where "&ClassID&"="&reClassID)
	reParentID=rs(0)
	reOrderID=rs(1)
	reParentPath=rs(2) & "," & reClassID
	rechild=rs(3)
	rePrevID=rs(4)
	reNextID=rs(5)
	rs.close
	set rs=nothing

	'先修改上一栏目的NextID和下一栏目的PrevID
	if rePrevID>0 then
		conn.execute "update "&TableName&" set "&NextID&"=" & reNextID & " where "&ClassID&"=" & rePrevID
	end if
	if reNextID>0 then
		conn.execute "update "&TableName&" set "&PrevID&"=" & rePrevID & " where "&ClassID&"=" & reNextID
	end if
	
	'和该栏目同级且排序在其之下的栏目------更新其排序,范围为要下降的数字
	sql="select "&ClassID&","&OrderID&","&child&","&ParentPath&","&PrevID&","&NextID&" From "&TableName&" where "&ParentID&"="&reParentID&" and "&OrderID&">"&reOrderID&" order by "&OrderID&""
	set rs=server.CreateObject("adodb.recordset")
	rs.open sql,conn,1,3
	i=0      '同级栏目
	ii=0     '同级栏目和子栏目
	do while not rs.eof
	 tOrderID=rs(1)
		set ptr=server.CreateObject("adodb.recordset")
		ptr.open"select * from "&TableName&" where "&classid&"="&rs(0),conn,1,3
		conn.execute("update "&TableName&" set "&OrderID&"="&reOrderID+ii&" where "&ClassID&"="&rs(0))
		if rs(2)>0 then
			set trs=conn.execute("select "&ClassID&","&OrderID&" From "&TableName&" where "&ParentPath&" like '%"&rs(3)&","&rs(0)&"%' order by "&OrderID&"")
			if not (trs.eof and trs.bof) then
				do while not trs.eof
					ii=ii+1
					conn.execute("update "&TableName&" set "&OrderID&"="&reOrderID+ii&" where "&ClassID&"="&trs(0))
					trs.movenext
				loop
			end if
			trs.close
			set trs=nothing
		end if
		ii=ii+1
		i=i+1
		if i>=MoveNum then
		 if not ptr.eof then
			ptr(""&nextid&"")=reClassID
			ptr.update
			ptr.close
			set ptr=nothing
		 end if
			conn.execute("update "&TableName&" set "&PrevID&"=" & rs(0) & " where "&ClassID&"=" & reClassID)		
			exit do
		end if
		rs.movenext
	loop
	rs.movenext
	if rs.eof then
		conn.execute("update "&TableName&" set "&NextID&"=0 where "&ClassID&"=" & reClassID)
	else
		rs(4)=reClassID
		rs.update
		conn.execute("update "&TableName&" set "&NextID&"=" & rs(0) & " where "&ClassID&"=" & reClassID)
	end if	
	rs.close
	set rs=nothing
	
	'更新所要排序的栏目的序号
	conn.execute("update "&TableName&" set "&OrderID&"="&reOrderID+ii&" where "&ClassID&"="&reClassID)
	'如果有下属栏目,则更新其下属栏目排序
	if rechild>0 then
		i=1
		set rs=conn.execute("select "&ClassID&" From "&TableName&" where "&ParentPath&" like '%"&reParentPath&"%' order by "&OrderID&"")
		do while not rs.eof
			conn.execute("update "&TableName&" set "&OrderID&"="&reOrderID+ii+i&" where "&ClassID&"="&rs(0))
			i=i+1
			rs.movenext
		loop
		rs.close
		set rs=nothing
	end if
end sub
%>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -