郭绍永 徐慧玲

(1.新乡医学院,河南 新乡 453003;2.开封大学,河南 开封 475004)

由于我校邮件系统经常出现问题,而且无法升级,所以学校决定更换邮件系统,使用新的更先进的邮件系统,在前期的数据集成作完以后,目前需要进行老邮箱邮件向新邮箱中迁移,老邮箱的用户名是自己申请时随意申请的,只要不重复[1]即可,新的邮件系统使用的是以工号作为邮件名,这样邮件迁移就存在很大的问题,需要把老用户的用户名跟现在的工号进行对应,但是当时邮件中并没有工号记录,所以就很难进行对应,只能让各部门上报老邮件名和自己的工号对应关系。

1 系统需求分析

所有部门报上来统计后发现统计的数据跟原有邮箱数相差很远,统计了620个邮箱对应关系,但是总邮箱是1400个。然后就从老邮件中导出邮箱列表,从中去除已经统计的用户邮箱,剩下没有统计的,以便后期进行有针对性的查找,Excel有一个小小的缺陷.就是无法自动识别重复的记录[2]。找了很多软件都无法实现该功能,所以决定自己开发一个程序来解决这个问题,需要达到的目标是:

1)首先可以将两个Excel表转化为两个数据库表。

2)能够比较两个表的共同项,将相同的删除,剩下不同的保留。

3)显示已经删除的记录。

4)显示未删除的记录。

2 功能设计

系统功能主要包含以下几个模块,如图1所示。

图1 系统功能图

3 系统实现

首先,将老邮箱所有邮件用户从邮件中导出成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的权限设为可修改权限,不然对数据库的操作会出现错误。

4 结束语

对重复记录删除[3]的研究看似比较容易,但是真正实现起来也并不那幺简单,能够把系统作的更人性化,更易推广性是较难的一个课题,后期还需要长期研究,不断探索寻求更优方案。

[1]邓亮,胡晓勤,梁刚.基于重复数据删除技术的SQL Server数据库备份系统[J].计算机安全,2011(7):9-12.

[2]刘燕玲.利用高级筛选功能巧妙删除Excel的重复记录[J].农村电工,2012,20(9):38.

[3]王志军.解决工作表数据的重复问题[J].电脑知识与技术:经验技巧,2013(7):39.