形码软件开发文档


条 形 码 软 件 开 发 文 档
文档编号
05GYA1_BAR_02
项目组成员:
汤丽华 唐雅娟 顾文燕 陶佳华
指导教师:
叶卫东
上海第二工业大学 机电工程学院 工业工程系
Shanghai Second Polytechnic University 目 录
条形码软件开发文档
前言
为了使软件开发过程有章可循,保证软件质量,加强开发管理.
开发管理
项目进度周报表格如下:
项目名称:
条形码实验平台 条形码软件
汇报人:
陶佳华,汤丽华,唐雅娟,顾文燕
汇报日期:
2007.11.12
项目进度详细描述
2007.5.8-2007.5.13
做条码项目前期工作,了解有关条码的知识.我们借阅了有关条码的书,开始了解条码的一些基本知识和很多应用技术.
2007.5.14-2007.5.20
开始自己总结有关条码的种类和其运用场合,条码的基本结构,以及条码的具体应用.
2007.5.21-2007.5.27
根据项目的需要,我们购进了条码扫描仪和条码打印机,根据说明书开始研究条码扫描仪和条码打印机的安装.在安装条码打印机的时候,由于计算机缺少相应的并口,于是添加了USB串口/并口桥接器.
2007.5.28-2007.6.3
开始测试条码扫描仪能否正常工作,发现条码扫描仪的解码能力并没有说明书上描述的强,有些条码在解码范围内却无法识别,并开始尝试能否用其他办法来解决解码能力的问题.
2007.6.4-2007.6.10
开始测试条码扫打印机能否正常工作,实现了测试打印.
2007.6.11-2007.6.17
正式开始接触相关的软件,运用条码打印机自带的软件LabelShop,开始初步了解这款条码软件的,设计不同类型的条码,并配合条码打印机实现条码的打印.
2007.6.18-2007.6.24
开始在网上寻找于LabelShop有类似功能的软件,借鉴成功的条码软件是如何设计的.
2007.6.25-2007.7.1
最后确定了Bartender软件为实验软件,具体研究Bartender软件使用方法.
2007.7.2-2007.7.8
使用Bartender软件与打印机和条码扫描仪进行配合使用,进行以后的实验.
2007.7.9-2007.7.15
对Bartender软件和条码打印机有一定了解之后,开始设计符合客户要求的标签.
2007.7.16-2007.7.22
根据客户要求设计不同规格的标签,开始设计Excel数据库,通过与Excel数据库的连接,实现连续打印.
2007.7.23-2007.7.29
去上海天科贸易公司,使该公司实现连续打印.通过建立Excel数据库,设置Bartender软件中的参数,实现了自动产生标签上的校验码和标签的连续打印.完成了任务,但是客户要求能实现不同份数标签的连续打印.
2007.7.30-2007.8.12
研究出了两种方案实现了不同份数标签的连续打印.一是在Excel数据库中加一个份数的字段 二是在Bartender软件内浏览打印数据时可以直接修改打印份数.
2007.8.13-2007.9.2
开始规划我们自己的条码软件应有的功能,并分配好每个组员的任务,对于自己负责部分开始查阅相关的资料,寻找可以合适的条码控件.
2007.9.2-2007.9.9
对上海天科贸易公司的进行调研,了解了他们的出入库流程和对软件的一些要求,逐步构想自己的应有的功能.
2007.9.10-2007.9.16
确立好软件应具备的功能,就个人负责的部分开始编辑相关程序.首先定义SQL Server数据库的表结构,建立四个基本信息,操作员信息;供货商信息;医院信息;商品基本信息.
2007.9.17-2007.9.23
一个小组实现数据库基本信息的添加,修改,删除.一个小组研究怎样在VB里使用水晶报表,生成报表和标签.
2007.9.24-2007.9.30
通过相应的编程,实现自动生成校验码.
2007.10.1-2007.10.31
实现了VB里使用水晶报表生成报表和标签和出库单据的生成.
2007.11.1-2007.11.15
整合程序,并将数据库导入新的服务器,实现数据库的共享,并开始写相关的文档说明.
项目周期
此项目开发周期分为以下几个步骤:
步骤
说明
参与角色
生成文档或程序
(打*号为可选)
可行性分析
在经济迅速发展的今天,各种规模的企业都在崛起,但目标是一致的,追求更大的利益,最小的耗费.经过对上海天科贸易公司的几次调研,发现他们在处理自己的生产或销售的产品时,常常陷入困境,他们的产品信息管理的方式主要是基于文本,表格等纸介质的手工处理,对于货品的出入库情况的统计和核实等往往采用对账本的人工检查.另外,数据信息处理工作量大,容易出错,由于数据繁多,容易丢失,且不易查找.总的来说,缺乏系统,规范的信息管理手段.因此,很有必要为该公司建立一个完整销售管理系统,使货品管理工作规范化,系统化,程序化.提高信息处理的速度和准确性;而且随着企业规模增加,产品品种不断更新和发展,出入库产品流量成倍增加,面对如此庞大的产品信息量,如何有效地进行产品的出入库和基本信息的管理,对企业来说已近迫在眉睫.我们制作团队想通过一套实用产品销售管理软件帮助一些企业实现管理的自动化.这套软件可以大大的提高传统产品销售管理的效率,可以使用户简单快捷的进行商品信息的查询,科学的统计,规范的进行管理,省去了很多原本繁琐的步骤,很大程度上,减少了企业的工作量,调动了员工的积极性,在无形之中,为企业创造了更多的利润,让企业在同类竞争者中占据了压倒性的优势,对企业将来的发展壮大有着十分重大的帮助.
组长
可行性分析报告
立项
条码小制作项目的任务是完成一套条码软件,实现对基础信息,出库的管理并实现报表和标签的输出.
初步分三个阶段:
第一阶段(2007.5-2007.6)
前期了解条码知识,并完成条码相关的硬件(条码扫描仪和条码打印机)的安装和使用.
第二阶段(2007.7-2007.8)
运用一套功能相对齐全的软件作为实验基础,进行标签的设计和连续打印.
第三阶段(2007.9-2007.11)
正式确定我们的条码软件应有的功能并完成条码软件的程序设计.
小组成员
项目初步计划
需求分析
本系统实现对商品信息,供货商信息,出货医院信息,操作人员信息的管理和统计.用户可以实现对基本信息的浏览,查询,添加,删除等,并可实现报表和标签的打印.
小组成员
需求分析文档
详细设计
要求在定义后台数据库系统基础上,有专门操作员信息,医院信息,商品基础信息的软件界面,实现上述基础资料的添加,修改,删除,查询等基本操作,在出库单的界面上实现生成出库单据,并任意挑选N个商品,生成出货清单,同时生成相应的标签.
小组成员
详细设计文档
项目验收
软件开发文档
条码软件程序
程序说明书
条码实验指导书
设计报告(论文)
结题报告
小组成员
项目所有文档和程序
命名规范
文档命名规范
全部以中文名命名,要求能说明该文档包含的内容.例:条形码实验指导书
数据库命名规范
数据库表命名均遵循以下规范:
存储信息名词_list (多个单词用下划线分隔),全部小写,例如: user_list
数据库表字段命名遵循以下规范:
存储信息名词(多个单词用下划线分隔),全部小写,例如:user_id.
文档规范
编写文档目前主要使用的工具是Word .
文档务必保持段落格式整齐,文字字体,颜色,大小统一.文章标题为宋体,小二,加粗.标题1为黑体,4号,加粗.标题2为宋体,小四.标题3为宋体,小四.正文统一为宋体小四.
务必注意中英文标点符号,文档正文一概使用中文标点符号.
使用PowerPoint在文档中插图.选择"插入"->"对象"->"Microsoft PowerPoint 幻灯片".
修改他人文档务必使用修订模式,以便保留被修改的内容.使用修订模式,选择"工具"->"修订"->"突出显示修订",勾上"编辑时标记修订".
附:一些模板
数据库表设计(data modeling)
在设计不同的表的时候,根据每张表的具体信息,定义简单明了的表名和字段名.例如,大类名称,商品名称,商品规格存在着逐步包含的关系.因为在定义数据库的时候表名和字段名必须使用英文,在这里,我们定义以上几张表为top(大类名称),first(商品名称),second(商品规格),分别取它们的首字母,以便输入.
以下取部分表作为说明:
user_list(操作员信息)
列名
数据类型
长度
允许空
user_id(主键)
char
5
不允许空
user_name
varchar
10
不允许空
passwd
varchar
10
不允许空
user_tel
varchar
20
user_emai
varchar
30
remark
varchar
300
tp_list(大类名称)
列名
数据类型
长度
允许空
tp_id(主键)
char
2
不允许空
tp_name
varchar
50
不允许空
materal
varchar
10
tp_ename
varchar
10
hospital_list(医院信息)
列名
数据类型
长度
允许空
h_id(主键)
char
4
不允许空
h_name
varchar
100
不允许空
h_man
varchar
6
h_tel
varchar
20
h_fax
varchar
20
h_add
varchar
50
h_email
varchar
50
remark
varchar
300
h_name_id
varchar
104
supplyment_list(供应商信息)
列名
数据类型
长度
允许空
s_id(主键)
char
4
不允许空
s_name
varchar
100
s_man
varchar
20
s_tel
varchar
20
s_fax
varchar
20
s_add
varchar
50
s_email
varchar
50
Remark
varchar
300
out_list(出库单)
列名
数据类型
长度
允许空
out_id
char
12
out_num
varchar
9
o_s_l_id(主键)
varchar
38
不允许空
sp_id
char
6
tp_id
varchar
4
fp_id
varchar
6
lot_num
varchar
20
out_infor(出库信息)
列名
数据类型
长度
允许空
out_id(主键)
char
12
不允许空
user_id
char
5
h_id
varchar
4
remark
varchar
300
out-date
varchar
50
fp_list(商品名称)
列名
数据类型
长度
允许空
fp_id(主键)
char
4
不允许空
fp_name
varchar
10
不允许空
tp_id
varchar
4
sp_list(产品规格)
列名
数据类型
长度
允许空
fp_name
varchar
20
sp_id(主键)
varchar
6
不允许空
sp_name
varchar
10
mark
char
5
pack
char
1
barcode
varchar
50
lot_num
varchar
20
biaozhunh
varchar
50
zhengshuhao
varchar
50
Remainder
int
4
check_num
char
1
fp_id
varchar
6
sp_id
varchar
4
视图部分说明:
sp_list与tp_list以各自的主键sp_id和tp_id 相连接,作为输出.在列中选取所需字段作为输出.视图名称为goods_list.
out_list与out_infor以各自的主键o_s_l_id 和out_id相连,同上一样,视图名为out_store .以作为调用数据库时的出处.
代码规范
VB代码规范
命名
方法的命名
无论是函数还是子程序,方法都必须以动词或动词短语命名.无需区分函数和子程序,也无需指明返回类型.
Sub Open(ByVal CommandString As String)
Function SetCopyNumber(ByVal CopyNumber As Integer)
参数需要指明ByVal还是ByRef,这一点写起来会让程序边长,但非常必要.如果没有特别情况,都使用ByVal.参数的命名方法,参考后面"变量的命名方法".需要重载的方法,一般不写Overloads,根据需要编写重载的方法.
属性的命名
原则上,字段(Field)是不能公开的,要访问字段的值,一般使用属性.属性以简洁清晰的名词命名:
Property Concentration As Single
Property Customer As CustomerTypes
事件的命名
事件是特殊的属性,只能在事件处理上下文中使用.命名的原则一般是动词或动词的分词,通过时态表明事件发生的时间:
Event Click As ClickEventHandler
Event ColorChanged As ColorChangedEventHangler
Form的命名
Form的名字应该都是由一个小写单词组成,例如:goods_form
若添加的为标准对话框,则保持其原来的窗体名称,以便识别.例:frmSplash
Command 的命名
Command 的名字必须由大写字母开头而其他字母都小写的单词组成.例如:Modify或Movenext.
变量的命名
Form变量的命名
变量的名字用一个小写字母组成,作为临时变量时,须加上_temp, 例如:rs 或rs1_temp
用于多个目的的变量称为无焦点(多焦点)的变量.无焦点变量所代表的意义与程序的执行流程有关,当程序处于不同位置时,它所表示的意义是不固定的,这样就给程序的可读性和可维护性带来了麻烦.
例:在user_form中定义一个名为rs的RecordSet变量,先用这个变量取得了操作员信息的数据,如果在hospital_form中又用rs取得医院信息的数据,那么应该在两个form中各自定义rs的RecordSet变量,否则单独抽取出一句使用了变量rs的语句,没有单独定义过的话,程序中不能判断究竟使用的是哪个表的数据.
Module 变量的命名
Module变量的名字应该都小写,并且指出完整含义,若是字符串,则需加上_string.
例如:cn 或com_string
参数的命名
参数的名字必须和变量的命名规范一致.
数组的命名
控件数组应该用下面的方式来命名:
例如:text(0),text(1),text(2),text(3)……代表Text控件数组.
不同类型的控件名称作相应的变化即可,此处不做详细说明.
代码格式
标识符
标识符用来给函数,变量和数据类型进行命名,长度不能超过31个字节.
可以使用数字0~9,拉丁字母大写A-Z和小写a-z(大小写有区分的)还有下划线(_).此外首字母不可以是数字.标识符不可以和保留字发生冲突,如int, string等数据类型.
数据类型
本次程序运用到得主要数据类型有:
Integer(int)
Boolean (bool)
String (str)
Variant (var)
Integer类型:十进制,数字0~9,0不能作为第一个字母.
十六进制,数字0~9,拉丁字母a~f或者A~F用来表示10~15.
Boolean类型:用来表示是和否,还可以用数字1和0进行表示.True和False 可以忽略大小写.
示例:bool a = True (事先定义: Dim a As Boolean)
String类型:用来表示连续的ASCⅡ码字符的使用连续的两个双引号来包括需要表示的内容.对于含有较多的字符,建议使用string.

