基于rfid仓库管理系统设计

更新时间:2024-01-23 02:14:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

评阅编号: 密 级:

中国人民解放军后勤工程学院

题目:基于RFID的仓库物资管理系统设计本科毕业设计(论文)

学位级别: 学 士 学员姓名: 李 俊 霖 专 业: 仓储自动化 指导教师: 冯 云 技术职务: 副 教 授

中国·重庆 二〇一二年六月

后勤工程学院本科毕业设计(论文)

摘要

随着自动化立体仓库系统设备的生产技术逐渐成熟和应用的逐渐普及,传统

的以手工记录为主的管理方式已不能满足企业目前的需求,而磁卡、条形码等技术由于自身存在的缺陷,已经不适合今后物流业发展的需要。

RFID技术是一项新兴的、先进的自动识别技术,它在各行业的广阔发展前景己经引起了世界各个国家、各个企业的普遍重视。RFID技术具有其他识别技术所不具备的防水、防磁、耐高温、使用寿命长、读取距离远、读取方便快捷、标签上数据可以加密、存储数据容量更大、存储信息更改自如、形状多样化等优点。RFID技术的出现,解决了数据自动识别的难题,处理信息更为快速、准确,减少了人工干预,避免了繁琐的手工输入等流程,从而降低了生产成本。

本系统是基于RFID的仓库物资管理系统,具有以下几种功能: 1、通过RFID自动对物资进行入库出库; 2、可以对库存进行查询和盘点,掌握库存情况;

3、能对物资信息,客户信息等基础信息进行更新,尽可能满足不同仓库的需要。

关键词: RFID 仓库管理 自动识别 自动化立体仓库

I

后勤工程学院本科毕业设计(论文)

Abstract

With automatic warehouse system equipment production technology gradually mature and growing popularity of the application, the traditional manual give priority to record the management method of already cannot satisfy the needs of enterprise at present, and magnetic card, bar code technology because of its own defects, is not suitable for the need of the development of the logistics industry in the future. RFID technology is a new, advanced automatic identification technology, in all its broad prospects for development has been caused the world each country and each enterprise's universal attention. RFID technology has other recognition technology has waterproof, prevent magnetic, high temperature resistant, long service life, read the distance, read fast, convenient and label data can be stored data encryption, and larger capacity, storage information freely, change shape diversification, etc. RFID technology appear, solve the problem of the data to be automatic recognition and processing information more rapid, accurate, reduce artificial intervention, to avoid the tedious manual input process, so as to reduce the production cost.

This system is an RFID-based warehouse material management system, with the following features:

1,Through RFID, it can put the materials in and out storage automatically; 2, it can check the inventory and count the inventory, then master inventory;

3,the material information, customer information and other basic information to be updated to meet the different needs of the warehouse.

Keywords : RFID, warehouse management, automatic identification, automatic warehouse

II

后勤工程学院本科毕业设计(论文)

目录

摘 要......................................................................................................Ⅰ Abstract................................................................................... ...............Ⅱ 目 录......................................................................................................Ⅲ 1 绪论........................................................................................................1

1.1 系统开发的背景.....................................................................................1 1.2 系统开发的目的与意义...........................................................................1 1.3 RFID概述...............................................................................................2

2 基于RFID的仓库物资管理系统分析.................................................6

2.1系统概述..................................................................................................6 2.2业务流程分析.........................................................................................10 2.3数据流程分析.........................................................................................11 2.4数据字典................................................................................................12

3 基于RFID的仓库物资管理系统设计...............................................15

3.1 系统设计目标和原则.............................................................................15 3.2 系统总体结构设计.................................................................................15 3.3 系统代码设计.......................................................................................18

III

后勤工程学院本科毕业设计(论文)

3.4 数据库设计...........................................................................................19

4 基于RFID的仓库物资管理系统实现..............................................20

4.1 系统登录模块设计.................................................................................20 4.2 物资入库模块设计.................................................................................23 4.3 物资出库模块设计.................................................................................25 4.4 库存管理模块设计.................................................................................26 4.5 基础信息模块设计.................................................................................28

5总结........................................................................................................32 参考文献..................................................................................................33 致 谢........................................................................................................34 附 录........................................................................................................35 附录1 系统数据表..................................................................................35 附录2 英文文献......................................................................................38

IV

后勤工程学院本科毕业设计(论文)

1 绪论

1.1 系统开发背景

随着计算机的应用普及,目前大多数仓库管理数据资料已开始采用计算机数据系统管理,但数据还是采用先纸张记录、再手工输入计算机的方式进行采集和统计整理。这不仅造成大量的人力资源浪费,而且由于人为的因素,数据录入速度慢、准确率低。随着企业规模的不断发展,仓库管理的物资种类机数量在不断增加、出入库频率剧增,仓库管理作业也已十分复杂和多样化,传统的人工仓库作业模式和数据采集方式已难以满足仓库管理的快速、准确要求,严重影响了仓库的运行工作效率,成为制约仓库发展的一大障碍。

RFID技术正在为供应链领域带来一场巨大的变革,以识别距离远,快速,不易损坏,容量大等条码无法比拟的优势,简化繁杂的工作流程,有效改善了仓库管理的业务流程。

[1]

1.2 系统开发的目的与意义

货物管理是一项非常重要的工作。使用人工方式管理各项材料信息不仅效率低下,而且容易出错,安全性很差。并且在实际操作中,数据的查找和维护都不容易实现,容易发生差错,导致了管理费用增加,服务质量难以得到保证,从而影响企业的竞争力。本人设计该系统,就是为了解决以上这些问题。其目的在于实现仓库材料信息管理和出入库记录的快速高效检索,使操作简单安全,提高工

1

后勤工程学院本科毕业设计(论文)

作效率和质量。现在由于物资量大、品种丰富且周转率高,这给仓库管理带来了一定的困难。因此,仓库物资管理的自动化是仓库发展的重中之重。

射频识别(RFID)不需要人工干预,不需要直接接触不需要光学可视即可完成信息输入和处理,可工作于各种恶劣环境。基于RFID的仓库物资管理系统能自动化增加生产力,并限制人工干涉,避免人为错误;获利快速的后勤管理,取得即时的供应链动态,实现供应链完全可视化。其优势有:缩短作业流程;改善盘点作业质量;增大配送中心吞吐量;降低运转费用;信息的传送更加迅速、准确。本系统兼有以上优势,能更好的为仓库管理提供更好的保障。

[2]

1.3 RFID概述

RFID是Radio Frequency Identification的缩写,即射频识别技术,又称为无线射频标签(E-Tag),是一种非接触式的自动识别技术,它通过射频信号自动识别目标对象,可快速地进行物品追踪和数据交换。识别工作无需人工干预,可工作于各种恶劣环境,RFID技术可识别高速运动的物体并可识别多个标签,操作快捷方便。

射频识别(RFID)技术具有很多突出的优点,如不需要人工干预。不需要直接接触不需要光学可视即可完成信息输入和处理,可工作于各种恶劣环境。可识别高速运动物体并可同时识别多个电子标签,操作快捷方便,实现了无源和免接触操作,应用便利,无机械磨损,寿命长,机具3无标签的密码保护外,数据部分可用一些算法实现安全管理,如DES、RSA、DSA、MD5等,读写器与电子标签之间也可相互认证,实现安全通信和存储。电子标签系统的成本一直处于下降得趋势,越来越接近接触式IC卡系统,设置更低,为其大量应用奠定了基础。如果RFID技术能与电子供应链紧密联系,那它很有可能在几年以内取代条码扫描技术。

