郭紹永 徐慧玲
(1.新鄉醫學院,河南 新鄉 453003;2.開封大學,河南 開封 475004)
由于我校郵件系統經常出現問題,而且無法升級,所以學校決定更換郵件系統,使用新的更先進的郵件系統,在前期的數據集成作完以后,目前需要進行老郵箱郵件向新郵箱中遷移,老郵箱的用戶名是自己申請時隨意申請的,只要不重復[1]即可,新的郵件系統使用的是以工號作為郵件名,這樣郵件遷移就存在很大的問題,需要把老用戶的用戶名跟現在的工號進行對應,但是當時郵件中并沒有工號記錄,所以就很難進行對應,只能讓各部門上報老郵件名和自己的工號對應關系。
所有部門報上來統計后發現統計的數據跟原有郵箱數相差很遠,統計了620個郵箱對應關系,但是總郵箱是1400個。然后就從老郵件中導出郵箱列表,從中去除已經統計的用戶郵箱,剩下沒有統計的,以便后期進行有針對性的查找,Excel有一個小小的缺陷.就是無法自動識別重復的記錄[2]。找了很多軟件都無法實現該功能,所以決定自己開發一個程序來解決這個問題,需要達到的目標是:
1)首先可以將兩個Excel表轉化為兩個數據庫表。
2)能夠比較兩個表的共同項,將相同的刪除,剩下不同的保留。
3)顯示已經刪除的記錄。
4)顯示未刪除的記錄。
系統功能主要包含以下幾個模塊,如圖1所示。

圖1 系統功能圖
首先,將老郵箱所有郵件用戶從郵件中導出成EXCEL,字段有用戶姓名、郵箱名稱、工作部門、聯系電話,把這個EXCEL文件轉化為Access數據庫表,有兩種方法:
方法一:打開Access數據庫,點導入Excel,選中要導入的Excel表導入即可自動生動Access數據表,起名為Email1。把已經統計過的郵件用同樣的方式導入數據表eamil2,這樣完成基本操作,接下用程序來實現從Email1表中刪除Email2表中存在的郵件名相同的記錄。
方法二:直接在系統界面上顯示兩個導入框,選中兩個EXCEL表,點擊導入即把數據從EXCEL中讀入數據表Email1和Email2中。此方法更便捷,所以系統采用方法二轉換數據。
程序使用ASP實現,下面是主要代碼:
連接數據庫yjdb,并從數據表Email1中刪除在數據表Email2中存在的郵件,剩下的即為需要的內容。
<%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
%>
刪除重復記錄后,下面是顯示剩余記錄的結果。
<tr bord=1 align=’center’><td width=’20%’>郵箱名稱</td><td width=’20%’>用戶姓名 </td><td width=’20%’>工作部門</td><td width=’20%’>聯系電話</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%>
在所有操作時,數據庫的權限一定記得把Eeveyone的權限設為可修改權限,不然對數據庫的操作會出現錯誤。
對重復記錄刪除[3]的研究看似比較容易,但是真正實現起來也并不那么簡單,能夠把系統作的更人性化,更易推廣性是較難的一個課題,后期還需要長期研究,不斷探索尋求更優方案。
[1]鄧亮,胡曉勤,梁剛.基于重復數據刪除技術的SQL Server數據庫備份系統[J].計算機安全,2011(7):9-12.
[2]劉燕玲.利用高級篩選功能巧妙刪除Excel的重復記錄[J].農村電工,2012,20(9):38.
[3]王志軍.解決工作表數據的重復問題[J].電腦知識與技術:經驗技巧,2013(7):39.