郭紹永 徐慧玲
(1.新鄉(xiāng)醫(yī)學(xué)院,河南 新鄉(xiāng) 453003;2.開(kāi)封大學(xué),河南 開(kāi)封 475004)
由于我校郵件系統(tǒng)經(jīng)常出現(xiàn)問(wèn)題,而且無(wú)法升級(jí),所以學(xué)校決定更換郵件系統(tǒng),使用新的更先進(jìn)的郵件系統(tǒng),在前期的數(shù)據(jù)集成作完以后,目前需要進(jìn)行老郵箱郵件向新郵箱中遷移,老郵箱的用戶名是自己申請(qǐng)時(shí)隨意申請(qǐng)的,只要不重復(fù)[1]即可,新的郵件系統(tǒng)使用的是以工號(hào)作為郵件名,這樣郵件遷移就存在很大的問(wèn)題,需要把老用戶的用戶名跟現(xiàn)在的工號(hào)進(jìn)行對(duì)應(yīng),但是當(dāng)時(shí)郵件中并沒(méi)有工號(hào)記錄,所以就很難進(jìn)行對(duì)應(yīng),只能讓各部門上報(bào)老郵件名和自己的工號(hào)對(duì)應(yīng)關(guān)系。
所有部門報(bào)上來(lái)統(tǒng)計(jì)后發(fā)現(xiàn)統(tǒng)計(jì)的數(shù)據(jù)跟原有郵箱數(shù)相差很遠(yuǎn),統(tǒng)計(jì)了620個(gè)郵箱對(duì)應(yīng)關(guān)系,但是總郵箱是1400個(gè)。然后就從老郵件中導(dǎo)出郵箱列表,從中去除已經(jīng)統(tǒng)計(jì)的用戶郵箱,剩下沒(méi)有統(tǒng)計(jì)的,以便后期進(jìn)行有針對(duì)性的查找,Excel有一個(gè)小小的缺陷.就是無(wú)法自動(dòng)識(shí)別重復(fù)的記錄[2]。找了很多軟件都無(wú)法實(shí)現(xiàn)該功能,所以決定自己開(kāi)發(fā)一個(gè)程序來(lái)解決這個(gè)問(wèn)題,需要達(dá)到的目標(biāo)是:
1)首先可以將兩個(gè)Excel表轉(zhuǎn)化為兩個(gè)數(shù)據(jù)庫(kù)表。
2)能夠比較兩個(gè)表的共同項(xiàng),將相同的刪除,剩下不同的保留。
3)顯示已經(jīng)刪除的記錄。
4)顯示未刪除的記錄。
系統(tǒng)功能主要包含以下幾個(gè)模塊,如圖1所示。
圖1 系統(tǒng)功能圖
首先,將老郵箱所有郵件用戶從郵件中導(dǎo)出成EXCEL,字段有用戶姓名、郵箱名稱、工作部門、聯(lián)系電話,把這個(gè)EXCEL文件轉(zhuǎn)化為Access數(shù)據(jù)庫(kù)表,有兩種方法:
方法一:打開(kāi)Access數(shù)據(jù)庫(kù),點(diǎn)導(dǎo)入Excel,選中要導(dǎo)入的Excel表導(dǎo)入即可自動(dòng)生動(dòng)Access數(shù)據(jù)表,起名為Email1。把已經(jīng)統(tǒng)計(jì)過(guò)的郵件用同樣的方式導(dǎo)入數(shù)據(jù)表eamil2,這樣完成基本操作,接下用程序來(lái)實(shí)現(xiàn)從Email1表中刪除Email2表中存在的郵件名相同的記錄。
方法二:直接在系統(tǒng)界面上顯示兩個(gè)導(dǎo)入框,選中兩個(gè)EXCEL表,點(diǎn)擊導(dǎo)入即把數(shù)據(jù)從EXCEL中讀入數(shù)據(jù)表Email1和Email2中。此方法更便捷,所以系統(tǒng)采用方法二轉(zhuǎn)換數(shù)據(jù)。
程序使用ASP實(shí)現(xiàn),下面是主要代碼:
連接數(shù)據(jù)庫(kù)yjdb,并從數(shù)據(jù)表Email1中刪除在數(shù)據(jù)表Email2中存在的郵件,剩下的即為需要的內(nèi)容。
<%set conn=server.CreateObject("adodb.connection")
dbpath=server.MapPath("database/yjdb.mdb")
conn.open"Driver={Microsoft Access Driver(*.mdb)};dbq="&dbpath
sql="delete from Email1 where yxmc in (select yxmc from Email2)"
Set rs=Server.CreateObject("ADODB.Recordset")
conn.execute sql
sql="select*from Email1"
rs.open sql,conn,1,1
%>
刪除重復(fù)記錄后,下面是顯示剩余記錄的結(jié)果。
<tr bord=1 align=’center’><td width=’20%’>郵箱名稱</td><td width=’20%’>用戶姓名 </td><td width=’20%’>工作部門</td><td width=’20%’>聯(lián)系電話</td></tr>
<%do while Not rs.eof%>
<tr align=’center’><td><%=rs("yxmc")%> </td><td><%=rs("yhxm")%> </td><td><%=rs("gzbm")%> </td><td><%=rs("lxdh")%> </td></tr>
<%rs.movenext loop%>
在所有操作時(shí),數(shù)據(jù)庫(kù)的權(quán)限一定記得把Eeveyone的權(quán)限設(shè)為可修改權(quán)限,不然對(duì)數(shù)據(jù)庫(kù)的操作會(huì)出現(xiàn)錯(cuò)誤。
對(duì)重復(fù)記錄刪除[3]的研究看似比較容易,但是真正實(shí)現(xiàn)起來(lái)也并不那么簡(jiǎn)單,能夠把系統(tǒng)作的更人性化,更易推廣性是較難的一個(gè)課題,后期還需要長(zhǎng)期研究,不斷探索尋求更優(yōu)方案。
[1]鄧亮,胡曉勤,梁剛.基于重復(fù)數(shù)據(jù)刪除技術(shù)的SQL Server數(shù)據(jù)庫(kù)備份系統(tǒng)[J].計(jì)算機(jī)安全,2011(7):9-12.
[2]劉燕玲.利用高級(jí)篩選功能巧妙刪除Excel的重復(fù)記錄[J].農(nóng)村電工,2012,20(9):38.
[3]王志軍.解決工作表數(shù)據(jù)的重復(fù)問(wèn)題[J].電腦知識(shí)與技術(shù):經(jīng)驗(yàn)技巧,2013(7):39.