摘 要:在日常办公中,经常遇到规范表格的填写,由于数量大、项目多、格式统一,利用手工填写,一般都是效率低、易出错;一旦有变更,修改麻烦;每张表格必须要单独保留,查询、修改很不方便;如果编写程序相对很专业,开发时间长,不利于加快工作进度。由于所填充的内容一般都是规范的数据,做统计时都放在excel表格,利用access,把现有数据导入后,制作窗体,可满足查询、修改、打印等需求,开发简单,效率高,功能实用。
关键词:表格;自动填充;access;窗体;excel 数据库
1 引言
在日常工作中,所遇到的表格很多,填写内容规范、项目多、数量大、格式统一,在一般情况下,都是手工统计完毕,利用word、excel文档来保存表格,以后修改、查询很麻烦。编写程序需要的专业水平一般职工又很难达到,再加上开发时间长,不利于促进工作。
2 表格的一般特征和填写普遍问题
一般来讲,我们填写的表格项目和内容是一对一的,通常项目很多,数量大,同一类型的表格格式是固定、好多年不变,特别是经过体系认证后,表格作为记录固定下来,一般不变更。填写的表格内容每年都在变,而且和上一年甚至前几年都有关联,通常是要做成记录、统计、保存下来,年底总结、上报甚至以后几年都要查询利用的。
部分特殊表格在上报时还要带照片,通常的做法是向职工收取照片后统一贴在手工或者是打印的表格上,费时、费力、易出错。目前一般单位都有成熟的人事系统,该系统里职工照片、职工信息很准确、全面,如能利用现有的系统,直接把照片打印在表格上,同时实现表格内容的自动填写,将大大加快表格填写的效率、提高准确率。
3 问题的解决
最近接到一个任务,要将职工的技能鉴定申请表填写完毕,证书信息及相片打印到表格上,并且还要传到网上供用技能鉴定中心查询。原始职工单人信息数据有16项内容,包含单位、姓名、性别、出生年月、文化程度、身份证号、工作时间、申报工种、身份、本专业年限、民族、政治面貌、发证时间、原技术等级、申报等级、备注等信息的Excel表。
如果用Excel表或者word制作单人表格,考虑到时间上的紧迫性,还有操作的易用性,以后上网查询所需数据库的兼容性,Access具有强大的窗体创建、报表打印、VBA编程功能,足以胜任大部分小型数据库应用系统的开发,因此决定选用Access来开发。
首先,因为表格内容填写标准不一,要规范技能鉴定信息表格内容,为减少给后续开发带来麻烦,须保证数据规范,例如姓名重复、日期、时间型的数据、身份证号码比较长需写成文本型等。将规范好的表格导入Access,做进一步检查,如果没错误的话,即可以进行下一步。
其次是窗体的制作,打开设计视图,调出设计工具箱,用线或者矩形画出我们需要填写的表格,把需要填写的项目放到指定的位置,进一步调整表格和填写内容,使之符合填写要求,打印一份,进行比对,如不合适继续调整,直到最终表格和需填写表格一致。
再次考虑照片的自动添加,先插入一个“图像”控件,设置其图片属性为证书模板图片,设置其大小为证书模板的大小,设置其可见性为否,这样有利于证书信息的排版,且不会打印出来;再依次插入要打印的字段列表,设置好字体和字号;最后再插入一个“图像”控件,放置于打印相片的地方,设置其大小为相片的大小,设置其名称为“stuimg”。
2. 依次点击菜单栏“视图→代码”命令,进入VBA代码编写窗口,编写如下代码:
Private Sub 主体_Format(Cancel As Integer, FormatCount As Integer)
Dim imgpath As String
' 依据应用程序路径、姓名得到相片路径
imgpath = Application.CurrentProject.Path + "" + 姓名.Value + ".jpg"
' 判断照片是否存在,如果不存在则显示一张空白的图片。
If Dir(imgpath) = "" Then imgpath = Application.CurrentProject.Path + "noimg.bmp"
Stuimg.Picture = imgpath
End Sub
由于照片的路径指定为和Access数据库在同一目录下,因此,需要把照片和Access数据库放到一起,否则就无法实现照片自动插入表格;照片的定位是靠姓名来确定的,因此姓名不能重复,照片的名字必须和姓名一致,格式为jpg格式,如果采用身份证或者其他的信息来定位照片,涉及到以后照片管理不方便。再看窗体就发现,照片已经可以自动添加到表格里,如下图:
最后是表格的打印,逐记录打印。所有职工的信息和照片自动添加到指定位置,效率很高,技术含量低,操作也简单。
4、讨论
存在的问题:
A、 采用名字定位职工照片,存在名字重复的问题,为了区分每一个人,必须把重复的名字进行一定的调整。
B、 照片路径和Access数据库指定为同一路径,管理起来有点混乱。
C、 打印时只能一条记录一条打印,否则照片就不自动更新。
D、 修改和查询记录必须在表格里更改。
后续改进方向:
A、 采用职工姓名加身份证号码来确定照片,确保不会重复。
B、 把照片用统一名字的格式比如职工姓名加身份证号码存放到同一目录下,尽可能不要和Access数据库指定为同一路径,以方便管理。
C、 可以制作专门的打印模块,实现自动批量打印。
D、 可以制作专门的查询和修改记录模块,防止出错导致整个库瘫痪。
E、 可以进一步开发成一个小型的软件,走更专业化的道路。
整个工作在2个小时内圆满的完成,比过去要忙活一个星期来讲,效率得到了很大提高,由于直接从数据库提取数据,出错的几率基本为0,再加上职工信息表格是标准的库格式,为以后建立技能鉴定数据库也打好了基础。