APP下载

高校实验室信息统计检测系统提交数据问题的探讨

2015-03-12张国强姚海燕

安阳工学院学报 2015年6期
关键词:字段字符字节

张国强,李 响,姚海燕

(安阳工学院,河南安阳455000)

高等学校实验室信息统计检测上报系统(以下简称上报系统),用于高等院校每年向国家教育部上报数据的校验、审核、报表打印和网上传送,是一个设备信息管理的数据库管理系统。按照操作说明系统运行环境中对客户端的说明原文是“Windows 98/Xp/2000/2003 以上,所用机器能上Cernet 网”。而目前,大多数电脑的运行环境是win7或win8,这就存在着兼容性的问题。

1 上报数据存在的问题

1.1 上报系统兼容性问题

上报系统中提交数据时追加来源对话框如图1所示。从追加数据支持的文件格式就可以看出,它所支持的文件有些已经可以用古老来形容了。例如Excel版本是5.0,而我们现在使用的电脑安装的Excel版本都是2003以上的版,有的已经在使用2013版。又例如Table(DBF)连VFP6.0的表文件竟然也不能兼容。

关于数据库的软件有很多,而大多数人掌握的还是Excel,而各个部门的情况也不一样,安装的Excel 版本也是各种各样。所以在进行汇总时,我们是不能直接导入上报系统的。

1.2 数据宽度的问题

由于学校各个部门和实验室很多,表中的字段在存储的时候,没有严格按照上报系统规定的数据宽度来进行限制。实际上使用Excel 的话,严格按照指定的宽度来进行限制是难以完成的。这就导致除了文件格式的问题,还有数据宽度的问题都需要解决。

在上报系统中,对字段的数据宽度做了限制,其中字段的名称、数据类型和数据长度的具体要求如表1所示。在实际的文件中,“仪器名称”、“型号”、“规格”三个字段均有部分记录超出了规定的长度。

表1 字段属性

2 文件的处理方案

上报系统可以支持Excel 格式的文件导入,但最高只能支持Excel5.0版本的文件。而Excel5.0的文件系统只能支持16000 多条记录。而实际文件的记录数目超出了这个上限。保存为5.0版本后,缺少了部分记录。这样,用简单的“另存为”已经不能完成任务了。

对付旧版本的软件,还需要用低版本的软件来对付。在处理数据到正确上传过程中,除了用来汇总文件的一台电脑安装的Excel 2013外,还使用了另一台电脑。该电脑使用的操作系统为Windows XP,安装的软件分别有Access 2003 和VFP6.0。因为Excel 和Access 都是微软公司的办公软件Microsoft office 的组件,而同一台电脑无法同时安装两个不同版本的Office,所以必须用两台电脑完成。使用Access 2003 主要是用它来把Excel2003 的文件转换成适合VFP 处理的DBF 文件。当然VFP6.0也可以直接导入Excel文件,但在导入时,对Excel文件的兼容性不如Access,且有些文件直接导入VFP会出现失败。经过一段时间的研究和尝试,把汇总好的2013版的Excel文件,最后生成可以导入上报系统的文件,大致总结了4个步骤。

2.1 文件转换

将Excel 文件另存为2003 兼容格式,使用Access 2003 导入excel 文件,并导出为dBASE5 文件格式。

2.2 数据截短

长度超过限制的字段主要来源于“仪器名称”、“型号”、“规格”等字段。对于数万条记录,如果靠人工重新归纳数据字符表达的含义,是非常烦琐的一件事情。另外,系统中规定的数据长度不是很短,前面的字符大致可以看出数据表达的重要信息。所以对于超出长度的数据,采用删除尾部字符的方法截取数据。在VFP6.0 中,限制字符宽度是比较容易的,只需打开dBASE5 文件,按照表1修改表结构,就可以将数据长度截短。

2.3 删除乱码