RFID技术以其独特的优势,逐渐地被广泛应用于生产、物流、交通、运输、医疗、防伪、跟踪、设备和资产管理等需要收集和处理数据的应用领域。随着大

[1]

2

后勤工程学院本科毕业设计(论文)

规模集成电路技术的进步以及生产规模的不断扩大,RFID产品的成本将不断降 低,其应用将越来越广泛。

图1.1 射频识别(RFID)系统的组成结构

总之,RFID技术的未来发展中结合其他高新技术,如DRS、生物识别技术, 由单一识别向多功能识别方向发展的同时,将结合现代通信技术及计算机技术, 实现跨地区,跨行业应用。

本系统采用的是常州高特电子技术有限公司生产的一系列读卡器,现对此读卡器的几个重要功能说明如下:

1)唤醒标签:只有被唤醒的标签才能与读写器进行通信,防止系统外其它标签的干扰,确保读写器与本系统标签信息交换的可靠与准确; 2)识别距离:有效识别距离1~4米;

3)通信接口:读卡器有RS232,RS484,Wiegand接口各一个,本系统采用的是RS232接口,数据格式为8位数据位,一位起始位和一位停止位,无校验位;数据率可选9600,19200,38400,57600和115200。

读写器主要操作函数:

1)public int OpenCommPort(string port),打开串口; 2) public int ClearIdBuf();用来清空读写器缓存;

3)public int EpcMultiTagIdentify(ref byte[,] tag_buf, ref byte tag_cnt, ref byte tag_flag);连续读取EPC标签数据。

3

后勤工程学院本科毕业设计(论文)

数据链路层帧格式 1命令帧格式: Head 0x0A

Head 是帧头标志,定义为0x0A

Addr是读写器地址,一般从0~240,255(0xFF)为公用地址,254(0xFE)为广播地址。读写器接受自身地址、公用地址和广播地址的命令,对广播地址命令不做回复。

Len是包长域,表示Length域后帧中字节数。 Cmd是命令码域。

Parameter是命令帧中的参数域。

Check是校验和域,规定校验范围是从帧头域到参数域最后一字节所有字节的校验和(相加取反加1,取最后两位)。读写器接收到命令帧后要计算校验和来验错。

2响应帧格式

Addr 1byte Len n+2 Cmd 1byte parameter ? byte1 ? parameter check byte n cc Head 0xE0

Head是包类型域,响应帧包类型固定为0xE0。 Addr是读写器自身地址。

Len是包长域,表示Length域后帧中的字节数。

Status表示命令所规定的操作执行的结果,0表示正确执行,非0表示执行过程中发生异常。

Response是响应帧中的返回数据。

Addr 1byte Len n+2 Status Response ? 1byte byte1 ? Response byte n check cc 4

后勤工程学院本科毕业设计(论文)

Check是校验和域,规定校验范围是从帧头域到参数域最后一字节所有字节的校验和(相加取反加1,取最后两位)。计算机接收到命令帧后要计算校验和来验错。

Status域取值规定如下表: 值 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0xFE 0xFF

3 EPC多标签识别命令 Head 0x0A

读写器收到此命令帧后,进行EPC Gen2多标签识别操作。识别完成后返回识别的标签数,标签数据存入读写器缓存区。应答帧格式如下:

Addr Len 0x02 Cmd 0x80 check cc 说明 命令成功完成 笼统的错误 参数设置失败 参数读取失败 无标签 标签读失败 标签写失败 标签锁定失败 标签擦除失败 命令不支持或参数超过长度 未定义的错误 5

后勤工程学院本科毕业设计(论文)

Head 0x0B

Addr Len 0x03 Status 0x00 response TagCount check cc TagCount为标签数量。 4 缓存区管理命令

4.1从缓存中取标签数据,取完后删除数据。 Head 0x0A

Count为要取出的标签的数量,最大为8。应答帧格式如下 Head 0x0B

Count为本次上传的标签数量,最大为8,Data为标签数据。每组数据以14字节一组,每组第一字节表示标签类型,第二字节表示天线号,后面12字节为标签数据。

4.2 从缓存中取出标签数据,取完后保留数据。 Head 0x0A

Count为要取出的标签数量,应答帧格式如下:

Addr Len 0x02 Cmd 0x41 check cc Addr Len 14*n+3 Status 0x40 response Count response check Addr Len 0x03 Cmd 0x40 Parameter check Count cc Data(14*n) cc

Head 0x0B Addr Len 17 Status 0x00 response Data(14) check cc

6

后勤工程学院本科毕业设计(论文)

2 基于RFID的仓库物资管理系统分析

2.1 系统概述

本系统基于RFID技术,自动对数据进行采集和处理,是保管员能轻松快速的对仓库进行到货检验、入库、出库、调拨、移库移位、库存盘点等作业,保证数据输入的速度和准确性,减少多余资料的录入。利用系统的库位管理功能,更可以及时掌握所有库存物资当前所在位置,有利于提高仓库管理的工作效率,降低差错率。

基于RFID的仓库物资管理系统具有自动录入和输出功能,通过RFID实现对物资的实时查询、盘点等管理操作。

主要的系统功能包括:

1、物资入库管理:包括对入库及入库的基本信息查询;

2、物资出库管理:包括对出库及出库基本信息查询库存管理;对当前的产品数量及品种做出一些综合统计及报告;

3、物资库存管理:通过物资记录和盘点等操作,可以实现对物资库存的情况进行查询和管理;

4、基础信息管理:可以实现对基础物资维护、客户信息等的管理和对用户账号的权限等相关操作。

本系统是基于RFID的仓库物资管理系统在局域网环境下运行的信息平台,系统在设计过程中秉承以用户为核心的开发理念,使用Visual Studio 2008 的开发环境,采用C#语言进行程序编写,具有一定的实用性和安全性。系统可在Windows XP以上版本环境下运行。

在手持终端方面,我们选择小巧轻便且设计精巧的C221008在极其苛刻的工业环境下,这款读写器有着很好的抗震和防尘的性能。其主要参数如下: 工作频率 125KHz 数据编码类型 ASK Manchester coding,EM Compatible 64Bits 7

后勤工程学院本科毕业设计(论文)

读取距离 20-30mm 读取时间 小于1秒 电源 可充电锂电池 功率 读取状态小于2W,空闲状态0W 防护等级 IP54 通信接口 RS232 工作温度 -5至55℃ 尺寸 185*70*35mm(长*宽*高) 内置天线型阅读器我们选择C233013,它体积小巧,功耗低并且多功能,能应用不同的配置,可访问手持终端。具体参数如下: 工作频率 13.56MHz±7KHz 工作协议 ISO/IEC15693 读取距离 50-120mm 读取时间 小于1秒 功率 5V DC 20mA 通信接口 RS232 or USB or TCP/IP 工作温度 -20至65℃ 尺寸 120*100*30mm(长*宽*高) 入口处我们选择万全公司生产的VC420通道式阅读器,其识别速度快,可靠性高,功能全面。具体参数如下 工作频率 902-928MHz 可根据需要定制 工作协议 ISO/IEC15693 读取距离 50-120mm 读取时间 小于1秒 射频输出功率 20-30dBm 通信接口 RS232 or RJ45 or TCP/IP 电源 110V-240V AC适配器 防护等级 IP40 工作温度 -10至55℃ 尺寸 180*35*20cm(长*宽*高) 固定阅读器我们选择体积小巧,读写迅速的C216019,具体参数如下: 工作频率 902-928MHz 可根据需要定制 读取距离 1-4米 读取时间 单标签ID号小于6ms 通信接口 RS232 or RS485 or TCP/IP 工作电压 DC +9V 工作温度 -10至55℃ 8