关于缩进
缩进必须严格执行,变量声明块不能缩进,实现块必须保证全部缩进(即不可能有实现块是行首对齐的).
对于基本的控制结构,必须要有缩进,如:if,do,with,for,open,select块,缩进示例如下:
…..
If ….. Then
…..
End If
…..
对于过长的语句,必须使用续行,续行位置要有明显意义
示例:
sql = "SELECT [code],[name] FROM [Person] " _
& " WHERE [code] LIKE '001%' "
函数的参数如果过长,也应该续行.
页宽
页宽应该设置为80字符,源代码一般不会超过这个宽度,并导致无法完整显示,但这一设置也可以灵活调整.在任何情况下,超长的语句应该在一个逗号或者一个操作符后折行.一条语句折行后,应该比原来的语句再缩进4个空格.
操作符
操作符左右各用一个空格分隔.
例如:
for i = 1 to 10

if (a > 0);
SQL语句
代码中书写的sql语句要求sql关键字全部大写,表名和字段名小写.例如:
SELECT * FROM view_out_report WHERE out_id='" & Text1.Text & "'"
模块定义
类定义或方法定义过长需要换行书写,例如:
Public com_string As String
Public cn As ADODB.Connection
Public rs As ADODB.Recordset
form属用域的maxlength
对于Text类型的输入域,必须根据数据库字段的长度设置相应的maxlength,例如数据库类型是VARCHAR(64),那么maxlength是32(因为中文浏览器对于中文也认为是一个字符).
注释
在每个If语句的前面加上注释.
在每个Select Case语句的前面加上注释.与If语句一样,Select Case语句用于评估对程序执行产生影响的表达式
在每个循环(包括For…Next循环和Do循环)的前面加上注释.每个循环都有它的作用,许多情况下这个作用不清楚直观.对于代码中的逻辑分支或循环条件需要书写注释.
技术难点
我们此次条码小制作的任务是完成一套条码软件,根据我们的任务,我们制定了一系列计划逐步完成的任务.分三个阶段:一是前期了解条码知识,并完成条码相关的硬件(条码扫描仪和条码打印机)的安装和使用.二是运用一套功能相对齐全的软件作为实验基础,进行标签的设计和连续打印.三是在对上海天科贸易公司销售流程进行调研的基础上,正式决定我们的条码软件应有的功能并开始进入条码程序设计阶段.在几个阶段期间我们碰到了很多问题,下面将分阶段说明我们碰到的技术上的难题.
前期
前期了解条码知识,并完成条码相关的硬件的安装和使用.
在条码制作开始阶段,我们小组进行了前期的准备工作,查阅相关的资料开始了解条码基本知识和条码技术的应用.在对条码知识有了一定的了解之后,我们开始正式接触条码相关的硬件设施,由于实验需要,我们购进了型号为Symbol Technologies的LS 2208AP的条码扫描仪和型号为Intermec EasyCoder PC4的条码打印机.
在安装条码打印机总是不成功,后来发现我们所用的计算机上并没有安装并口,于是我们开始研究并口安装的说明书,由于以前接触的软件安装并不是很多,所以很多东西上手的时候觉得很生疏,但是通过这次的安装的过程,我们很快就知道了怎么样快速学习新的知识,只要自己静下心来,根据软件的书明书和不断的尝试,就能成功.
在安装条码扫描仪的过程中,我们吸取了先前安装条码打印机的教训后,先查看了说明书,又在网上查阅了Symbol Technologies的LS 2208AP条码扫描仪的介绍,主要关注了条码扫描仪的各个参数指标,发现条码扫描仪的解码能力比较强.该条码扫描枪解码能力为:U.P.C./EAN, U.P.C./EAN with Supplementals, UCC/EAN 128, Code 39, Code 39 Full ASCII, Code 39 TriOptic, Code 128, Code 128 Full ASCII, Codabar, Interleaved 2 of 5, Discrete 2 of 5, Code 93, MSI, Code 11, IATA, RSS variants, Chinese 2 of 5.但在实际并非如此,我们通过条码打印机自带的LabelShop条码软件生成了相应的条码,在A4纸上事先打印,发现Codabar, Interleaved 2 of 5, Code 93, MSI,始终无法被识别.在后来研究中,我们也尝试了很多的办法,试着通过编程来改变条码扫描仪的一些参数,但都没实现预期的效果,总结下来可能就是条码扫仪的自身识别系统有偏差.
中期
运用一套功能相对齐全的软件作为实验基础,进行标签的设计和连续打印.
条码相关硬件的研究告一段落之后,我们便开始投入到软件的研究中.我们通过很多途径仔细查找了与条码相关的软件,并进行了相应的研究,选择了一款功能比较齐全的软件作为以后实验的工具,为以后做我们自己的条码软件做准备.
我们确定了Bartender条码软件作为我们以后实验软件,该软件比LabelShop具备连接数据源的功能.实验主要目标是实现条码标签的批量打印,并开始根据Bartender条码软件的功能初步设计我们的条码软件,在这个阶段我们碰到了很多的技术难点.
Excel建表
由于本次实验涉及到的条码属于特别的128码,Bartender中没有提供相应的检验码自动生成功能.因此,首先需在Excel中,除主表sheet1外另建一张字段为校验码余数,校验码的sheet2表,为之后在Bartender中生成校验码所用.
Bartender中数据库的连接
在安装好Bartender条码软件后 (选择安装ODBC 3.0组件),建立ODBC数据源以便Bartender的调用.接着就是在Bartender的数据库连接中,添加先前建立的数据源,在数据源中选择所需工作表添加进Bartender数据库内.由于sheet1和sheet2含有相同的校验码余数字段,两张表会自动生成连接.
校验码的生成
Bartender中没有提供128码的校验码自动生成功能.在Bartender条码软件里进行vb脚本的编辑(Field("Sheet1$.条码") & Field("Sheet2$.校验码")),得以实现条码校验码的自动生成.
标签打印
Bartender中默认打印份数相同.如何实现在Bartender中不同份数批量打印
方法一
在打印界面中,先选中需要打印的记录,然后在各个记录后添加(n)格式的字样,意为该记录打印n份.如图1.所示,现在打印分别记录1,2,5,88,其中记录1打印6份,记录2打印3份,记录5和88各打印1份.
方法二
在Excel建立工作簿时,添加一个打印份数的字段(图2)这样在Bartender中,使用打印数据源,选择打印份数,直接调用数据源.
在打印界面中,选择记录仍然用先前的方式
点击同样标签的份数旁的"选项"按钮,出现如下对话框
选择最后一项00由数据库决定
然后点击出现的数据源选项,出现如下对话框
将源改为数据库,使用域-打印份数,即可实现不同分数的连续打印
选择确定后,单击打印即可实现连续打印.
后期
条码软件设计问题
要求在定义后台数据库系统基础上,有专门操作员信息,医院信息,商品基础信息的软件界面,实现上述基础资料的添加,修改,删除等基本操作,在出库单的界面上实现生成出库单据,并任意挑选N个商品,生成出货清单,同时生成相应的标签.操作环境是Window XP ;开发工具:Microsoft Visual Basic 6.0 中文版,Microsoft SQL Server,Crystal Reports 8.5.
首先我们要实现VB中调用SQL数据库,但是我们调用的是数据库中的视图,而视图又是由多个基础表构成的,实际添加和修改的是某个基础表中的数据,其它的基础表只是用来辅助显示,如果在视图中直接进行改动的话就会将所有基础表的数据一并改掉,所以首先面临的问题就是如何在视图中进行数据的添加和修改而不改动用于辅助显示的基础表中的数据.
商品资料管理是最先着手的一个form,所有的商品资料的管理都将在这个窗体中实现,包括商品的添加,删除,修改等等.商品资料的视图由商品大类和商品小类两个基础表构成.
添加,修改数据
在视图中只添加,修改小类表中需要的东西,大类表只在用于辅助显示该商品的大类名称,只要根据用户输入的商品编号的前两位(即大类编号)就可以自动显示该商品所属的大类(该大类编号必须已经存在),但是保存数据的时候小类表中并不保存大类名称,只保存商品编号,小类表中自动取商品编号的前两位作为大类编号在视图中和大类表作连接.这样的话就能达到保存用户所需的数据,并且查询某条商品记录的时候通过大类编号调用出该商品的大类名称.
保存
保存的时候必须要检查输入数据是否重复来防止用户的误输入,初步采取的办法是另外生成一个商品小类的记录集,在保存的时候当前要保存的数据和商品小类的纪录集进行比较,确定没有重复则进行保存,如有重复则弹出窗体告知用户输入重复.但是这样只考虑了添加新记录的时候输入重复的问题,如果不修改商品编号只修改其它信息,保存的时候也会弹出输入重复的对话框,因为比较是否输入重复是以商品编号为准的,而修改记录的时候小类表中已经存在当前商品编号,所以会提示输入重复,最后采用的办法是通过比较记录修改后的商品编号和修改前的商品编号,如果一致,则直接保存,跳过检查输入是否重复的步骤,如果不一样则再判断输入是否重复.
取消
取消添加新记录时,因为SQL中已经自动生成一条新的空白记录,所以在取消的时候必须消除这一行新的空白记录,因为商品编号不能为空(主键),所以在取消的时候先在后台添进去一条商品编号为"000000"的记录,然后通过循环找到编号为"000000"的记录进行删除并更新,这些都放在后台运行.
删除
不能直接删除视图中的数据,因为调用了两张基础表的数据,所以删除的难点在于让用户看到的是直接在界面上删除选中的记录.获取用户所选择的记录的商品编号,通过在小类表中找到该商品编号,删除后,在当前显示的界面上更新,看起来就好像直接删除了选中的记录.
定位
修改后保存指针指在保存好的记录上,但是第一条新记录保存好之后排在最好一行,但是再次添加新记录时前一条保存好的记录会进行自动排序,不能在最后看到前一条添加进去的记录,不符合用户操作的合理性,所以如何让用户明确的知道记录已经保存进去是一个难题. 因为视图和小类表的区别只在于视图多显示了商品的大类信息而已,其他都是一样的,所以当新记录保存进去以后,通过商品编号在小类表中找到新保存的记录,获取该条记录的书签值,然后在视图中将指针指向同样书签值的记录,因为排序的方式都相同,就可以找到刚保存的记录了.
每个窗体都涉及到添加,删除,修改的问题,所以解决了一个窗体上问题,其他窗体上的都可以举一反三来进行操作.
大类,单据号的删除
如果要删除一个大类或一个单据号,那就意味着所有这个大类或单据号的数据都被删除,而不仅仅是从大类表和单据表中删除一条记录而已,如果只是不删除所有的数据的话,视图中将不能显示已经删除的大类的商品记录(例:如果删除了大类编号为45的类别,那视图中所有大类编号为45的商品都不会显示),这样的话就会造成定位的不准确,造成用户操作的不方便.所以删除就必须找到所有符合大类或者单据号的商品进行删除.
期间还碰到了一个问题,就是SQL中校验码的生成.原始数据中是一张excel表,其中条形码是通过各列用公式结合起来的,最后一位校验码是要通过128的校验码生成规则查表得来的,所以在excel中的条形码是12位的,缺少了最后一位校验码,而导入SQL中的原始数据必须是完整的校验码,后来在SQL的商品小类中添加了二列作为辅助,一列是余数,一列是校验码,将校验码和其相对应的余数另外生成一张存放校验码的SQL表,导入数据时,将每个商品的余数在excel表中先用公式生成,然后一并倒入商品小类表的余数一列中,另外写一段程序专门用来将原始数据的余数与该余数相对应的校验码导入到商品小类表中的校验码一列,然后条形码通过SQL中的公式进行生成.而新记录添加修改的话通过程序中加入128码的校验码生成规则,就可以在输入商品型号的时候自动生成该商品的校验码并在界面上显示出该商品完整的条形码.
标签与报表的设计问题
如何运用Crystal Reports 8.5设计符合规定的报表及标签,并实现在VB中调用,也碰到了很多技术难点.
在商品标签打印方面,如何将各个商品的条码调入Crystal Reports中,首先是一个问题.先前我们引入条码控件,在VB编程中,引入流媒体的语句,生成各个商品不同的条码图片,并调入数据库.不过可惜的是,所使用的条码控件属于试用版,试用期一过,就不能再继续使用了.经过查找资料,想到了使用条码字体的办法,在标签制作中,也能起到相同的效果,而且也没有先前用条码控件那么麻烦了.
如何做到批量打印,使打印数量就是各个出库商品的出库数 在SQL数据库中,我们建立一张"label"表,除了新增一列id字段设为主键,其余字段与视图view_out相同,设置为后台操作不显示.每次点击"标签预览"时,其实是将view_out中的各个字段均导入该表中,不同的是,同一记录是按照它的出库数量重复导入.然后将预先在CryStal Report 8.5中建立的标签模板与label表连接.便可做到打印数量即为出库商品的数量.
但是如果打印好的标签不小心撕坏要重打某一张,以上的批量打印方法就不是很方便.因此我们选择通过先通过型号来查询某一条记录,然后再单张打印的办法.
在制作出货清单中,设计报表的时候发现当Details这一部件的内容在每一个从数据库中的数据源中检索出的数据中都重复出现,Report Footer是置放在详情部件的结束处的,而Page Footer会在报表的每页都出现的.在了解这些基本知识后,初步设计好了一个出货清单.包括商品名称,规格,数量,可是始终无法计算出货数量的总数,因为在设计SQL数据库时,字段类型设定为"varchar",是字符串类型,无法求出其出货总数.于是尝试用Formula Fields来实现其数据类型的转换,利用Function Tree中的val()函数即可实现数据类型的转换,把字符串类型改为了数据类型.这时选中出货数量的fields,右击选择insert插入summary函数,便会出现sum这一项,点击即可实现出货总数.
条形码软件指南
软件开发文档

引用地址:http://www.wenhei.com/document/988538/

文件信息 »

发布时间:2008-02-28   文件大小:510464   类型:doc 文档
下载文档 形码软件开发文档