因为文档中的数据是由中文、英文、数字和标点等字符混合组成的,其中英文、数字和英文的标点符号占一个宽度,汉字和中文的标点符号占2个宽度,所以在长度截短后,会出现半个汉字或半个中文标点的问题。例如:第2611条记录,型号的内容为“Freescale Cortex-A9系列”,前面英文、数字和“-”符号的部分“Freescale Cortex-A9”,包括中间一个空格长度为19,截取20个长度,正好把紧挨的“系”字截去一半。虽然在VFP 中,截去的半个汉字不显示,但在用上报系统提交时,会被检测到,导致审核不能通过。如果截去的是半个中文标点,情况和半个汉字是一样的。因此,需要把最后出现半个汉字或半个标点的情况,再减少一个长度,使之长度为19。数据中的半个汉字可能是任意一个汉字的一半,VFP 中没有这样的函数,可以检测一个字符是否为半个汉字。但有可以检测字符是否为前导字节的函数ISLEADBYTE(),该函数可以判断字符是否是双字节字符。如果字符的第一个字节是前导字节,那么字符是双字节字符,否则字符是单字节字符。判断最后一个字符是否为半个汉字或半个中文标点,可以通过判断是否为双字节字符的前导字节的方法,使用该函数判断最后一个字符是否为双字节字符的前导字节。如果是就删除最后一个字符,使其变为空格。

但在实际使用过程中,发现ISLEADBYTE()对于汉字的后半部分,检测的结果也为真。就是意味着,即使最后一个字符是完整的汉字,也会和半个汉字的情况一样,函数返回值为真,即最后一个是半个汉字还是一个完整的汉字是没有办法用该函数区分的。编程思路调整为用ISLEADBYTE()函数检测最后一个字符,不管是完整的汉字还是半个汉字都删掉。长度超过限制的字段主要来源于“仪器名称”、“型号”、“规格”等字段。对于这些长度超过限制需要截短的字符来说,其意义已经不能非常完整的表达,但前面的字符应该基本可以体现其主要的含义,后面的字符多一个或者少一个,对于表达的意义已经影响不大,所以这种方法也是可行的。所以在选取字符进行判断时,使用了rightc()函数。该函数从一个字符表达式中返回最右边指定数目的字符。字符表达式可以包含单字节和双字节的任意组合。而比较常用的right()函数,只返回单字节的表达式。删除最后一个字符是用的是leftc()函数和lenc()函数。这些带c的函数和rightc()函数效果相似。

具体程序如下:

scan for ISLEADBYTE(rightc(仪器名称,1))

repl 仪器名称with leftc(仪器名称,(lenc(仪器名称)-1))

endscan

删除其他字段的程序和上述程序一样,把字段名改一下即可,不再一一列出。

2.4 数据导出上报

上传系统支持的导入文件类型如图1 所示。其中Table(DBF)就是VFP 表文件的格式。但是VFP6.0的表文件导入以后,数据全部空白,说明系统对VFP6.0的表文件也不兼容。VFP6.0文件导出支持的格式如图2 所示。其中DIF 文件一种可进行数据互换的电子表格,兼容性较好,且上报系统也支持该格式文件,所以最后选择了“Data Interchange Format(DIF)”格式的文件导出。最终上报审核成功。

3 结束语

当然,Excel和Access也都是数据库软件,可以对数据进行处理。之所以选择使用VFP,主要原因是VFP 支持的数据格式与上报系统相似度最高,而数据导入导出是最容易出现兼容性问题的关键一步。如果数据处理好了,但是因为格式的原因不能导入,将会前功尽弃,最后不得不更换软件再重新处理。为了确保该提交数据方案的通用性,数据处理的过程较为烦琐。另外,Excel2013 是向下兼容的,所以2013版的文件可以成功上报,低版本的文件也是可以的。在实际的使用中,可以对有些步骤进行精简,至于如何精简,需要具体问题具体分析,这里也不能一一列举了。

[1]李亮辉.Excel 应用技巧与实战[M].北京:清华大学出版社,2015.

[2]崔洪芳.Access 数据库应用技术[M].北京:清华大学出版社,2014.

[3]蔡洪涛,曾羲梅,李茜.Visual FoxPro 程序设计实践教程[M].北京:科学出版社,2014.

猜你喜欢

字段字符字节
带钩或不带钩选择方框批量自动换
No.8 字节跳动将推出独立出口电商APP
一种优化的手写字符自动分割算法
论高级用字阶段汉字系统选择字符的几个原则
字符代表几
图片轻松变身ASCⅡ艺术画
浅谈台湾原版中文图书的编目经验
No.10 “字节跳动手机”要来了?
无正题名文献著录方法评述
无正题名文献著录方法评述