此贴本是回复另一个网友的,为方便大家所以另起新贴。如题就写一下V1.04的单一栏目转换代码给一些急性子的朋友用:相信自己,一步步来,我还不是自己转,我是先用风讯建好相应的栏目,再把所属的classid记下来,再一个个栏目转,因为我才有十个栏目所以不编自动建栏的程序,几分钟不到就全转完了。如果你的原文章内容复杂就对照着NEW表一个个字段在rs2.AddNew()后面依照着写就行了。给自己动下大脑,以后再有什么升级的自己就可以搞定了。首先说一下我本人,我是个没有什么耐心的人所以写得并不完整,请有心之人完善给大家用。谢谢。
''注释:其中sql1="SELECT * FROM News where ClassID = 1" 的1是V1.04的表New里的文章所属的栏目ID,跟表NewClass的ClassEName是相应的,也就是你栏目的英文名了。意思就是列出此栏目的所有文章。
另:rs2("ClassID") = "0512610290548013" 中的0512610290548013意思是:我在V2中使用风讯新建的栏目ClassID,即表Newclass中的ClassID并不是ClassEName。
conver.asp内容如下:
<!--#include file="conn.asp"-->
<%
Set rs1 = Server.CreateObject("ADODB.Recordset")
sql1="SELECT * FROM News where ClassID = 1"
rs1.open sql1,conn1,1,1
Set rs2 = Server.CreateObject("ADODB.Recordset")
sql2="SELECT * FROM News"
rs2.open sql2,conn2,1,3
if rs1.BOF and rs1.EOF then
Response.Write "没有任何记录"
else
rs1.MoveFirst
While not rs1.EOF
dim RandomFigure,INewsID
INewsID = GetRandomID18()
RandomFigure = CStr(Int((999 * Rnd) + 1))
rs2.AddNew()
rs2("ClassID") = "0512610290548013"
rs2("NewsID") = INewsID
rs2("Title") = rs1("Title")
if rs1("SubHead") <> "" then
rs2("SubTitle") = rs1("SubHead")
end if
if rs1("HeadNews") = "true" then
rs2("HeadNewsTF") = "1"
end if
if rs1("HeadNewsPath") <> "" then
rs2("HeadNewsPath") = rs1("HeadNewsPath")
end if
if rs1("KeyWord") <> "" then
rs2("KeyWords") = rs1("KeyWord")
end if
rs2("TitleStyle") = "#UUUUUU00"
if rs1("Source") <> "" then
rs2("TxtSource") = rs1("Source")
else
rs2("TxtSource") = "不详"
end if
rs2("Content") = rs1("Content")
rs2("Path") = year(rs1("AddNewsDate"))&"/"&month(rs1("AddNewsDate"))&"-"&day(rs1("AddNewsDate"))&"/"
rs2("Filename") = hour(now())&minute(Now())&second(now())&RandomFigure
rs2("FileExtName") = "html"
rs2("AuditTF") = "1"
rs2("AddDate") = rs1("AddNewsDate")
rs2("Author") = rs1("Author")
rs2("Editer") = rs1("Editer")
rs2("ClickNum") = rs1("ClickNum")
rs2("ReviewTF") = "1"
rs2("NewsTemplet") = "/Templets/NewsClass/News.htm"
rs1.MoveNext
wend
rs2.Update
Response.Write "数据转换完成"
end if
rs1.Close
rs2.Close
set rs1=nothing
set rs2=nothing
%>
<%
Function GetRandomID18()
Dim TempYear,TempMonth,TempDay,TempHour,TempMinute,TempSecond,RandomFigure
Dim TempStr,NowTime
NowTime = Now()
TempYear = Right(CStr(Year(NowTime)),2)
TempMonth = CStr(Month(NowTime))
if Len(TempMonth) = 1 then
TempHour = "0" & TempMonth
end if
TempDay = CStr(Day(NowTime))
if Len(TempDay) = 1 then
TempHour = "0" & TempDay
end if
TempHour = CStr(Hour(NowTime))
if Len(TempHour) = 1 then
TempHour = "0" & TempHour
end if
TempMinute = CStr(Minute(NowTime))
if Len(TempMinute) = 1 then
TempMinute = "0" & TempMinute
end if
TempSecond = CStr(Second(NowTime))
if Len(TempSecond) = 1 then
TempSecond = "0" & TempSecond
end if
Randomize
RandomFigure = CStr(Int((99999 * Rnd) + 1))
GetRandomID18 = TempYear & TempMonth & TempDay & TempHour & TempMinute & TempSecond & RandomFigure
End Function
%>
哎哟,累了!那么多字段要写,实在没有耐心啦。请高手自己对照着数据库依样写上去就行了,我真的很理解风讯,若是风讯全免费相信不会得到更好的程序!按以上的代码也可以转出来的,只是如果你原来的数据库有什么专题的或是图片的推荐呀什么的自己对照着写就行了,我的可没有这些,所以不想写了,因为我的原是写从动易V3.51转的,为方便大家才写这个。
以下是conn.asp的内容:第一个代表原V1.04的数据库,第二个代表V2的数据库,把红色的改为相应的数据库名就行了。都统一放在同一个目录文件下。执行conver.asp就行了。
<%
ConnStr1 = "Provider = Microsoft.Jet.OLEDB.4.0;Data Source = "&server.MapPath("V104.mdb")
Set conn1 = Server.CreateObject("ADODB.Connection")
conn1.open ConnStr1
ConnStr2 = "Provider = Microsoft.Jet.OLEDB.4.0;Data Source = "&server.MapPath("FooSun_Data.mdb")
Set conn2 = Server.CreateObject("ADODB.Connection")
conn2.open ConnStr2
%>
请高高手,把以上的代码完善就是一个很好的转换程序了,可以演变为论坛转换啦之类的。有什么问题再说了。转换前请一定注意备份好数据,因此造成的任何事故,我不负喔。以上程序已经测试过。
附上我动易V3,.51至风讯V2.0的conver.asp
<!--#include file="conn.asp"-->
<%
Set rs1 = Server.CreateObject("ADODB.Recordset")
sql1="SELECT * FROM Article where ClassId = 1"
rs1.open sql1,conn1,1,1
Set rs2 = Server.CreateObject("ADODB.Recordset")
sql2="SELECT * FROM News"
rs2.open sql2,conn2,1,3
if rs1.BOF and rs1.EOF then
Response.Write "没有任何记录"
else
rs1.MoveFirst
While not rs1.EOF
dim RandomFigure,INewsID
INewsID = GetRandomID18()
RandomFigure = CStr(Int((999 * Rnd) + 1))
rs2.AddNew()
rs2("ClassID") = "0512610290548013"
rs2("NewsID") = INewsID
rs2("Title") = rs1("Title")
rs2("TitleStyle") = "#UUUUUU00"
if rs1("CopyFrom") <> "" then
rs2("TxtSource") = rs1("CopyFrom")
else
rs2("TxtSource") = "不详"
end if
rs2("Content") = rs1("Content")
rs2("Path") = year(rs1("UpdateTime"))&"/"&month(rs1("UpdateTime"))&"-"&day(rs1("UpdateTime"))&"/"
rs2("Filename") = hour(now())&minute(Now())&second(now())&RandomFigure
rs2("FileExtName") = "html"
rs2("AuditTF") = "1"
rs2("AddDate") = rs1("UpdateTime")
rs2("Author") = rs1("Author")
rs2("Editer") = rs1("Editor")
rs2("ClickNum") = rs1("Hits")
rs2("ReviewTF") = "1"
rs2("NewsTemplet") = "/Templets/NewsClass/News.htm"
rs1.MoveNext
wend
rs2.Update
Response.Write "数据转换完成"
end if
rs1.Close
rs2.Close
set rs1=nothing
set rs2=nothing
%>
<%
Function GetRandomID18()
Dim TempYear,TempMonth,TempDay,TempHour,TempMinute,TempSecond,RandomFigure
Dim TempStr,NowTime
NowTime = Now()
TempYear = Right(CStr(Year(NowTime)),2)
TempMonth = CStr(Month(NowTime))
if Len(TempMonth) = 1 then
TempHour = "0" & TempMonth
end if
TempDay = CStr(Day(NowTime))
if Len(TempDay) = 1 then
TempHour = "0" & TempDay
end if
TempHour = CStr(Hour(NowTime))
if Len(TempHour) = 1 then
TempHour = "0" & TempHour
end if
TempMinute = CStr(Minute(NowTime))
if Len(TempMinute) = 1 then
TempMinute = "0" & TempMinute
end if
TempSecond = CStr(Second(NowTime))
if Len(TempSecond) = 1 then
TempSecond = "0" & TempSecond
end if
Randomize
RandomFigure = CStr(Int((99999 * Rnd) + 1))
GetRandomID18 = TempYear & TempMonth & TempDay & TempHour & TempMinute & TempSecond & RandomFigure
End Function
%>
给大家参考。自建栏目的请自行研究了,因为我个人研究时是一个个来的,没有涉及到请多谅解。