后勤工程学院本科毕业设计(论文)

摄像机堆垛机C通道式阅读器仓库大门421 sq m堆垛机叉车操作员RFID手持式终端摄像机C堆垛机叉车操作员堆货平台仓库大门装卸台通道式阅读器RFID读写器拆装台RFID手持式终端计算机操作员C叉车控制室图2.1仓库平面图

无线网计算机RFID手持式终端管理员无线路由器RFID手持式终端管理员仓库局域网RFID读写器RFID读写器

图2.2 系统网络图

9

C摄像机管理员管理员摄像机C货架办公室

后勤工程学院本科毕业设计(论文)

2.2业务流程分析

军队仓库业务管理,是指对军事仓储业务作业系统活动的计划、组织、指挥、调节和控制的总称[2]。

要设计一个性能良好的管理系统,明确用户的应用环境对系统的要求是首要的和基本的。本系统首先从入库管理对用户需求进行了分析,入库流程图如图图2.1所示。出库流程图如图2.2所示。

开始下达入库单读卡器扫描货物判断货物信息是否与入库单一致是一致货物入库否发出警告等待处理数据更新图2.1入库流程图

10

后勤工程学院本科毕业设计(论文)

开始下达出库单读卡器扫描货物判断货物信息是否与出库单一致是一致货物出库否发出警告等待处理数据更新 图2.2出库流程图

2.3数据流程分析

(1) 顶层数据流程图如图2.3所示。

通过RFID录入仓库管理员出入库信息货物信息仓库管理系统供应商管理员库存信息,出入库信息 图2.3 顶层数据流程图

(2).细化流程图如图2.4所示。

11

后勤工程学院本科毕业设计(论文)

入库单助理员入库信息管理超级管理员出库信息管理库存信息管理保管员出库单助理员

图2.4细化数据流程图

2.4 数据字典

数据库系统是一个复杂的系统,其中所包含的信息除了用户数据以外还有很多非用户数据。例如文件间的联系、数据项的长度、类型、用户标识符、口令、索引等等。为了使数据库的设计、运行和维护有一个共同遵循的标准和依据,也为了保证数据库的共享性、安全性、完整性、一致性、有效性可恢复性和可扩充性,人们设置数据字典来保存这些信息。 (1)数据项定义(部分) 字段名 用户名 密码 真实姓名 数据类型 nchar(10) nchar(20) nchar(10) 是否为空 Not null Not null Not null 表2.6.1 管理员表

字段名 物资编号 品名 重量 数据类型 nchar(10) nchar(16) nchar(10) 是否为空 否 否 否 说明 主键 说明 管理员名(主键) 管理员密码 管理员姓名 [3]

12

后勤工程学院本科毕业设计(论文)

单位 物资单价 物资类型 包装规格 nchar(10) nchar(10) nchar(10) nchar(4) 否 否 否 否 表2.6.2 货物信息表

(2)数据流定义(部分)

名称:入库信息 描述:入库信息通过RFID录入到系统中,并修改原始数据。 定义:入库信息=货物名称十货物号十数量十入库时间十单价+审核时间+建单员+审核员 位置:仓库管理员一>货物入库信息管理一>入库单

名称:出库信息 描述:出库信息通过RFID录入到系统中,并修改原始数据。 定义:出库信息=货物名称十货物号十数量十出库时间十单价+审核时间+建单员+审核员 位置:仓库管理员一>货物出库信息管理一>出库单

(3)数据存储定义(部分) 名称:入库信息管理 描述:由仓库管理员通过RFID将入库信息录入入到入库信息管理系统中存储 输入:入库信息 输出:入库信息表 数据结构:货物名称+货物号+数量+入库时间 (4)数据处理(部分) 数据处理名称:管理员登陆管理 处理定义:管理员信息增加,修改,删除 13

后勤工程学院本科毕业设计(论文)

激发条件:输入各种管理员信息 输入:管理员管理信息 输出:产品入库登记、确认入库信息、添加人员、修改密码、删除库内信息、查询库内信息

14

后勤工程学院本科毕业设计(论文)

3 基于RFID的仓库物资管理系统设计

3.1 系统设计目标和原则

现代仓库管理系统,尤其是军事后勤仓库管理系统,不仅要强调程序的正确

性和效率,更侧重于强调程序的可维护性、可靠性、实用性。本系统的编程也是朝着这些目标靠近的,以求使得本系统的设计能够达到令人满意的结果。

[4]

系统应遵循的原则:

(1)可靠性:系统运行的可靠性是十分重要的,在任何时候都是衡量系统质量的重要指标。每件物资都有其独一无二的标签号,其中存储着该物资标识身份的信息。物资信息的记录是唯一的,从而物资存取的安全可靠性。

(2)实用性:本系统充分从用户的角度来审查各个部分功能的实用性,在物资出入库的时候,用户只要打开界面,一切关于物资的操作都会由系统自动完成。都会

(3)可维护性:本系统的各子程序之间相互独立,数据之间没有关联,大部分都存储在数据库里统一管理,便于维护。

(4)兼容性:为了适应不同仓库的要求,系统充分考虑到各种情况,以应对我军后勤建设的变化。

3.2 系统总体结构设计

通过对军队仓库的调研和实习,根据仓库的实际需求和规范,基于RFID的仓库物资管理系统分为以下四个功能模块,划分如图3.1所示。

15

后勤工程学院本科毕业设计(论文)

基于RFID的仓库物资管理系统基础信息物资入库管理物资出库管理库存管理系统设置基础信息维护供应商信息管理客户信息管理货架设置导入标签入库单入库审核物资入库出库单出库审核物资出库库存控制物资盘点用户设置系统日志 图3.1 系统功能模块图

(1) 物资出入库管理

货物进出仓库要进行登记记录,这是仓库管理的主要内容。货物进入仓库,从入库申请的人员向执行货物入库的仓库保管员提交货物开始。

入库申请人想仓库管理员提交货物和入库申请单,入库申请单记录本次入库的货物名称、数量、提交货物的单位等信息。库管依据送货人员提供的入库申请单对待入库的货物进行检查。若入库货物与入库申请单信息一致,则允许入库;若不一致,则禁止入库,提交货物的单位重新出具入库申请单。对允许入库的货物,执行库管要将入库货物的名称、数量、入库时间、执行入库的执行人等信息进行登记后,将货物存入仓库。货物存入仓库后,执行入库操作的库管给提出入库申请的人员开具入库单,入库流程结束。

货物从仓库中出库,是从需求货物的出库单位出库人员向执行出库保管员做的库管提出出库申请开始的。

首先,出库人员向库管提交出库申请单。出库申请记录申请出库的货物名称、申请出库的数量、申请出库的单位等信息。执行出库的库管首先对出库单的真伪进行检验。对有效的出库单,依据其要求出库货物的名称查找仓库库存货物的信息和此货物的库存数量。如果有此货物,并且其库存数量满足出库申请单的数量,则库管保存出库申请单并进行出库登记。在出库登记中,执行库管要记录出库货

