最近總算是有點空了,打算把我的dvbbs 6.x access轉移到cnforums,遇到了一些問題,寫在這里,希望對以后的朋友有所幫助。

首先,打算用寶玉的升級程序來進行數據庫的升級。在導出數據的時候碰到一些錯誤,主要是由于空值引起的。我將數據庫的空值條目填充數據,然后再導入就沒有問題了。

其次,在進行導出的時候發現,程序將所有的帖子都放到了forums_Threads表中,這顯然是錯誤的,因為forums_Threads表中應該只存在主題貼。我察看的程序的源碼和存儲過程,由于對cnforums不熟悉,接觸.net的時間也不長,并沒有找到問題所在。還在用戶表和短消息都可以正常轉換,現在的問題只剩下帖子表了。

沒有想到很好的解決辦法,對比了dv和cnforums的數據庫結構,發現還是比較相似的,可以考慮手工修改數據庫結構。我首先將dv的數據庫結構、字段改為cnforums的,然后導入到sql中即可。用這種方法總算是解決了問題。

另外,cnforums不知道在哪里刪除用戶,只看到了移除權限,但是用戶仍然是存在的。不能批量刪除某個用戶的帖子,因為論壇里經常出現一些非法言論顯然也是不太方便的。不過,這個問題可以通過自己寫存儲過程來解決。另外,缺少首頁調用,為了省事,我用asp寫了一個,先用著,隨后附上源碼。

首先,應當感謝寶玉的辛勤工作,為大家提供了一個很優秀的論壇,盡管目前還有一些不盡人意之處,但是,瑕不掩瑜。

<%
dim conn
dim connstr
dim db
set conn=server.createobject("ADODB.CONNECTION")
connstr="Provider=MSDASQL; Driver={SQL Server}; Server=(local); Database=bbs; UID=sa; PWD=321;"
conn.open connstr

sub CloseConn()
 conn.close
 set conn=nothing
end sub

    if request.querystring("shu")="" or request.querystring("shu")=0 then
       shu=10
    else
       shu=CINT(request.querystring("shu"))
    end if
 
sqlt="select forums_Posts.ThreadID,forums_Posts.Subject from forums_Posts,forums_Threads where forums_Posts.ThreadID=forums_Threads.ThreadID order by forums_Posts.ThreadID desc"
Set rst=Server.CreateObject("ADODB.RecordSet")
rst.Open sqlt,conn,1,1
 
    if rst.eof and rst.bof then %>
      document.write('<p align="center">Sorry! 沒有帖子</p>'); 
    <% else
        news=1 
 do while not rst.eof %>
    document.write('<table width="160" height="10" cellpadding="2" cellspacing="1" bgcolor="#FFFFFF"><TR><td width="15" bgColor=#f1f1f1><img src="/shop/image/arrow2.gif" width="15" height="15"></td><TD width="133" bgColor=#f1f1f1><a href="ShowThread.aspx?PostID=<%=rst("ThreadID")%>" title="<%=rst("Subject")%>" target="_blank"><%=rst("Subject")%></a></TD></TR></table>');
 <% news=news+1
        if news>shu then exit do 
 rst.movenext          
 loop      
    end if 
    rst.close
    set rst=nothing  
 call CloseConn()
 %>