基于VFP报表条形码CODE128A的研究与实现

时间:2022-08-05 08:30:39

基于VFP报表条形码CODE128A的研究与实现

摘要在Visual FoxPro的报表里利用CODE128A码位1或0来控制报表里的竖线是否显示,来实现在VFP报表里显示CODE128A码供条形码枪扫描。

【关键词】VFP 报表 条形码 CODE128A

Visual FoxPro简称VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。目前最新版为 Visual FoxPro 9.0,在数据库应用中,处理速度极快,是日常工作中的得力助手。

随着条形码的出现,它可以标出物品的生产国、制造厂家、商品名称、生产日期、日期等许多信息,因而在商品流通、图书管理、邮政管理、银行系统等许多领域都得到广泛的应用。

然而Visual FoxPro其报表无法支持UNICODE编码,所以不能像CODE39那样在VFP报表中引用其CODE39字体就可以生成条形码。本文主要研究在VFP报表中如何实现身份证号的CODE128A条形码生成。

1 CODE128A条形码

CODE128码是1981年引入的一种高密度条码,CODE128 码可表示从 ASCII 0 到ASCII 127 共128个字符,故称128码。其中包含了数字、字母和符号字符。基于实际运用,本文主要研究CODE128A码,其起始码为103,即为11010000100,终止码为1100011101011。

2 VFP报表实现CODE128A条形码的思路分析

2.1 VFP报表与表的转换

VFP报表与表是可以相互转换的,转换规则为;*.frx对应转换为*.dbf,*.frt对应转换为*.fpt,然后就可以VFP中用use命令可以打开表进行处理了。

2.2 CODE128A码的生成

首先,定义一个ns全局变量,用来接受生成的CODE128A码;其次,定义一个107的一维数组并将其赋值,如:

DIMENSION barcode(107)

barcode(1+0)="11011001100"

barcode(1+1)="11001101100"

barcode(1+106)="11000111010"

最后生成CODE128A码

k=LEN(str1)

ns=""

IF k>0 then

totalcode=103

i=0

FOR i=1 TO k

v=SUBSTR(str1,i,1)

ns=ns+barcode(1+ASC(v)-32)

totalcode=totalcode+i*(ASC(v)-32)

NEXT i

checkcode= MOD(totalcode,103)

ns= barcode(1+103)+ns

ns=ns +barcode(1+checkcode)

ns=ns +barcode(1+106)

ELSE

ns="数据为空"

ENDIF

2.3 CODE128A码在VFP报表中的表现及控制

首先,在VFP报表中生成231根竖线。其次,将报表转换成数据表,并将表中的supexpr字段里写入控制语句subs(ns,12,1)="1"(其含义:如果该位为1表示显示,否则不显)。

3 VFP报表实现CODE128A条形码的实现

3.1 在VFP中生成一个输入身份证号的表单

表单上有控件:1个标题控件、1个输入身份证号文本控件、1个打印按钮控件,在[打印报表]按钮的click事件中输入以下几方面的代码:定义一个ns全局变量;定义一个107的一维数组并赋值;生成CODE128A码并将结果赋给ns变量;调用表报文件如:repo form sqbx prev。

3.2 在VFP中生成一个由231根竖线构成的报表

首先在VFP报表中画一根竖线,并将报表转换为对应的表后,并修改其高度Height为3333.333,宽度Width为104.167。其次,将此线对应的记录利用copy命令单独生成一个表文件后,利用下面命令生成230根同样的线,并相隔一个像素。

FOR i=1 TO 230

SELECT 1

USE copy128(copy128是那一根线的表)

REPLACE hpos WITH hpos+104.167

USE

SELECT 2

USE show128(show128是装231根线的表)

APPEND FROM copy128

ENDFOR

MESSAGEBOX('记录添加完成!')

利用这段代码很快生成231根相同的竖线,并相隔一个像素。

再其次,控制报表中竖线的是否显示的状态。

这里要费时些,在对应的表中将231条记录的[supexpr]字段的Memo的值进行修改,subu(ns,12,1)=“1”,其含义为第12根线如果值为1,则显示,否则不显,以此类推。

最后,运行表单。

以上结果在Visual FoxPro8.0中测试,并用条形码扫描出正确结果。

4 结束语

随着条形码不断地深入运用,我们将不断地探索条形码在Visual FoxPro数据库中的运用,将这些成果运用到我们的工作中去,一定会提高工作效率,提高数据处理的准确度。

参考文献

[1]刘志海,曾庆良,朱由锋.条形码技术与程序设计[M].北京:清华大学出版社,2009(08).

[2]张成海,张铎,张志强.条码技术与应用[M].北京:清华大学出版社,2010(02).

[3]庞其森.利用VFP报表设计制作防伪通知书[J].科学之友,2009(02).

作者单位

重庆安全技术职业学院重庆市404020

上一篇:学案编制与使用再思考 下一篇:中低年级数学教学中的小组合作交流学习浅探