16

后勤工程学院本科毕业设计(论文)

物的名称、出库数量、出库时间、执行库管名称等信息。进行出库登记后,将货物出库。出库结束后,执行库管给提出出库申请的人员开具出库单,出库流程结束。

(2) 出入库记录的查询

仓库的管理人员要对仓库储存的货物信息、入库记录和出库记录等及时掌握,这样才能及时了解仓库的运行现状,才能使仓库处在良好的运行状态。所以对出入库查询是仓库管理系统的重要功能之一。根据军队建设信息化要求,后勤保障要求仓库达到“保障资源透明可视,仓库保障活动精确可控”的目的。 物资存储管理就是对物资的种类、数量等信息的管理,是为了确保仓库物资存储的数量符合要求和无差错管理而进行的物资库存盘点等操作。

仓库管理员通过RFID对库存物资进行盘点后,将信息反馈给系统,通过对比能发现物资与账面记录的是否一致,实时把握库存信息,查找差错原因。

仓库物资可以进行查询操作,通过对物资的查询,了解物资实时情况,为仓库制定物资相关策略提供依据。

(3)货物信息管理

仓库要存放货物,关于这些货物本身的信息,对货物的正常存储是非常重要的,例如哪些货物需要防潮,哪些货物需要轻搬轻放等,所以对货物本身的信息的登记、管理是仓库管理的重要内容。

(4)基础信息管理

基础信息管理包括货物的基础信息维护,供应商信息,客户信息,用户信息管理和导入标签。其中部分信息只能由超级管理员来查看并修改。但相对于一般仓库而言,军队仓库一般保持着稳定的供货商和客户,货物类型也较平常仓库不

[4]

17

后勤工程学院本科毕业设计(论文)

会轻易变动。用户信息的创建和修改只有超级管理员才能进行。也为了仓库物资的特殊性,为每个用户设置了权限,限制部分用户查看和修改相关信息,提高系统的安全性。

3.3 系统代码设计

系统代码设计时应遵循的原则:

1.唯一性。每一个代码只能唯一的代表系统中的一个实体或实体属性,而一个实体或实体属性也只能由一个代码表示。

2.标准化。在代码设计时应采用国际或国家标准代码。这些标准代码设计的重要依据,必须严格遵守。

3.合理性和简单性。代码设计必须与编码对象的分来体系相适应,以便代码对编码的分类具有标识作用。

4.可扩充性。编码是要留有足够的备用代码,以满足今后的扩充需要。 5.简单性。代码结构要简单,尽可能的短,以方便输入、提高效率。 6.适用性。代码要尽可能的反映对象的特点,以便于识别和研究。使使用者容易了解和掌握。

7.规范化。在一个代码体系中,所有的代码结构、类型、编写格式必须保持一致,以便与信息交换和共享,并有利于系统的更新与维护。

物资代码设计:仓库物资种类繁多,为了满足需要,每个物资的编码采用8位编码,每一种物资有唯一的标识码。

其具体的编码方式为:其代码的前两位表示保留编号,3、4位仓库编号,5、6位表示物资总分类,最后两位表示物资次分类

00 00 00 00 保留编号 仓库编号 物资总分类 物资次分类 其中

[5]

18

后勤工程学院本科毕业设计(论文)

仓库代码:01表示1号仓库,02表示2号仓库;

物资总分类代码:01表示生活用品类物资,02表示服装类物资,03表示食品类物资,04表示配件类物资。

物资次分类代码:01表示牙膏,02表示牙刷,03表示方便面,04表示八宝粥,05表示饼干,06表示洗衣粉,07表示衣服,08表示裤子,09表示被装,10表示帽子,11表示鞋子,12表示帐篷,13表示服装配件等。

3.4 数据库设计

管理信息系统都是以数据库系统为基础的,它直接影响系统的功能和运行效率。我们首先把概念结构从现实中抽象出来,然后以之转化成数据模型,接着进行优化。

仓库物资管理系统采用了SQL SERVER数据库。SQL SERVER 是使用比较广泛的数据库之一,具有很好的数据库所具有的功能。数据库表见附录1.

[6]

19

后勤工程学院本科毕业设计(论文)

4 基于RFID的仓库物资管理系统实现

4.1 系统登录模块设计

系统登陆模块是用户登录系统时使用的模块。用户在登录界面(图4.1.1)输入用户名和密码后,和系统数据库进行比较确认,如果用户名和密码和保存的数据一致,则此用户便可进入系统主界面(图4.1.3)继续进行操作,如果用户名或密码错误,则系统会出现如图4.1.2所示的提示,用户需再次输入,直致正确才能进行相关操作。

图4.1.1 登录界面

20

后勤工程学院本科毕业设计(论文)

图4.1.2 提示

图4.1.3 主界面

当用户输入登陆用户名和密码,点击登陆后其处理流程如图4.1.4所示。

当用户登陆成功后,系统会检测此用户的权限,根据不同权限用户开放其部分功能。如领导只能查看物资情况和导入数据。每一个角色都有其特定的功能。用户根据自己账号的角色来处理待办事项。只有超级管理员才能给账号升级权限,本系统分有4个角色,分别是超级管理员、领导、助理员和保管员。每个角色的具体权限如下:超级管理员是整个系统的核心管理员,它能进行一切本系统所拥有的功能,还能对其他用户的角色权限进行更改;领导角色的权限只能查看物资出入库、存储情况以及导入标签、修改密码等操作;助理员角色能对出、入库单进行操作,还能对物资进行盘点和修改密码。保管员角色能进行物资出、入

21

后勤工程学院本科毕业设计(论文)

库,物资盘点和导入标签、修改密码等操作。

用户权限区分的实现代码如下: stat.user = a;

stat.mima = psword;

stat.quanxian = ip;

静态变量stat中会保存登陆用户的ID、密码和权限。

