sub ClassAdd(reclassnameeng,reclassconeng,Tablename,Reparentid,Claname,ClassContent,Classid,Parentid,Parentpath,Classname,Classcon,Child,Nextid,Previd,Depth,Rootid,Orderid,classnameeng,classconeng) dim sql,rs,trs dim ParentDepth,ReParentPath,ParentName,MaxClassID,MaxRootID,PrevOrderID,ReChild,ReClassid,ReRootID,Reprevid'response.Write Tablename&conn&classid 'response.End() if reParentID="" then reParentID=0 else reParentID=CLng(reParentID) end if if ClaName="" then FoundErr=True response.Write"<script language='javascript'>alert('栏目名称不能为空!');history.back();</script>" response.End() end if if FoundErr=True then exit sub end if set rs = Conn.execute("select Max("&ClassID&") From "&tablename&"") MaxClassID=rs(0) if isnull(MaxClassID) then MaxClassID=0 end if rs.close ReClassID=MaxClassID+1 set rs=Conn.execute("select max("&rootid&") From "&Tablename&"") MaxRootID=rs(0) if isnull(MaxRootID) then MaxRootID=0 end if rs.close ReRootID=MaxRootID+1
if ReParentID>0 then sql="select * From "&Tablename&" where "&classid&"=" & ReParentID & "" rs.open sql,conn,1,1 if rs.bof and rs.eof then FoundErr=True response.Write"<script language='javascript'>alert('所属栏目已经被删除!');history.back();</script>" response.End() end if if FoundErr=True then rs.close set rs=nothing exit sub else ReRootID=rs(""&RootID&"") ParentName=rs(""&ClassName&"") ParentDepth=rs(""&Depth&"") reParentPath=rs(""&ParentPath&"") ReChild=rs(""&Child&"") reParentPath=reParentPath & "," & reParentID '得到此栏目的父级栏目路径 PrevOrderID=rs(""&OrderID&"") if ReChild>0 then dim rsPrevOrderID '得到与本栏目同级的最后一个栏目的OrderID set rsPrevOrderID=conn.execute("select Max("&OrderID&") From "&Tablename&" where "&ParentID&"=" & reParentID) PrevOrderID=rsPrevOrderID(0) set trs=conn.execute("select "&classID&" from "&Tablename&" where "&ParentID&"=" & reParentID & " and "&OrderID&"=" & PrevOrderID) RePrevID=trs(0) 'PrevorderID=PrevOrderID+1 '得到同一父栏目但比本栏目级数大的子栏目的最大OrderID,如果比前一个值大,则改用这个值。 set rsPrevOrderID=conn.execute("select Max("&OrderID&") From "&Tablename&" where "&ParentPath&" like '" & reParentPath & ",%'") if (not(rsPrevOrderID.bof and rsPrevOrderID.eof)) then if not IsNull(rsPrevOrderID(0)) then if rsPrevOrderID(0)>PrevOrderID then PrevOrderID=rsPrevOrderID(0) end if end if end if else RePrevID=0 end if end if rs.close else if MaxRootID>0 then '已经存在一级栏目 set trs=conn.execute("select "&classid&" from "&Tablename&" where "&RootID&"=" & MaxRootID & " and "&Depth&"=0") RePrevID=trs(0) trs.close else RePrevID=0 end if PrevOrderID=0 reParentPath="0" end if sql="Select * From "&Tablename&" Where "&ParentID&"=" & reParentID & " AND "&ClassName&"='" & ClaName & "'" set rs=server.CreateObject("adodb.recordset") rs.open sql,conn,1,1 if not(rs.bof and rs.eof) then FoundErr=True if reParentID=0 then response.Write"<script language='javascript'>alert('该一级栏目已存在!请重新填写!');history.back();</script>" response.End() else msg= ParentName & "中已经存在子栏目" & ClaName strJS="<SCRIPT language='javascript'>" & vbcrlf strJS=strJS & "alert('" & msg & "');" & vbcrlf strJS=strJS & "history.back();" & vbcrlf strJS=strJS & "</script>" response.write strJS response.End() end if rs.close set rs=nothing exit sub end if rs.close sql="Select * From "&Tablename&"" rs.open sql,conn,1,3 rs.addnew rs(""&classnameeng&"")=reclassnameeng rs(""&classconeng&"")=reclassconeng rs(""&ClassID&"")=ReClassID rs(""&ClassName&"")=ClaName rs(""&RootID&"")=ReRootID rs(""&ParentID&"")=ReParentID if ReParentID>0 then '不是一级栏目的情况下 rs(""&Depth&"")=ParentDepth+1 else rs(""&Depth&"")=0 end if rs(""&classcon&"")=ClassContent rs(""&ParentPath&"")=reParentPath rs(""&OrderID&"")=PrevOrderID rs(""&Child&"")=0 rs(""&PrevID&"")=RePrevID rs(""&NextID&"")=0 rs.update rs.Close set rs=Nothing
'更新与本栏目同一父栏目的上一个栏目的“NextID”字段值 if cint(rePrevID)>0 then conn.execute("update "&Tablename&" set "&NextID&"=" & ReClassID & " where "&classID&"=" & cint(RePrevID)) end if
if ReParentID>0 then '更新其父类的子栏目数 conn.execute("update "&Tablename&" set "&child&"="&child&"+1 where "&classID&"="&ReParentID) '更新该栏目排序以及大于本需要和同在本分类下的栏目排序序号 conn.execute("update "&Tablename&" set "&OrderID&"="&OrderID&"+1 where "&rootid&"=" & rerootid & " and "&OrderID&">" & PrevOrderID) conn.execute("update "&Tablename&" set "&OrderID&"=" & PrevOrderID & "+1 where "&classID&"=" & reClassID) end if end sub 上面是我asp的代码,我想把他转化为asp.net的.
dataset
如果简单一个SQL语句也可以吧!!!
1. 写存储过程来实现, 调用存储过程来搞定
2. 直接写sql文, 在一个事务里, 写N条sql, 检索出各个参数, 赋给变量, 在把变量的值写入数据库
3. 直接写sql文, 一条sql文里包含对各个参数的检索和添加
dim sql,rs,trs
dim ParentDepth,ReParentPath,ParentName,MaxClassID,MaxRootID,PrevOrderID,ReChild,ReClassid,ReRootID,Reprevid'response.Write Tablename&conn&classid
'response.End()
if reParentID="" then
reParentID=0
else
reParentID=CLng(reParentID)
end if if ClaName="" then
FoundErr=True
response.Write"<script language='javascript'>alert('栏目名称不能为空!');history.back();</script>"
response.End()
end if
if FoundErr=True then
exit sub
end if set rs = Conn.execute("select Max("&ClassID&") From "&tablename&"")
MaxClassID=rs(0)
if isnull(MaxClassID) then
MaxClassID=0
end if
rs.close
ReClassID=MaxClassID+1
set rs=Conn.execute("select max("&rootid&") From "&Tablename&"")
MaxRootID=rs(0)
if isnull(MaxRootID) then
MaxRootID=0
end if
rs.close
ReRootID=MaxRootID+1
if ReParentID>0 then
sql="select * From "&Tablename&" where "&classid&"=" & ReParentID & ""
rs.open sql,conn,1,1
if rs.bof and rs.eof then
FoundErr=True
response.Write"<script language='javascript'>alert('所属栏目已经被删除!');history.back();</script>"
response.End()
end if
if FoundErr=True then
rs.close
set rs=nothing
exit sub
else
ReRootID=rs(""&RootID&"")
ParentName=rs(""&ClassName&"")
ParentDepth=rs(""&Depth&"")
reParentPath=rs(""&ParentPath&"")
ReChild=rs(""&Child&"")
reParentPath=reParentPath & "," & reParentID '得到此栏目的父级栏目路径
PrevOrderID=rs(""&OrderID&"")
if ReChild>0 then
dim rsPrevOrderID
'得到与本栏目同级的最后一个栏目的OrderID
set rsPrevOrderID=conn.execute("select Max("&OrderID&") From "&Tablename&" where "&ParentID&"=" & reParentID)
PrevOrderID=rsPrevOrderID(0)
set trs=conn.execute("select "&classID&" from "&Tablename&" where "&ParentID&"=" & reParentID & " and "&OrderID&"=" & PrevOrderID)
RePrevID=trs(0)
'PrevorderID=PrevOrderID+1
'得到同一父栏目但比本栏目级数大的子栏目的最大OrderID,如果比前一个值大,则改用这个值。
set rsPrevOrderID=conn.execute("select Max("&OrderID&") From "&Tablename&" where "&ParentPath&" like '" & reParentPath & ",%'")
if (not(rsPrevOrderID.bof and rsPrevOrderID.eof)) then
if not IsNull(rsPrevOrderID(0)) then
if rsPrevOrderID(0)>PrevOrderID then
PrevOrderID=rsPrevOrderID(0)
end if
end if
end if
else
RePrevID=0
end if end if
rs.close
else
if MaxRootID>0 then '已经存在一级栏目
set trs=conn.execute("select "&classid&" from "&Tablename&" where "&RootID&"=" & MaxRootID & " and "&Depth&"=0")
RePrevID=trs(0)
trs.close
else
RePrevID=0
end if
PrevOrderID=0
reParentPath="0"
end if sql="Select * From "&Tablename&" Where "&ParentID&"=" & reParentID & " AND "&ClassName&"='" & ClaName & "'"
set rs=server.CreateObject("adodb.recordset")
rs.open sql,conn,1,1
if not(rs.bof and rs.eof) then
FoundErr=True
if reParentID=0 then
response.Write"<script language='javascript'>alert('该一级栏目已存在!请重新填写!');history.back();</script>"
response.End()
else
msg= ParentName & "中已经存在子栏目" & ClaName
strJS="<SCRIPT language='javascript'>" & vbcrlf
strJS=strJS & "alert('" & msg & "');" & vbcrlf
strJS=strJS & "history.back();" & vbcrlf
strJS=strJS & "</script>"
response.write strJS
response.End()
end if
rs.close
set rs=nothing
exit sub
end if
rs.close sql="Select * From "&Tablename&""
rs.open sql,conn,1,3
rs.addnew
rs(""&classnameeng&"")=reclassnameeng
rs(""&classconeng&"")=reclassconeng
rs(""&ClassID&"")=ReClassID
rs(""&ClassName&"")=ClaName
rs(""&RootID&"")=ReRootID
rs(""&ParentID&"")=ReParentID
if ReParentID>0 then '不是一级栏目的情况下
rs(""&Depth&"")=ParentDepth+1
else
rs(""&Depth&"")=0
end if
rs(""&classcon&"")=ClassContent
rs(""&ParentPath&"")=reParentPath
rs(""&OrderID&"")=PrevOrderID
rs(""&Child&"")=0
rs(""&PrevID&"")=RePrevID
rs(""&NextID&"")=0
rs.update
rs.Close
set rs=Nothing
'更新与本栏目同一父栏目的上一个栏目的“NextID”字段值
if cint(rePrevID)>0 then
conn.execute("update "&Tablename&" set "&NextID&"=" & ReClassID & " where "&classID&"=" & cint(RePrevID))
end if
if ReParentID>0 then
'更新其父类的子栏目数
conn.execute("update "&Tablename&" set "&child&"="&child&"+1 where "&classID&"="&ReParentID)
'更新该栏目排序以及大于本需要和同在本分类下的栏目排序序号
conn.execute("update "&Tablename&" set "&OrderID&"="&OrderID&"+1 where "&rootid&"=" & rerootid & " and "&OrderID&">" & PrevOrderID)
conn.execute("update "&Tablename&" set "&OrderID&"=" & PrevOrderID & "+1 where "&classID&"=" & reClassID)
end if
end sub
上面是我asp的代码,我想把他转化为asp.net的.