📄 function.asp
字号:
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&" "
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&" "
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 + -