private void Main_Load(object sender, EventArgs e) {

if (stat.quanxian == \管理员\ {

this.出库单ToolStripMenuItem.Enabled = false; this.入库单ToolStripMenuItem.Enabled = false; this.拟定入库单ToolStripMenuItem.Enabled = false; this.拟定出库单ToolStripMenuItem.Enabled = false; this.出库审核ToolStripMenuItem.Enabled = false; this.入库审核ToolStripMenuItem.Enabled = false; this.系统日志ToolStripMenuItem.Enabled = false; }

else if (stat.quanxian == \助理员\ {

this.出库审核ToolStripMenuItem.Enabled = false; this.入库审核ToolStripMenuItem.Enabled = false; this.系统日志ToolStripMenuItem.Enabled = false; this.物资入库ToolStripMenuItem.Enabled = false; this.基础数据维护ToolStripMenuItem.Visible=false; }

else if (stat.quanxian == \领导\ {

this.拟定出库单ToolStripMenuItem.Enabled = false; this.拟定入库单ToolStripMenuItem.Enabled = false; this.物资入库ToolStripMenuItem.Enabled = false; this.移库ToolStripMenuItem.Enabled = false;

this.物资出库管理ToolStripMenuItem1.Enabled = false; this.新增盘点单ToolStripMenuItem.Enabled = false; }

}

在系统载入的时候会根据用户的权限限制或开放一些功能。

22

后勤工程学院本科毕业设计(论文)

登陆界面不合法输入信息判断用户合法性合法读取用户权限主界面

图4.1.4 登陆处理流程图

4.2 物资入库模块设计

物资入库管理进入界面如图4.2.1所示。

根据军队相关规定,仓库物资入库需要建立物资入库单(图4.2.2),方便随时查看。入库单内容包括入库单号、建单员、审核员、入库日期、责任人等项。因为入库单是作为物资入库、查库的凭证,所以,入库单不能轻易删除和更改。

23

后勤工程学院本科毕业设计(论文)

图4.2.1 物资入库进入界面

图4.2.2 物资入库单管理

入库单由保管员或者仓库管理员录入,仓库管理员随时查看物资入库情况并及时更新物资状态。

物资入库时,由读卡器读出物资标签信息,并在入库单中自动寻找,匹配出

24

后勤工程学院本科毕业设计(论文)

本次入库的物资对应的入库单。在所有物资读取完毕后,会自动核对数量是否正确,如果找不到匹配的入库单或数量不对则不予入库。

入库时,系统会自动为一箱(或一批)货物分配货位,本系统分配方式为随机分配,产生随机货位的具体代码如下:

public Random rdm = new Random();

public dataoperator sji = new dataoperator(\状态=0\寻找空闲货位

public suiji() { }

public int radom() {

sji.dataing();

int shuliang = sji.dt.Rows.Count;

int siji = (int)(rdm.NextDouble() * shuliang + 1);

int shu_liang = Convert.ToInt32(sji.dt.Rows[siji - 1][0].ToString()); return shu_liang;

}

4.3 物资出库模块设计

物资出库进入界面如图4.3.1所示。

25

后勤工程学院本科毕业设计(论文)

图4.3.1 物资出库进入界面

物资出库和物资入库的流程大致一样,不同之处在于物资出库需要核对出库单且物资可以在系统中直接查找,对于条件不符合的物资出库计划,系统会自动进行提示。

物资出库也是通过RFID来实现。根据物资出库单,通过RFID读取标签号在出库单里对出库物资进行查询,确定出库物资的种类和数量是否符合出库要求。

物资出库需要仓库下发物资出库通知单,仓库管理员通过物资出库通知单对所需物资进行核查,对不符合要求的物资不得执行出库任务。同时,对缺货的物资实行缺货补齐出库策略,即仓库中的货物数量不够此次需求量,允许出库,所缺的货物等到货物充足时再补货[7]。

显示具体详单的代码如下:

dataGridView2.Visible = true;

chuk = dataGridView1.SelectedRows[0].Cells[0].Value.ToString();

dataoperator outdt = new dataoperator(\* from outdetail where 出库单号='\+ chuk + \'\outdt.dataing();

dataGridView2.DataSource = outdt.dt; dataGridView2.Columns[0].Visible = false;

4.4 库存管理模块设计

库存管理模块的界面如图:

26

后勤工程学院本科毕业设计(论文)

在此模块中。我们可以根据物资的编号查询物资在仓库中的存储情况,也可以根据时间段来查询已经入库或出库的物资的情况,在统计图中,我们可以看到各类物资在整个仓库中存储的比例。

统计图的具体代码如下:

namespace rf {

public partial class tubiao : Form {

public tubiao() {

InitializeComponent(); }

private void panel1_Paint(object sender, PaintEventArgs e) {

Graphics g = panel1.CreateGraphics();

Rectangle rect = new Rectangle(new Point(1, 1), new Size(200, 200)); float startAngle = 0.0f; float endAngle = 0.0f; int[] amount=new int[4]; int sum=0;

27

后勤工程学院本科毕业设计(论文) (省略从数据库中分别读出各类物资数量的代码)

int all = amount[0] + amount[1] + amount[2] + amount[3]; Color[] c = { Color.Red, Color.Blue, Color.Pink, Color.Yellow }; for (int i = 0; i < amount.Length; i++) {

endAngle = amount[i] / (float)all * 360;

g.DrawPie(new Pen(c[i]), rect, startAngle, endAngle); g.FillPie(new SolidBrush(c[i]), rect, startAngle, endAngle); startAngle = startAngle + endAngle; } }

private void tubiao_FormClosing(object sender, FormClosingEventArgs e) {

Main main_form = new Main(); main_form.Show(); this.Hide(); }

private void panel2_Paint(object sender, PaintEventArgs e) {

Graphics g = panel2.CreateGraphics();

Rectangle rec1 = new Rectangle(new Point(50, 1), new Size(20, 20)); g.FillRectangle(new SolidBrush(Color.Red), rec1);

Rectangle rec2 = new Rectangle(new Point(50, 30), new Size(20, 20)); g.FillRectangle(new SolidBrush(Color.Blue), rec2);

Rectangle rec3 = new Rectangle(new Point(50, 60), new Size(20, 20)); g.FillRectangle(new SolidBrush(Color.Pink), rec3);

Rectangle rec4 = new Rectangle(new Point(50, 90), new Size(20, 20)); g.FillRectangle(new SolidBrush(Color.Yellow), rec4); } } }

我们建了一张表来存储物资的库存情况,先从此表里读出各类物资的数量,存在一个数组里,再计算出各部分占的份数,然后为每种物资分配一种颜色,根据份数和颜色画出相应比例的扇形,最后形成完整的统计图。

4.5 基础信息模块设计

28

后勤工程学院本科毕业设计(论文)

基础信息管理包括物资基础信息管理、供应商信息管理、客户信息管理、用户管理和导入标签。它是仓库管理的重要组成部分,可以查看物资库存情况等,但对基础物资管理中的数据操作需要权限的允许,没有一定的权限将不能对某些功能的数据进行添加,修改等操作。如普通用户只能对简单项进行浏览,而超级管理员对基础信息模块的数据信息进行增加、修改和查询。

图4.5.1 基础信息模块进入界面

图4.5.2 物资基础信息管理界面

图4.5.2所示为物资基础信息管理界面,对物资信息的管理主要有查询和更

29

后勤工程学院本科毕业设计(论文)

改物资信息等操作。仓库的物资信息基本上不会轻易改变,当有特殊情况或根据上级领导部门指示需要对物资信息进行更改时,可对物资信息进行更改操作。在查询项目中,用户可对物资信息进行查询,可模糊查询,即只选查询项目,条件不填写的查询,也可写出条件指定查询。

在基础物资管理的用户管理界面,普通用户可修改密码,超级管理员可进行修改密码外,还可添加新用户和更改用户权限。用户管理界面如图4.5.3所示。

图4.5.3 用户管理界面

(1)密码修改

用户在密码修改界面可以对用户原密码进新修改,用户修改密码需要输入原密码,只有原密码正确后,且密码不能为空,新密码才会修改成功。提高了系统的安全性。当用户密码修改成功后,系统将对用户信息进行更新,用户下次登陆时,使用新密码登陆。

(2)添加新用户

这是只有超级管理员才能看到的页面,它能添加新用户,确保仓库正常更换管理员时的需要。添加用用户需要填写用户名、密码、真实姓名和选择权限等项。

30

后勤工程学院本科毕业设计(论文)

(3)更改权限

这也是只有超级管理员才能操作的功能。它能更改其他用户的权限,使其用户拥有更大或更小的权限。只能给现有用户更改权限,不能更改用户名或创造新用户名。

分代码如下:

string quanx = \角色='\

where 用户名 ='\ gengxin quanxi = new gengxin(); quanxi.rku(quanx);

MessageBox.Show(\权限修改成功!\

31

后勤工程学院本科毕业设计(论文)

5总结

通过这一个多月的毕业课程设计,在导师的帮助指导下,我们完成了从设计规划开始到系统进入实际开发阶段,基本上达到了预期的目标。

射频识别技术具有很多突出的优点:不需要直接接触、不需要光学可视即可完成信息输入和处理,可工作于各种恶劣环境,可识别高速运动物体并可同时识别多个标签,操作快捷方便,可重复使用。随着我军信息化建设的进一步深入,将高新技术应用于物资仓库的管理已成为必然选择,RFID技术以其特有的优势成为改造原始物资仓库的首选。

本系统主要完成对仓库的库存管理,包括入库、出库、库存及基础信息管理等四个方面。系统可以完成物资出入库以及对物资的实时查询和数据的修改、删除、添加。系统的核心是入库、库存和出库三者之间的联系。由于经验和水平不足,系统有些功能不完善,联动性不足。考虑到更多更广的适用面,完善更多的功能,此系统可以向以下两个方面扩展:

1、增加联网管理功能,使一个系统的仓库集中管理,资源共享,可视化控制,可以使信息和货物的流动更快;

2、本系统可以和自动分拣系统联合起来,使整个出入库过程无人化; 3、应用智能的出入库算法,提高利用率和周转率。

通过本次毕业设计我学到了不少新的东西,也发现了大量的问题,有些在设计过程中己经解决,有些还有待今后慢慢学习。只要学习就能在发现问题解决问题的过程中有所收获。

32

后勤工程学院本科毕业设计(论文)

参 考 文 献

[1]陈子侠.RFID技术的应用与现代物流[J]. 商业研究, 2003,6:138-142 [2] 王丰、张剑芳. 军事仓储管理[M]. 北京.中国物资出版社, 2005.11 [3] 单世民.数据库设计[J]. 大连理工大学,2006,7:15-17

[4]牛东来.现代物流信息系统综述[J].物流技术与应用. 2004,8(20):98-102

[5]包起帆.集装箱电子标签应用[J].上海海事大学学报(理科版),2006.27(增刊):62-67 [6]常晋义. 管理信息系统—原理、方法与应用[M]. 北京.高等教育出版社,2009.1 [7]庞娟.RFID与仓储管理系统的应用结合[J].中国储运,2004,5:47-48

33

后勤工程学院本科毕业设计(论文)

致 谢

在我们水平有限的情况下,在两个多月力能完成毕业设计,首先感谢冯云导师的细心指导和不倦教诲,无论是论文的内容还是文章的结构无不凝结着导师的心血。论文的顺利完成离不开老师的支持和帮助。从选择毕业设计题目,到毕业设计规划,查找相关资料,设计模型,具体实施,结束论文,整个大致的流程中,我的导师都给予了我耐心的指导和默默的关心,设计为期之长,其间遇到了不少问题,也承蒙了老师的关怀和照顾。

同时也感谢所有授课老师对我们的教育和同学对我们的支持和帮助。

34

后勤工程学院本科毕业设计(论文)

附 录

附录1 系统数据表

盘点信息表

盘点单 列名 盘点编号 建単时间 操作员 物资编号 盘点时间 备注 客户信息表 列名 客户编号 客户公司 联系人 电话 地址 邮编 备注 入库单表 列名 入库单号 操作员 建単时间 审核时间 入库时间 状态 备注

数据类型 nchar(20) nchar(10) smalldatetime smalldatetime smalldatetime smallint nchar(50) 是否主键 是 否 否 否 否 否 否 是否为空 否 是 是 是 是 是 是 数据类型 nchar(10) nchar(20) nchar(16) nchar(13) nchar(40) nchar(6) nchar(50) 是否主键 是 否 否 否 否 否 否 是否为空 否 是 是 是 是 是 是 数据类型 nchar(12) smalldatetime nchar(10) nchar(50) smalldatetime nchar(50) 是否主键 是 否 否 否 否 否 是否为空 否 是 是 是 是 是 35

后勤工程学院本科毕业设计(论文)

入库单详细信息表 列名 入库单号 编号 供应商编号 物资编号 数量 单价 用户信息表 列名 用户名 密码 真实姓名 角色 出库单表 列名 出库单号 操作员 建単时间 审核时间 出库时间 状态 备注

出库单详情表 列名 出库单号 编号 库户编号 物资编号 数量 单价

数据类型 nchar(20) int nchar(10) nchar(10) nchar(10) money 是否主键 是 是 否 否 否 否 是否为空 否 否 否 否 是 是 数据类型 nchar(20) nchar(10) smalldatetime smalldatetime smalldatetime smallint nchar(50) 是否主键 是 否 否 否 否 否 否 是否为空 否 否 是 是 是 是 是 数据类型 nchar(10) nchar(20) nchar(16) nchar(10) 是否主键 是 否 否 否 是否为空 否 是 是 是 数据类型 nchar(20) int nchar(6) nchar(50) nchar(10) money 是否主键 是 是 否 否 否 否 是否为空 否 否 否 否 是 是 36

后勤工程学院本科毕业设计(论文)

物资详情表 列名 物资编号 品名 重量 单位 物资单价 屋子类型 包装规格 库存总量 货位表 列名 库位编号 列数 行数 层数 状态 货位信息表 列名 库位编号 物资编号 供应商信息表 列名 供应商编号 供应商名称 联系人 地址 邮编 电话 备注

数据类型 nchar(6) nchar(20) nchar(16) nchar(40) nchar(6) nchar(13) nchar(50) 是否主键 是 否 否 否 否 否 否 是否为空 否 是 是 是 是 是 是 数据类型 nchar(4) nchar(10) 是否主键 是 是 是否为空 否 否 数据类型 nchar(4) nchar(2) nchar(2) nchar(2) bit 是否主键 否 否 否 否 否 是否为空 否 否 否 否 否 数据类型 nchar(10) nchar(16) nchar(10) nchar(10) nchar(10) nchar(10) nchar(10) nchar(10) 是否主键 是 否 否 否 否 否 否 否 是否为空 否 否 否 否 否 否 否 是 37

后勤工程学院本科毕业设计(论文)

附录2 英文文献

Introduction Why SQL?

We have demonstrated in this book how much of SQL script writing can be done through the Access query grid. In fact, the query grid is so easy to use that Microsoft has incorporated it into the SQL Server and is indicating that it is going to be the major way most future SQL will be done. Despite this trend, there is much still going for raw, text-based SQL. For starters, SQL is far easier to handle and manipulate than query grids. It also provides a degree of functionality that is not available to the query grid developer. In this chapter we will show how SQL is critical for Visual Basic development. The next chapter will continue this theme with a demonstration of how the coding of web Active Server pages can be enhanced using SQL. Definitions

Recordset — A collection of records in Visual Basic programming.

VBA — Visual Basic for Applications. The flavor of Visual Basic incorporated in Access and in much of the Microsoft Office suite.

This chapter will assume that you are familiar with Access programming and that you know your way around modules and basic Visual Basic code. It also assumes that you have a good understanding of items and properties of those items. In particular, we will be concentrating on the properties of forms and combo boxes and how you can set some of these properties dynamically using code. Before some of you begin to panic, we promise to keep things as simple as possible to make our points. On the other hand, if you have made it this far, you have a desire to learn SQL, and what better reason for this than to improve your Visual Basic programming ability? Fixed Queries vs. ―On-the-Fly‖ Queries

The first reason for developing queries dynamically rather than building them in the query grid and storing them is a simple matter of logistics and aesthetics. Access is a very powerful program. It permits the user to develop queries to do just about anything. Unfortunately, as powerful as the query development tools are, the management and organization of the queries leaves much . To see how far we should have come in Access, we need to go back to the early days of DOS. In those early days, all files on storage media were kept in a single list on the media. In the case of floppy disks, each floppy would have a single directory and all files would be in the directory. While simple and straightforward, the lone directory could have hundreds of files, which in turn could be associated with multiple applications. It was the responsibility of the operator to know which files were associated with each application and to keep things straight. Generally the operator did not keep up with this responsibility, which resulted in chaos.

This problem was alleviated with the introduction of cascading directory trees. With

38

后勤工程学院本科毕业设计(论文)

directories, files could be grouped and put together with related files separate from nonrelated files. For example, a data directory could be set up to contain data. A template directory could be set up to hold all the templates associated with a program. Finally, a program directory could be set up to contain the actual program files. Directories could be placed in other directories, establishing a hierarchal system to manage all files on the media.

Unfortunately, Access has never gotten past the initial stage of putting forms in one container, modules in a second container, tables in a third container, and so on. There is no provision to group queries based on function or tables based on contents. The net effect is that if you have a hundred queries, they will all be in a single list. There could be a dozen queries that are performing similar tasks, but just like in the early days of computers, there is no real way to organize the queries other than by careful user-managed naming conventions. Until Access provides a better way of organizing queries, one of the tricks that the programmer can implement is to reduce the number of needed queries, thereby simplifying the organization of the remaining queries.

This is where SQL enters the picture. One of the easiest ways to avoid having queries appear in the list of queries is to build the queries dynamically in code rather than by having each query stored in the query list. By entering query operations as inline code rather than as separate, unique queries, you have fewer queries, which are far easier to manage.

This is just the first of many reasons for building queries dynamically in code and creating them on the fly rather than to have them permanently saved in the query list. But this is by far the most important reason. We will introduce a few more reasons as this chapter progresses.

Using our earlier example of the Customers table, let us first add a few records to the table to give us a larger number of records with which to work. This will provide us with additional filtering capabilities and show off a few additional features of filter parameters.1661 Now that we have added these records, assume that you want to display only those people who are in Florida. One method of addressing this requirement is to build and save a special query where the state equals Florida. A second method of doing this is to build the recordsource for the form using the builder (the ellipsis that appears after the drop-down). Using the builder you can select the recordsource as the table Customers and add your filter for the state .What happens when you save this query is interesting. Access evaluates what you have entered in the query grid and automatically saves it in the recordsource as an SQL query.This brings up several other possible uses for Access SQL. The first is that you can type the SQL directly into the recordsource instead of going to the query builder. Sometimes this is a far faster way of entering the recordsource. Second, if you have a form that already has the recordsource that you want to use for your current form, copy the SQL code from the first form and paste it into the second form. This is often much quicker than building a query from scratch..Sidebar: The concept of viewing the query as an SQL statement also gives the designer a great degree of flexibility that does not exist in the query grid. If you wish to take a recordsource from one form and copy it to another

39

后勤工程学院本科毕业设计(论文)

form but have the additional complication of having the recordsource being a different but similar table, you can copy the SQL string into a text editor such as Microsoft Word. You can then use search and replace to change the initial table to the new table using the global search and replace feature. This is extremely useful if you have a very complex query and don’t wish to recreate everything. A quick search and replace followed by cutting and pasting the result back into Access completes the operation. Unfortunately, Access does not have a convenient way of doing this. The Access text editing capabilities are more primitive than even those of Notepad. Filtered Recordsets for Forms. Now that we have shown that the recordsource of a form is just an SQL statement, we can make the leap to dynamically set up the query as needed. Dynamic queries are extremely useful when working with a filtered recordset in a form or report. Just like with every other task in Access, there are many ways to filter a recordset. First, you can enter the filter when opening a form. We will demonstrate this with the frmCustomers form in the sample database (see Figure 14-4). Selecting a record on the Customers for that customer. If there is only one transaction, frmTransactions will only have one record to display. If there is more than one transaction, the user is able to move forward and backward through the records.

So much for the overview — now we will get into the fun stuff! The first button, Open with filter, is the equivalent of setting the filter parameter of the recordset to the entered value. Take a look at the code behind this button:

In effect, this code opens the frmTransactions form and sets the Filter property of the form. In the example above, when the user selects the customer with the ID of 1, the filter string ―customerID =1‖ is placed into the Filter property .

The one problem with this approach is that you generally want to empower the user to perform additional filters with the data. If the user enters a new filter via the Filter button or through filter by form, the new filter will overwrite the one you had carefully built and will change the list of records displayed with no obvious way to get back to the initial filter set. For example, selecting ―filter by selection‖ when the date sold of 2/8/2003 is selected produces the filter shown in Figure 14-6. You get the records that you want but you have to tread on shaky ground.

If the user removes the filter to try to go back to the full set of pertinent records, the results are not what is expected. The resulting display will have all the records, not just the ones that meet your original customer filter, as shown in .

Let’s take a step back for a moment and look at this problem in a bit more detail. You really don’t want the user to be able to view the full set of records, no matter what filters he chooses to set up. You want the user to only have access to the records you want him to see. This is best accomplished by setting the recordsource of the form to a recordset that only has the values that you want.

Looking at the properties of our form, notice that the Recordset property is either a table or a query expressed as an SQL statement. We have the ability to change this property and when doing so we can change the collection of records that the form uses. We do this by opening the form, then setting the Recordsource property to a filtered query. Since the form is not filtered by the use of the Filter property, clearing the filter will not affect our dataset. The user is limited to the records we give him

40

后勤工程学院本科毕业设计(论文)

permission to view in the recordsource.

We can see this in the Immediate window in Visual Basic. Note that the recordset has a filter applied and the filter for the form is blank. Filtered Recordsets for Combo Boxes

The second place that dynamic recordsets are commonly used is in combo boxes. In many cases you may want the combo box to have varying data depending upon the value of an option group. Take a look at the next form from the sample database, frmSelectCustomer.

In this example, we want the contents of the combo box to be sorted by the selected option. We also want the combo box to reflect the choice of the option group. We do this by setting the Rowsource property of the combo box programmatically during the after update event based on the value of the option box. Depending upon the option selected, the program will set up the rowsource to sort by the selected field.

什么是SQL?

我们已经在这本书多少的SQL脚本可以通过写作的存取查询网格。事实上,这个查询网格使用起来很方便,微软公司纳入到SQL服务器,并且表示,它将会是主要的方式将做的大多数未来SQL。尽管这一趋势,有多少还是会为原料,基于文本的SQL数据库。对初学者来说,SQL是更容易处理和操纵比质问网格。它还提供了一定程度的功能,是不能够查询网格的开发。在这一章中,我们将展示如何SQL是至关重要的视觉基本的发展。下一章将继续这个主题和演示如何网络动态服务器网页代码即可提高使用SQL。 定义,

记录——记录在视觉的基本程序。

VBA ——Visual Basic的应用,。Visual Basic的组件,被纳入到Access和微软办公组合中。

本章将认为你熟悉访问项目,模块包含的方法和基本的Visual Basic的代码。它还假设你能很好的理解选项和这些选项的性质。特别是,我们将会集中在窗体的性质和形式,并说明你是如何设定一些属性动态使用的代码。你们当中的一些人开始之前,我们保证恐慌事情尽可能简单,使我们的分。另一方面,如果你已经做得够远了,你想学什么更好的理由SQL,这比来提高你的视觉基本编程能力吗?所有的疑问和―On-the-Fly‖的疑问

第一个原因而不是在建筑中动态查询的网格和存储他们提问是一件简单的事情的物流和美学。访问是一个非常强大的程序。它允许用户对发展问题做任何事。不幸的是,作为有力的工具,查询发展管理和组织的疑问。多远,我们应该来访问,我们需要回到早期的DOS。在很早以前,所有的文件存储媒体被放置在一个单一的名单上的媒体。在软盘,每一个软盘会有一个单一的目录和文件的目录。虽然简单明快、孤独的目录可能有成百上千的文件,而这也就会反过来可以与多个应用程序。它的操作人员,负责相关文件是知道每一个应用程序和保持平直。一般接线员没有跟上这种责任,导致混乱。

这个问题是缓解引入层叠式目录树。与目录、文件可能被分组,加上相关文件nonrelated分开的文件。例如,一个数据目录可以建立包含的数据。一个模板目录可以设置所有的模板相关程序。最后,一个程序目录可以建立包含实际的程序

41

后勤工程学院本科毕业设计(论文)

文件。目录可以放置在另一个阶级制度,建立目录管理所有文件在媒体上。

不幸的是,从来没有得到过了最初的阶段形成一个货柜,模块中获得了第二名的容器中,容器,在第三个表格等。没有规定查询功能或小组基于内容的桌子。最终结果是,如果你有一百个询问,他们将会在一个列表。可能会有一打到进行类似的任务,但是就像在早期的计算机,并没有真正的方式来组织user-managed仔细询问以外的命名规则。直到存取提供一个更好的方式之一,组织查询的把戏,程序员可以实施是为了减少所需的查询,从而简化的组织的剩余的疑问。

这就是SQL进入这幅画。一个最简单的方法来避免有疑问的问题列表中出现的是建立了动态查询代码,而不是通过每个询问储存在查询的列表。通过进入查询操作作为嵌入的代码,而不是作为独立的、独特的疑问,你有更少的疑问,这是更容易管理。

这只是其中之一的原因很多动态查询代码和建筑物创造他们的飞行,而不是让他们永久保存在查询的列表。但是这是到目前为止最重要的原因。我们将介绍一些更多的原因,如本章的进展。

使用我们的客户之前,让我们先餐桌增添一些记录到桌子边,给了我们更多的记录,用它来工作。这将为我们提供额外的过滤功能,炫耀一些额外的特征参数的过滤器。

现在我们增加了这些记录,假设你想要显示只有那些在佛罗里达州。一种解决该要求是建立并保存一个特别的查询有关国家等于佛罗里达。另一个方法是建立在这样的形式recordsource使用(省略号,后出现拉)。你可以选择使用建造的recordsource作为餐桌增添你的客户,为国家(弗罗里达州过滤)如图14 – 2)。 这就引出了其他可能的用途SQL访问。第一,你可以输入SQL直接进入recordsource而不是去查询生成器。有时这是一个遥远的方式进入recordsource更快。第二,如果你有一种已经recordsource那个你想用你的当前的情况下,复制SQL代码从第一个窗体、糊成另一种形式。这是通常比建立查询从零开始。 注释:?浏览查询的概念作为SQL语句也给了设计师很大程度的灵活性,不存在于提问。如果你想要一个recordsource从一种形式和复制到另一种形式,但有额外的并发症有recordsource作为不同但类似的桌子,您可以复制的SQL文本编辑器到诸如微软字。你可以使用搜索和替换改变最初的桌子,桌子使用全局最优解的新的搜索和替换功能。这是非常有用的,如果你有一个非常复杂的查询和不希望创造的一切。快速搜索和替换,紧随其后的是剪切和粘贴结果回访问完成手术。不幸的是,并没有一个方便的方式做这件事。进入文本编辑功能较原始的比甚至那些记事本。

过滤Recordsets为形式

既然我们已经显示了recordsource表格仅仅是一个SQL语句,我们能去动态建立查询。动态查询时非常有用的工作和过滤记录集形式或报告。 就像其他任务在访问,有很多

如何过滤的字段。首先,你可以进入滤当打开一个表格。我们将证明这一点的frmCustomers表格样本数据库。选择一个记录客户的形式,然后按按钮的形式将打开frmTransactions展示交易形式为顾客。如果只有一个交易,frmTransactions只会有一个记录显示。如果有不止一个交易,用户能够很好地向前和向后通过记录。

这么多的概述-现在我们将会变成有趣的东西!第一个按钮,打开过滤器,等于设定过滤的参数值的输入字段。看看代码后面这个按钮。

42

后勤工程学院本科毕业设计(论文)

实际上,这个代码打开frmTransactions形式和设定过滤性能的形式。在上面的例子中,当用户选择向客户ID,滤线‖customerID = 1‖被置入滤波器性能。

一个问题,这种做法是,你通常都想让用户完成额外的数据过滤。如果用户输入一个新的过滤器通过过滤按钮或通过过滤器过滤新的形式,通过将覆盖一个你曾经认真的建成,将改变清单的记录显示没有明显的方式回到最初的过滤器。举例来说,选择―过滤器通过选择日期时产生的2/8/2003出售选择滤波器。你得到你想要的记录,但你必须小心不稳固了

如果用户清除过滤器来试图回到了完整的相关记录,结果并不期望是什么。结果显示所有的记录,而不只是那些满足你的客户过滤器。

让我们退一步,看这个问题有点进行更详细的讨论。你真的不想让用户可以看到完整的记录,不管他所选择的过滤器。你想要用户只能访问记录你要他去看。这是最好的recordsource完成设定的形式记录集,只有有价值,你想要的东西。 我们看着性质的形式,注意到的是一个桌子或财产查询以SQL语句。我们有能力改变这个属性,这样我们可以改变的形式记录用途。我们这样做,开放的形式,然后设置Recordsource物过滤的查询。自从形态没有经过使用滤波器性能、清除过滤器并不会影响我们的数据集。这个用户是限于记录我们给他的观点recordsource许可。

我们可以看到在这个立即窗口时,Visual Basic。需要注意的是,有一个过滤器,集和滤波器应用形式是一片空白。

第二点,动态recordsets常用在组合框。在许多情况下,你也许想要的组合框,

取决于不同的数据值的选项组。看看下形成的,frmSelectCustomer样本数据库。 在这个例子中,我们想要的组合框的内容是根据选定的选项。我们也希望组合框来反映选择选项组。我们这样做,设定的Rowsource财产的组合框中事件后,通过基于价值更新的选择框。根据这个选项被选中,这个计划将会被选定rowsource排序。考察了不同的组合框,当不同的选择。不同的价值观的组合框,直接导致的SQL放置背后的rowsource的组合框。

43

本文来源:https://www.bwwdw.com/article/ri7o.html

Top