VB+SQL Server药房管理系统
仓储式药房管理系统设计与开发
——销售和入库的设计
摘 要
仓储式药房管理系统是典型的信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立一个数据一致性和完整性强、数据安全性好的数据库。而对于后者则要求具备应用程序功能完备,易使用等特点。
结合医药行业的特殊要求,本文对SQL Server2000数据库管理系统、SQL语言原理、VB应用程序设计,VB数据库技术进行了较深入的调查和研究,主要完成对仓储式药房管理系统的需求分析、功能模块划分、数据库模式分析,并由此设计了数据库结构和应用程序。
第一章阐述了开发仓储式药房管理系统的意义和背景。
第二章第三章阐述了MIS系统和仓储式MIS系统的基本理论。
第四章阐述了此系统的开发环境。
第五章第六章进行了具体的程序设计,具体划分了三类用户的操作权限,设计了了三个操作界面。实现了数据库表的浏览,记录的添加、删除、修改和查询,报表的生成等。详细的给出了从仓储式药房管理系统分析到总体设计详细设计与实现及测试的各个环节,最后指明本系统还存在的不足及未实现的功能。
关键词:药房管理系统、管理信息系统、仓储、医药
WAReEHOUSE PHARMACY MANAGEMENT SYSTEM DESIGN AND DEVELOPMENT
----DESIGN OF DISTRIBUTION AND ENTERING STORAGE
ABSTRACT
Warehouse-style pharmacy management system is a typical management information system (MIS), mainly including the establishment and maintenance of the background database and the development of front-end application. For the former it requests establishment of a database with strong data consistency and integrity and good data security. For the latter it should be characterized with perfect application functions and easy to use at least.
Therefore, in line with the special requirements of the curatorial industry, after deeply investigating and researching the following points: SQL Server 2000 database management systems, SQL language theory, VB applications design and VB database technologies, the article mainly accomplish the analysis of the main warehouse-style pharmacy management system requirements, functional modules division, and the database model, and the design of structure of the database and applications according to it.
Chapter I expounds the meaning and background of the development of warehouse-style pharmacy management system.
Chapter II and chapter III explains the basic theory of MIS system and storage system.
Chapter IV explains that the system development environment.
Chapter V and Chapter VI carries through specific procedures design, specifically establish manipulate scope of the three categories of users including seller, storage manager and system manager and designs three operational interface. The article also achieved the scanning of the database tables, adding, deleting, modifying and enquiring of records, as well as generation of statements, etc. Besides, the specific process from the warehouse-style pharmacy management system to the whole design and detailed design ,and the realization of the various link, as well as the design and test is detailedly given, and finally the system also identified deficiencies and unrealized functions.
KEYWORDS:Pharmacy Management System, MIS, Warehouse, Medicine221
仓储式药房管理系统设计与开发
目 录
第一章 引 言. 6
1.1 选题意义. 6
1.2 选题背景. 6
1.2 .1医药行业发展现状. 6
1.2 .2 医药行业发展过程中所存在的问题. 7
第二章 MIS系统的基本理论. 8
2.1 MIS系统的概念. 8
2.2 MIS系统的发展趋势. 8
2.3 MIS系统的开发梗概. 9
2.3. 1 MIS系统的开发原则. 9
2.3. 2 MIS系统的开发步骤. 10
2.3. 3 MIS系统开发方法的选择. 10
第三章 仓储式MIS系统概述. 11
3.1 仓储式经营理念. 11
3.1. 1 背景. 11
3.1. 2 目标. 11
3.1. 3 存在的问题. 11
3.2 医药仓储式经营理念. 12
3.2. 1 一般行业的特点. 12
3.2. 2 医药行业的特殊性. 13
3.2. 3发展前景. 14
第四章 系统的开发环境. 15
4.1 硬件环境. 15
4.2 软件环境. 15
4.3 VB 6.0 概况. 15
4.4 SQL Server 2000 概况. 16
4.5 VB访问SQL Server 2000的技术. 16
第五章 仓储式医药管理系统的设计与分析. 17
5.1 系统需求分析. 17
5.1. 1系统的可行性研究. 17
5.1. 2 系统需求分析. 18
5.1. 3 系统的业务流程. 20
5.2 系统功能分析和设计. 21
5.2. 1系统功能模块结构图. 21
5.2. 2 系统流程图. 22
5.2. 3 DFD图. 22
5.2. 4数据字典. 23
5.3 系统数据库分析与设计. 27
5.3. 1 E-R图. 27
5.3. 2数据库表结构. 27
5.3. 3 数据库表间关系. 28
5.4 系统界面分析与设计. 29
5.4. 1 系统界面设计原则. 29
5.4. 2 系统界面设计. 29
5.4. 3 输出分析设计. 31
5.4. 4 输入分析设计. 31
第六章 小 结. 32
6.1 系统维护. 32
6.2 仍存在的问题. 32
6.3 展望. 33
6.4 小结. 33
致 谢. 35
【参考文献】. 36
附 录. 38
仓储式药品管理系统设计与开发
——销售和入库的设计
第一章 引 言
1.1 选题意义
现在,随着信息技术和物流技术的发展,政府和企业都在力图建设一个方便、有效的管理信息系统。医药作为诸多行业中的一个特殊行业,面临着激烈的竞争,如何有效、快速的管理药品,处理正常的进销存一体化业务,成为企业迫在眉睫的问题。药房管理经常由于管理上的不当使部分药品失效报废,给企业带来了一定的经济损失, 因此,传统的手工统计操作已远远不能满足实际工作的需要。为提高工作效率, 同时也能够随时了解药房的药品情况,对其实施计算机管理是非常必要的。我们仔细参考了一些其它药房的管理系统,在充分注重软件操作的交互性、简单性以及可视化因素的前提下, 开发了一套科学、完善、实用的仓储式药房管理系统。
1.2 选题背景
1.2 .1医药行业发展现状
随着我国市场经济的蓬勃发展和人们对医药产品需求的迅速增加,医药行业正处于一个高速发展的时期。行业的快速发展必然导致竞争的加剧,要想在激烈的市场竞争中谋求发展,客观上要求企业必须加强内部管理,提高运营效率。而我国大部分医药企业是由原来的国有零售药店改造或医药企业职工下海创办的,虽然经营实现了专业化,但是从信息机制上还没有摆脱原有的销售模式,企业内部没有形成完善、有效的激励和约束的信息化管理机制,企业发展动力不足,从而影响了企业的持续、稳定、快速发展。
同时,我国医药经营形式正在向集团化、连锁化发展。在这一发展过程中,旧的企业管理模式已不适应新型的社会主义市场经济的要求,而新的企业管理模式正在被广泛探讨、研究之中。这其中,如何利用现代信息技术使企业拥有快速、高效的市场反映能力和高度的效率,已是医药经营企业,特别是医药连锁经营企业特别关心的问题。再者,由于医药产品种类繁多、销售模式特殊、业务量大,单凭手工记账已很难适应工作的需要。医药作为一个关系到人类健康的特殊行业,国家对医药行业又有一些不同于其他行业的管理政策,这些都加大了管理的难度。如何尽快建立和完善现代化企业的信息化管理机制问题,已成为医药企业发展的关键所在。
1.2 .2 医药行业发展过程中所存在的问题
在市场经济中,销售是企业运作的重要环节,为了更好地推动销售,不少企业建立了分公司或实行代理制,通过分公司或代理商把产品推向最终用户。这些分公司或代理商大都分布在全国各地,甚至是在国外,远距离频繁的业务信息交流构成了这些企业业务活动的主要特点。在传统方式上,公司之间通常采用电传、电报、电话等方式传递订货、发货、到货、压货、换货、退货等信息,总公司的商务部门在接到分公司或代理商传来的订单和银行汇款单据传真后,开具产品出库单通知,然后再把相关的进、销、存信息手工存档,再对这些信息进行统计分析,才能了解到整个公司的生产、销售和库存情况。
这种信息传递、管理方式不仅效率低,其可靠性、安全性和保密性都无法满足要求,而且数据统计时间严重滞后,往往是当领导了解到企业的“进、销、存”出现问题时,就已经远离了问题出现的时间和地点。即使是没有分公司的企业,使用传统的手工方式管理也存在同样的问题。由于每天销售量大,呆账、错账时有发生且常出现开“空单”的现象,管理者常为进销存业务中存在的问题而头痛。为提高企业管理水平,更好的服务于广大用户,通过进销存管理系统,及时通过网络把决策信息传递到相关决策人,从而可以及时发现问题、解决问题。更好的把握机会,提高企业的市场竞争力。
仓储式药房管理系统设计与开发
第二章 MIS系统的基本理论
2.1 MIS系统的概念
管理信息系统(MIS,Management Information System)的概念是1961年美国人J.D.GALLAGHER首先提出来的,是一门新兴的、集管理科学、信息科学、系统科学及计算机科学为一体的综合性学科,研究的是企业中信息管理活动的全过程,以便有效的管理信息,提供各类管理决策信息,辅助企业进行现代化管理。
管理信息系统是企业的信息系统,它具备数据处理、计划、控制、预测和辅助决策功能,具体作用如下:
1) 用统一标准处理和提供信息,排除使用前后矛盾的不完整的数据。
2) 完整、及时提供在管理及决策中需要的数据。
3) 利用指定的数据关系式分析数据,客观预测未来。
4) 向各级管理机构提供不同详细程度的报告,缩短分析和解释时间。
5) 用最低的费用最短的时间提供尽可能精确、可靠的信息,以便使决策者选择最佳的实施方案,以提高企业的经济效益。
2.2 MIS系统的发展趋势
1) 各种管理思想的信息化融合
随着电子商务思想的成熟,管理信息系统逐步发展成为一种融合各种管理思想的面向产品生命周期的集成系统。它在ERP(企业资源计划系统)的基础上,充分利用互联网技术,将供应链管理 ( SCM) 、客户关系管理 ( CRM) 、商业智能 ( BI, Business Intelligence ) 、电子商务 ( EC, Electronic Commercial ) 、决策支持系统(DSS, Decision Support System) 等功能全面集成,以实现资源共享、数据共享、适应网络经济的充分柔性的企业管理信息系统。
2) 管理信息系统的模块化、组件化
现代管理信息系统软件的规模越来越大,且管理思想越来越复杂,以至于超出了软件开发者在合理的时间和价值内设计、描述、开发和验证它们的能力。
3) 平台式管理信息系统
随着企业建模思想的成熟,必然在面向企业功能,面向企业过程以及面向产品生命周期等方面积累了大量的企业模型,在这些企业模型的基础上,对这些模型按照行业进行分类,然后再逐步按照行业大类,行业小类进行逐步细化,最后就可以建立面向行业、面向行业大类、面向行业小类的企业参考模型。 在企业参考模型的基础上,再对每种模型所蕴涵的管理思想进行自上而下的分解,按照软件复用的思想对每部分程序化,构件化,并根据通用的目的进行参数化。这样随着各类模型库的丰富和面对特定对象( 企业功能、过程、产品生命周期 ) 的构件的完善以及管理思想的日益成熟,就可以构建平台式的管理信息系统,它能够针对具体的企业,在参考模型的基础上,根据企业实际情况稍做修改,就能在大量的构件库中快速组装出具有个性化的企业管理信息系统。
2.3 MIS系统的开发梗概
2.3. 1 MIS系统的开发原则
一般情况下, 管理信息系统的体系结构采用自上而下的纵向分层、横向分块来设计实现的。分层为管理软件的复杂度提供了一个很好的解决方法, 在分层系统的等级组织形式中, 每一层都给下一层提供服务, 对其下层则要求得到服务。分块指按信息系统软件实现的功能将软件分为若干块, 每一块既是一个独立的子系统, 又是大系统的一个组成部分。块与块之间通过数据表进行耦合。在确定的分层分块的体系结构中, 再采取自下而上的方法, 首先, 对最底层的功能模块进行设计,包含管理思想标准化、模型化, 使其具有通用性, 再进行构件化设计, 并按照软构件应该具有的可移植性、互操作性、扩展性、可配置性和可维护性等特点, 进行参数化设置;其次, 对该功能的上一层进行构件化改造, 减少模块间的重叠, 这样层层改造之后, 对于类似企业的管理信息系统的开发, 只需要针对该企业的个性, 对某些局部的构件进行改动就可以完成了。分层、分块模块结构如图2.1所示。
图2.1 分层、分块模块结构
2.3. 2 MIS系统的开发步骤
MIS的开发过程可分为五个步骤来描述:
u 第一阶段 系统开始和可行性研究。
u 第二阶段 系统分析和设计。
u 第三阶段 程序设计。
u 第四阶段 系统测试和技术培训。
u 第五阶段 项目总结和评估。
2.3. 3 MIS系统开发方法的选择
随着数据仓库技术、多媒体数据库技术以及各种计算机软、硬件技术的发展,管理信息系统的结构体系发生着变化:一是主机/终端机模式;二是客户机/服务器 ( C/S) 模式;三是WEB三层体系 (B/S) 模式。
我们通常可采用客户机/服务器(C/S)和浏览器/服务器(B/S)两种结构开发。C/S结构在20世纪80、90年代被广泛采用,它可以使用Visual Basic、Visual C++、Delphi和PowerBuilder、SQL Server等众多功能强大的开发工具开发客户端应用程序,服务器上使用后台数据库保存数据。而B/S结构是所有应用服务都有专门的应用服务器处理,它一方面减轻了数据服务器的处理负担,另一方面可以利用服务器群集技术,支持大规模用户的应用。
第三章 仓储式MIS系统概述
3.1 仓储式经营理念
3.1. 1 背景
仓储式销售最早起源于西方,自60年代首家仓储式商场在荷兰创建以来,获得了很大的发展,现已遍布欧洲、美洲、亚洲等地,年销售额达85亿美元以上。仓储式销售在西方商业经济发展中已成为一种强有力的经营方式。我国首家仓储商场是广州的“广客隆”,自1993年8月开业以来广受欢迎。随后在全国各地迅速发展开来。在仓储式管理系统中,完全依靠人工管理来完成以上的各种库存管理业务几乎是不可能的。随着信息技术的发展,运用库存管理信息系统来管理库存是每一个仓储式管理系统的必选之路。
3.1. 2 目标
仓储式管理系统库存管理的目标就是要保持合理的周转库存,减少积压库存,合理地计划临时库存和季节库存,尽量缩短在途库存的运输时间。
3.1. 3 存在的问题
近几年,借鉴国外的管理模式,我国的仓储式管理系统有了一定的发展。但是,由于我国的市场环境与国外不同,在库存管理系统的应用上出现了不少问题。
1) 业务流程不成熟
国外的连锁体系在建立之初,为了达到规模效应,采用的是集中化采购和中央配送体系。然而在采用集中化管理模式时遇到了不少困难。我国地域辽阔,经济发展不均衡,并且存在地域性消费习惯、不同的风土人情和品牌概念,很难发挥集中化采购的优势。我国的制造基地不集中,地域广阔交通却并不发达,这就为集中采购带来了一定的麻烦。这种集中与分散左右为难的尴尬局面,使得大多数的仓储式管理系统的管理模式非常不稳定,这给库存管理系统的设计带来了极大的难度。
2) 系统数据不正确
大量无用的冗余数据使得系统运行速度变慢,库存报表中出现很多无用信息;日常管理中单据没有及时录入系统,造成系统中的库存数据与商品的实际库存不一致,管理者根本无法根据系统产生的补货报告来进行库存管理;最小订货量、最大订货量、安全库存量和送货周期这些非常重要的数据并没有预先进行合理的设定。
3) 系统用户素质低
由于大多数最终用户的计算机水平比较低,在系统的实际运用中,常会出现使用不当或者根本就不懂得使用,那么系统就无法发挥其应有的功能。
3.2 医药仓储式经营理念
3.2. 1 一般行业的特点
仓储式商场是一种带有批发性质的批售式商店,又称为货仓式商场。日本和中国港台地区常提的量贩店,即批量贩卖的商店,指的就是仓储式商场。仓储式商场是以经营生活资料为主的,储销一体,低价销售,提供有限服务的销售业态。仓储式的经营模式,货物不需要进行储存,而是直接将货物摆上货架,这样,就免去了货物存放和货物的第二次运输,节省了不少费用。在商品销售中,鼓励顾客批量购买,对批量购买的顾客实行价格折扣,从而扩大了商品销售,加快资金周转,因而受到社会的瞩目。与超市等零售业态不同的是,仓储式商场具有简朴实用的特点以及价格低廉的优势。
现在批发市场在我国还是占着主流地位,这是由我国特有的国情决定的一种特殊的流通方式。从国外的实践看,批发市场也只是一种过渡业态。那么,从长远来看,批发的任务有相当一部分要被仓储式商场所取代。仓储式商场具有批零兼营的特点,可以代替一部分三级批发市场的作用。随着我国经济体制转轨和经济增长方式发展,仓储式经营将逐渐代替批发业和零售业,成为引领中国销售行业发展的领头羊。
仓储式药房管理系统设计与开发
一般的仓储式管理系统工作的主要任务有:
u 企业的采购管理
u 企业的销售管理(批发、零售、连锁)
u 企业各部门的商品配送管理
u 企业库存商品的管理
u 企业应收款、应付款的管理
u 企业经营状况分析和决策
3.2. 2 医药行业的特殊性
医药行业作为与老百姓性命攸关的行业,与一般的进销存行业不同,它具有自己特有的特性。国家药品监督管理局对医药流通企业有非常严格的要求,特别是近两年推出的GSP认证,将医药企业的管理大大提升了一个台阶。
总的来说,仓储式医药行业具有以下一些特殊性:
1) 商品的属性
医药行业因其特殊性,在商品清单中会增加以下属性:剂型、处方类型、批发价、零售价、批准文号、商标、大包装单位、大包装数量、中包装单位、中包装数量、化学名、化学名拼音、GMP(《药房生产质量管理规范》)认证、保质期、功能主治、储存条件等。
2) 批号、有效期的管理
譬如,六个月内到期的药品要催销、三个月内到期的药品要办退货及过期的药品禁止销售。因此信息系统需要能够将库存中的药品按批号来管理,即输入进货单时要求输入药品的批号和有效期;“库存”数据表中要增加“批号”字段,不同批号的商品需要不同记录来存放;开销售单时要指定销售的批号并严格按照开票的批号出库;系统应具有近效期药品的自动报警功能。
3) GSP流程管理
GSP要求企业经营的所有业务数据必须形成严格的记录,并至少保存3年以供查询,包括药品采购记录、药品入库验收记录、药品销售记录、药品退货记录、近销期药品催销表、药品报告记录、库存湿温度记录等等。
3.2. 3发展前景
仓储式销售受欢迎有其独特的经营特色,它具有广大的发展前景。首先,仓储式销售符合消费者心理需求;其次,仓储式销售给经营者带来可观利润;再次,仓储式销售弥补了传统商业的不足;最后,信息产业为仓储式销售发展提供了条件。
第四章 系统的开发环境
4.1 硬件环境
u 486 DX/66MHZ或更高的处理器、或任何运行于Microsoft Windows NT Workstation 的Alpha处理器。
u Microsoft Windows 支持的VGA或分辨率更高的监视器。
u 16MB内存以上。
u 鼠标或其他定点设备。
4.2 软件环境
本系统是在Microsoft Windows XP 下开发的,所采用的开发工具是Microsoft公司的Visual Basic 6.0企业版。考虑到医药门店每天的数据处理量有点大,在后台采用了SQL Server 2000数据库。
4.3 VB 6.0 概况
Visual Basic简称VB,是微软公司推出的一种可视化编程工具,是当今世界上应用最广泛的编程语言之一,它也被公认为是编程效率最高的一种编程方法。“Visual”指的是开发图形用户界面(GUI)的方法,“Basic”指的是BASIC语言。无论是开发功能强大、性能可靠的商务软件,还是编写能处理实际问题的实用小程序,VB都是最快速、最简便的。它提供可视化的开发环境、丰富的控件组,省去了开发者自己编写代码实现这些效果的麻烦,这样就可以把更多的精力放在程序功能的实现上。VB具有以下特性:
1) 数据访问特性允许对包括Microsoft SQL Server和其他企业数据库在内的大部分数据库建立数据库和前端应用程序,以及可调整的服务器部件。
2) 有Active X技术可以使用其他应用程序提供的功能。
3) Internet功能强大,使得用户很容易在应用程序内通过Internet或Intranet访问文档和应用程序,或者创建Internet服务器应用程序。
Visual Studio.Net中的Visual Basic.Net是Microsoft公司推出的全新32位Windows开发工具。它不仅继承了VB 6.0的使用简便、功能强大、效率高的特点,还新增了“继承”功能,使用VB变成了真正的“面向对象的”编程工具,成为目前最为优秀的应用系统开发工具之一。
4.4 SQL Server 2000 概况
SQL Server 2000数据库是典型的服务器类型数据库,是开发C/S结构数据库应用系统常用的数据库类型之一。SQL Server 2000服务器提供了强有力的数据库管理功能,开发者可以使用企业管理器以可视界面的方式实现数据库,使用查询分析器运行调试SQL脚本,使用事件探查器监控对数据库的存取操作。本系统采用ODBC直接连接到数据库的方式来访问后台数据库。
4.5 VB访问SQL Server 2000的技术
本仓储式药房管理系统主要采用三种连接数据库的方法:
1) 使用ADODC和DataGrid控件相结合来访问数据库。
2) 定义数据集对象的方法。
如Dim rs1 As New ADODB.Recordset
3) 定义连接函数,再用函数来访问数据库。
如Public Function cnn() As ADODB.Connection
Set cnn = New ADODB.Connection
cnn.Open "Provider=MSDASQL.1;Persist Security Info=False;Data Source=yyjxc"
End Function
第五章 仓储式医药管理系统的设计与分析
5.1 系统需求分析
5.1. 1系统的可行性研究
根据调查发现我国的药品市场还不是很规范,一般的药店都是采用人工操作,对卖出去买进来的药品都是人工记录,有些甚至没有记录。这对一个药店或企业来说是极不利的,很难掌握企业日常的运营情况,不利于企业参与激烈的竞争。随着计算机的广泛应用和管理系统的越来越成熟,药品的手工操作已不能满足药房的日常管理,故有必要建立一套适合药房管理的系统来管理医药门店的进、销、存、退、盘点、变价等业务。
下面主要对操作可行性,技术可行性,经济可行性和进度可行性进行分析。
1) 操作可行性:
从以上的医药行业的背景和初步调查可知此系统是合乎需要的,它能使企业更加方便、科学的管理日常运营,增强企业的社会竞争力。
2) 技术可行性:
企业有此系统开发的软硬件和网络资源,操作系统为Windows系列,技术已经比较成熟,系统数据库为SQL Server数据库提供更加强大的数据管理,在技术完全可行。此系统能满足企业未来的需要,并且可以扩展,能应付企业未来的业务量的增长。
3) 经济可行性:
进行初步调查和相关资料的搜集大概一周,总工作量90天左右,包括资料整理,资料汇总、编写文档等,研究分析多个类似系统,吸收其优点,编写需求分析,然后进行系统分析,系统设计和开发。由于本次系统开发是毕业设计,由我和一位搭档合作,基本上没有花费。
4) 进度可行性:
通过我们的指导老师给我们订的时间安排表,通过指定时间表2006年1月——2月上旬:进行文献综述、外文资料和相关资料的准备;2006年3月中旬——4月上旬:完成外文翻译、文献综述,搭建系统框架和看一些相关的系统代码;2006年4月上旬——4月下旬:正式进入系统开发阶段,并初步完成;2006年5月上、中旬:调试系统并最终完成。由于老师的及时提醒及细心指导,我们最终在指定时间内完成任务。
5.1. 2 系统需求分析
为药房开发一个管理信息系统,使医药行业也更加现代化。其主要目的是为了给企业提供一个良好的业务流程,节省时间,更好的为病人服务,也能使企业的经营利润提高。下面就我所做的销售、入库及系统设置等部分进行需求分析:
输入需求:销售单输入、入库单输入、操作员添加修改输出等。
输出需求:销售日报表、月报表、客户销售报表的打印输出等。
性能需求:能够根据输入的信息从库存表中取出存在的药品进行销售,系统用户登录信息等自动添加信息并保存。
功能需求:我做的主要是销售、入库、库存管理和操作员设置等模块,需要实现以下基本功能:
1) 日常业务
药品销售:主要完成药品从库存表中批量销售、欠款记账的功能,并把销售详细信息保存到销售详细表中。(自动生成销售单据号、销售日期,自动统计销售品种、销售数量、销售金额)。
销售退单:主要完成商品的销售退货功能。(自动生成销售退货单据号、销售退单日期,自动统计退货品种、退货数量、退货金额)。
药品入库:主要完成将所采购药品的信息批量保存到入库表和库存表中。(自动生成入库单据号、入库日期,自动统计入库品种、入库数量、入库金额)。
入库退单:主要完成商品的入库退货功能。(自动生成入库退单票号、入库退单日期,自动统计退货品种、退货数量、退货金额)。
2) 库存管理
仓储式药房管理系统设计与开发
库存查询:主要完成库存药品信息的查询与汇总(如选择字段可查询库存药品信息、可模糊查询)。
库存盘点:主要实现盘点库存药品信息(如哪些药品需要及时进货、哪些药品保质期快到期需及时销出等)。
价格管理:主要实现查询药品信息及完成库存商品的进价、库存数量的修改(变价功能),统计库存品种、库存数量、库存金额等。
1) 报表管理
销售日报表:完成当日或某日药品销售单据、销售金额的查看。
销售月报表:完成当月或某月药品销售单据、销售金额的查看。
客户销售报表:统计客户某段时间或某种药品的销售数量和销售金额。
药品排行:包括药品销售和药品入库排行,每个又可按年、月、日、全部来排行,并以图表形式显示出来。
2) 系统设置
操作员管理:实现添加操作员、修改操作员、删除操作员等功能。
密码设置:主要实现完成操作员密码的修改、保存。
5.1. 3 系统的业务流程
医药企业中客户和供应商是平行和交叉同时进行的,库存是销售和入库的汇集点。它的业务流程图如图5.1所示。
购药
付款
收到药品客户
开票
提药
仓库
药品采购计划
审核
药品入库
仓库医药企业
采购供应商
图5.1 仓储式医药管理系统主要业务流程图
5.2 系统功能分析和设计
5.2. 1系统功能模块结构图
仓储式医药系统功能模块结构图如图5.2所示:
系统登录界面
仓储式医药管理系统
日常业务
库存管理
查询统计
报表管理
欠款管理
药品销售
药品入库
销售退单
入库退单
销售日报表
库存查询
库存盘点
价格管理
销售查询
入库查询
密码设置
操作员管理
销售退货查询
入口退货查询
应收款管理
收款查询
销售月报表
基本信息管理
系统设置
退出
客户销售报表
药品信息管理
客户管理
供应商管理
警戒预告(系统级)
系统级
普通级
药品排行
图5.2系统功能模块结构图
5.2. 2 系统流程图
仓储式医药管理系统流程图如图5.3所示:
供应商
退还返厂
入库作业
入库信息
入库查询
库存盘点
库存信息
客户退货
销售作业
销售信息
客户
销售查询
库存查询
价格管理
图5.3仓储式医药管理系统流程
5.2. 3 DFD图
1) 仓储式药房管理系统上下文图如图5.4所示:
图5.4上下文图
2) 仓储式药房管理系统0号图如图5.5所示:
图5.5 0号图
5.2. 4数据字典
对数据流编写文档:
1) 销售单:
定义:销售单=销售单据号(nvarchar)+销售日期(datatime)+客户名称(nvarchar)+经手人(nvarchar)+药品编号(int)+药品名称(nvarchar)+数量(real)+零售价(float)+金额(float)+折扣(int)+税率(real)+支付类型[支票|现金]+币种[人民币|美元|日元|欧元]+应付(float)+实付(float)
描述:记录顾客购买药品的详细清单。
源:客户(通过销售管理系统);
目的:销售员。
2) 入库单:
定义:入库单=入库单据号(nvarchar)+入库日期(datatime)+供应商名称(nvarchar)+经手人(nvarchar)+药品编号(int)+药品名称(nvarchar)+数量(real)+进货价(real)+金额(float)+折扣(int)+税率(real)+支付类型[支票|现金]+币种[人民币|美元|日元|欧元]+应付(float)+实付(float)
描述:记录药品入库的详细清单。
源:仓库管理员;
目的:入库管理系统。
3) 销售退货单:
定义:销售退货单=销售单据号(nvarchar)+退货日期(datatime)+客户名称(nvarchar)+经手人(nvarchar)+药品编号(int)+药品名称(nvarchar)+数量(real)+零售价(real)+金额(float)
描述:记录顾客购买药品后退货的详细清单。
源:客户(通过销售退货管理系统);
目的:销售员。
4) 入库退货单:
定义:入库退货单=入库单据号(nvarchar)+退货日期(datatime)+供应商名称(nvarchar)+经手人(nvarchar)+药品编号(int)+药品名称(nvarchar)+数量(real)+进货价(real)+金额(float)
描述:记录药品入库后退货的详细清单。
源:仓库管理员;
目的:供应商(通过入库管理系统)。
5) 库存信息:
定义:药品编号(int)+药品名称(nvarchar)+单位(nvarchar)+规格(nvarchar)+产地(nvarchar)+批号(nvarchar)+有效期至(nvarchar)+库存数量(real)+进货价(real)+批发价(float)+零售价(float)
描述:记录库存中药品的基本信息。
源:库存管理系统;
目的:库存信息存储。
6) 操作员信息:
定义:操作员=操作员编号(int)+员工姓名(nvarchar)+职责(nvarchar)+是否在工作[1|0]
描述:记录企业员工的信息及工作状态。
源:操作员设置系统(经过操作员信息数据储存器);
目的:系统管理员(通过雇操作员设置系统修改操作员信息)。
7) 系统用户信息:
定义:用户=用户名(nvarchar)+密码(nvarchar)+权限[3|2|1]+登录时间(datatime)
描述:可以用此系统的用户及权限。
源:系统管理员;
目的:系统管理系统。
对实体编写文档:
1) 客户:
输入流:购买药品信息、退款信息;
输出流:付款信息、销售退货单。
2) 供应商:
输入流:付款信息、库存退货单;
输出流:购买药品信息、退款信息。
3) 系统管理员:
输入流:添加删除用户信息;
输出流:添加删除用户信息。
4) 销售员:
输入流:销售单;
输出流:销售单确认。
5) 仓库管理员:
输入流:入库退单;
输出流:入库单。
对数据存储编写文档:
1) 销售信息存储:
描述:存储客户信息及销售详细清单以便日后方便结账。
仓储式药房管理系统设计与开发
输入流:销售信息;
输出流:销售信息。
1) 销售退货信息存储:
描述:存储客户退货详细信息以便日后方便结账。
输入流:退货单;
输出流:退货单。
2) 库存信息存储:
描述:存储供应商信息、库存中药品的基本信息及入库详细清单。
输入流:库存信息;
输出流:库存信息。
3) 库存退货信息存储:
描述:存储药品退货详细信息以便日后方便结账。
输入流:库存退货单;
输出流:库存退货单。
4) 系统用户信息存储:
描述:存储系统用户基本信息及出勤情况以便以后清算工资处理。
输入流:添加、删除用户信息;
输出流:添加、删除用户信息。
对过程编写文档:
1) 销售管理:
输入流:付款信息、销售退货单、库存信息、销售信息、销售退货单、确认、系统用户信息;
输出流:购买药品信息、退款单、销售单、销售信息、库存查询。
2) 销售退货管理:
输入流:销售信息、退货信息、系统用户信息;
输出流:退货单。
3) 库存管理:
输入流:购买药品信息、退款信息、入库单、库存盘点、库存查询、库存退货单、库存信息、系统用户信息;
输出流:付款信息、库存退货单、库存信息。
4) 入库退货管理:
输入流:库存退货单、系统用户信息;
输出流:库存退货单。
5) 系统管理:
输入流:添加、删除用户信息、系统用户信息;
输出流:添加、删除用户信息、系统用户信息。
5.3 系统数据库分析与设计
5.3. 1 E-R图
仓储式药房管理系统E-R图如图5.6 所示:
图5.6 E-R图
5.3. 2数据库表结构
权限信息表(操作员编号,操作员姓名,员工级别,密码,权限)
销售信息详细表(药品编号,药品名称,单位,规格,产地,批号,数量,零售价,金额,客户编号,客户名称,销售日期,销售单据号)
销售信息明细表(日期,时间,摘要,数量,单位,金额小计,欠款记账,收款合计,累计余额,客户编号,客户名称,销售单据号)
销售退单表(药品编号,药品名称,单位,规格,产地,批号,数量,进价,金额,备注,客户名称,日期,经手人,销售单据号)
入库信息详细表(药品编号,药品名称,单位,规格,产地,有效期至,批号,数量,进货价,批发价,零售价,金额,供应商编号,供应商名称,进货日期,进货单据号)
入库信息明细表(日期,时间,摘要,数量,单位,金额小计,欠款记账,收款合计,累计余额,供应商编号,供应商名称,进货单据号)
入库退单表(药品编号,药品名称,单位,规格,产地,批号,数量,进价,金额,备注,供应商名称,日期,经手人,进货单据号)
库存信息表(药品编号,药品名称,单位,规格,产地,批号,有效期至,库存数量,进货价,批发价,零售价)
5.3. 3 数据库表间关系
数据库表间关系如图5.7 所示:
图5.7 数据库表间关系
5.4 系统界面分析与设计
5.4. 1 系统界面设计原则
系统界面设计总原则:
1) 界面清晰明了,控件的大小与摆放位置一致。
2) 操作简单能够容易的从一个功能跳到另一个功能。
3) 系统界面友好美观,系统维护方便。
4) 尽量少的输入数据,提高操作员的操作速度。
5) 实现多点操作的信息共享,相互之间信息传递准确、快捷、顺畅。
6) 方便退出。
5.4. 2 系统界面设计
1) 登录窗体:需要输入用户名、密码,系统根据权限进入不同的主界面。
登录界面如图5.8 所示:
图5.8 登录界面
2) MDI主界面设计:在MDI窗体中允许显示多个窗体,所有的MDI子窗体都可以同时显示在主窗体中,主窗体为这些子窗体提供工作空间,这对于同时处理药品入库单据和药品销售单据来说是非常有用的,如图5.9所示。
图5.9 MDI主界面
3) 药品销售窗体: 程序启动后,选择:“日常业务”菜单下的“药品销售”项,将进入药品销售模块。主要实现以下功能:
u 完成药品销售的功能。
u 自动生成销售单据号、销售日期;统计药品销售品种、销售数量、销售金额。
u 在“药品名称”栏输入药品名称或简称或按Enter键,即可智能检索符合条件的药品信息,以供销售员选择。
药品销售界面如图5.10 所示:
图5.10 药品销售界面
4) 销售退货窗体:程序启动后,选择:“日常业务”菜单下的“销售退货”项,将进入药品销售退货模块。主要实现以下功能:
u 完成药品的销售退货功能。
u 输入销售单据号和药品名称检索到符合条件的药品信息可退货。
销售退货界面如图5.11 所示:
图5.11 销售退货界面
5) 库存查询界面:库存查询包括系统级和普通级,仓库管理员和系统管理员可进入系统级,允许删除库存表中的记录;销售员可进入普通级,不允许删除库存表中的记录,且只显示零售价格。程序启动后,选择:“库存管理”菜单将进入库存查询模块。
库存查询界面如图5.12 所示:
图5.12 库存查询界面
6) 药品排行界面:程序启动后,选择:“报表管理”菜单下的“药品排行”项,将进入药品排行模块。主要实现按药品销售和药品库存的数量以各种图形形式从大到小显示出来。
药品排行界面如图5.13所示:
图5.13 药品排行界面
7) 警戒预告界面:当以系统管理员的身份进入时,首先进入警戒预告界面,告诉管理员那些药品库存量不足、哪些快要过期,以备及时处理。
警戒预告界面如图5.14 所示:
图5.14 警戒预告界面
8) 操作员设置窗体:程序启动后,选择:“系统设置”菜单下的“操作员设置”项,将进入操作员设置模块。主要实现以下功能:
u 点击添加按钮,自动生成操作员编号,输入密码、选择级别,可添加操作员。
u 选择操作员可删除此已存在的操作员。
操作员设置界面如图5.15 所示:
图5.15操作员设置界面
9) 密码设置界面:程序启动后,选择:“系统设置”菜单下的“密码设置”项,将进入密码设置模块。主要实现完成操作员密码的修改、保存。
密码设置界面如图5.16所示:
图5.16密码设置界面
其余的窗体如药品入库、入库退货等窗体与药品销售、销售退货等类似,此处不再介绍。
5.4. 3 输出分析设计
输出设计:输出销售日报表、月报表、年报表、客户销售报表等。销售报表如图5.17所示:
图5.17销售报表
5.4. 4 输入分析设计
输入数据:销售单输入(客户名称,经手人,药品名称,收款金额),销售退货单输入(销售单据号,药品名称),入库单输入(供应商名称,经手人,药品名称,付款金额),入库退货单输入(入库单据号,药品名称),员工出勤输入(ID,员工ID,开始工作时间,结束作时间),系统用户登录输入(用户名,密码,权限,登录时间)。
仓储式药房管理系统设计与开发
第六章 小 结
6.1 系统维护
系统功能实现后,仍然存在很多问题需要经过大量的测试才能发现并改进。一般采用功能测试与验收测试。功能测试是自己根据用户的要求进行测试,测试过程尽量发现并改正错误。验收测试是让客户或其它人员根据自己对系统功能的理解进行测试,从而查找一些小的或者想不到的错误。
软件维护的关键是通过各种必备的维护活动使系统持久的满足客户的要求。通常有四类维护活动:改正性维护,即诊断和改正在使用过程中发现的软件错误;适应性维护,即修改软件以适应环境的变化;完善性维护,即根据用户的要求改进或扩充软件,使它更完善;预防性维护,即修改软件为将来维护活动预先做准备,软件数据库设计软件开发过程中的一个重要过程。
我们在系统完成后主要进行了功能测试,发现了不少问题,并进行了改正。在功能测试的时候,一些错误是很明显就可以发现的,有些错误则比较隐藏。我们在每个小模块做好的时候,都是先调试,看是否成功,若有错误,根据系统错误进行改正。可以通过设置断点、逐句调试、逐过程调试,一步一步的测下来。但由于时间和其它一些原因,系统还可能存在一些我们未发现的错误。
6.2 仍存在的问题
由于时间和我们的水平有限,本系统仍然存在一些未解决的问题:
1) 不同厂家生产的同一药品或有效期不同的药品无法区分入库,只实现简单的数量相加。
2) 复杂的人事管理未实现,只实现简单的操作员添加、删除、权限设置、密码修改等。
3) 供应商欠款管理未实现,只实现客户欠款管理。
4) 编程技术有待提高,使各个操作更灵活,方便。
6.3 展望
本文在详细分析了现阶段医药行业的发展现状的基础上,参考了国内外仓储式药房管理信息系统最新发展和研究成果,结合了药房特殊性和医药企业降低总成本的要求,给出了 “仓储式药房管理系统”项目的总体设计方案、功能介绍以及实现方法。
系统的用户界面友好,功能比较全面,使用方便,易用性强。但由于本文是一篇本科毕业论文,且由于时间仓促,所以对关于系统建设的部分可能考虑不周,系统中也存在很多不完善、不详尽之处,希望今后在此基础上作更深入的研究,以使本系统能服务于更多的小型药房。
6.4 小结
毕业设计即将结束,这当中我做了很多,也学了很多。回顾整个毕业设计的过程,感触颇深。虽然我们做的系统没有应用先进的技术和手段,但我始终记得我们的指导老师郁晓红老师说过的话,本科毕业生主要看你完整的独立的做一件事的能力,并非要求你一定要有多少创新,认认真真地做完一件事才是最重要的。在毕业设置前,我一直认为信息管理系统的开发最重要的是程序开发,通过这次的设计,我才明白,事实并非如此。需求分析才是最重要的。当你把整个详细的需求分析写好,就等于你完成了三分之二的系统设计。需求分析是信息管理系统开发的灵魂,一个软件开发成功与否常常在于它的需求分析。
为此,我花了大量的时间在需求分析上。通过网上收集各种有关此系统的资料,看了很多相关的书,比较各个系统的优缺点,尽量的撇弃缺点,综合各个系统的优点,定出功能模块,画出流程图,理清数据结构,然后根据用户的需要,形成了此系统的结构方案。这一过程用去了大约开发整个系统一半的时间,在此过程中,我还学会了使用Visio和Power Designer等工具。
我用的开发工具是VB 6.0 + SQL Server 2000,采用此方法的原因是因为我比较熟悉VB,且VB有这个能力完成此系统的设计,本人对VB 6.0 + SQL Server 2000模式比较了解。此过程中,我接触了很多VB的中高级编程技术,学会了很多有关编程和数据库的知识。在整个过程中,我遇到了很多困难,也学到了很多知识,感觉自己比原来更进了一层。
这学期,我在毕业设计上花了大量的时间,在开发设计的过程中,我经历了对软件开发的需求分析,数据库设计,到功能的具体实现的过程。这对我以后在新的信息管理系统开发中将有很大的帮助,也积累了很多经验,在我以后步入工作都有极大的帮助。在程序的总体设计、编程技巧方法上有了很大的提高。经过这次毕业设计,我的系统设计能力又向上升了一级。
致 谢
感谢郁老师在百忙之中抽空给予我们细心的指导和帮助,使得我们能在指定的时间里较好的完成系统的设计。同时还要感谢我的搭档王洁媛同学,因为你的热情和投入才使我们能够顺利地完成任务。还有林、郎、叶、王等我的好朋友帮我寻找了一些相关的资料,在此一并表示感谢。
【参考文献】
[1] 黄梯云. 管理信息系统[M]. 高等教育出版社, 1999.
[2] 甘仞初. 信息系统开发[M]. 经济科学出版社, 1996.
[3] 王汝涌. 管理信息系统[M]. 中国财经经济, 2001.7.
[4] 黄文劭, 杨宗璟. Visual Basic.Net 2003实践进销存系统[M]. 中国铁道出版社, 2004.11.
[5] 曹衍龙, 四维科技. Visual Basic系统开发实例精粹[M]. 人民邮电出版社, 2005.8.
[6] 段兴, 吴德胜, 齐晓亮, 肖仁华. Visual Basic 6.0数据库实用程序设计100例[M]. 人民邮电出版社, 2002.10.
[7] F. B. Vernadat.Enterprise Modeling and Integration (EMI): Current Status and Research Perspectives [J]. Annual Reviews in Control, 2002(26): 216-222.
[8] K.Kosanke, J. G. Nell. Standardization in ISO for enterprise engineering and integration [J]. Computers in Industry, 1999(40): 311-319.
[9] H. S. Gill. The Case for Enterprise Business Model Management [J]. DM Review, December 2001(22): 187-193.
[10] 张巨俭, 甘仞初. 管理信息系统的发展方向及实现技术[J]. 计算机应用研究, 2003(1) : 21-23.
[11] 韩燕, 李随成. 生产方式与管理信息系统发展[J]. 成组技术与生产现代化, 2001(3) : 87-91.
[12] 王晟. Visual Basic.Net 数据库开发经典案例解析[M]. 清华大学出版社, 2005.3.
[13] 罗朝盛. Visual Basic 6.0 程序设计教程[M]. 人民邮电出版社, 2002.9.
[14] 尚北城, 方丽莎, 庞云丽, 等1“军卫一号”门诊药房管理子系统呆滞药品相关问题的讨论[J]. 军队医药, 2001, 11(1): 22.
[15] 尚北城, 唐冰, 刘江, 段慧琼, 何献花. 计算机药房管理系统中积压和呆滞药品分析及处理方法[J]. 药学实践杂志, 2001, 19(6): 371-372.
[16] 陈勇, 蔡淑琴. 管理信息系统的发展动因及趋势研究[J].商业研究, 2005, 322(14): 4-6.
[17] 杜梅雅,郑文辉.仓储式销售特点及其在我国的发展前景[J].商业研究, 1999, 208(8): 58-59.
[18] 尚北城, 韦丽佳, 方丽莎. “军卫一号”门诊药房管理子系统进行药品建账时药品准备值高限量和低限量确定的意义和方法[J]. 军队医药, 2000, 10(4): 4.
[19] W illiam J. Stevenson. Production Operations Management. Sixth Edition. TheMcGraw-H ill Company [J], 1999, 322-345.
[20] 萨师煊, 王珊. 数据库系统概论(第三版)[M]. 高等教育出版社, 2000.
1) 文本框Text与MSFlexGrid控件同步代码:
Private Sub msgSell_EnterCell() '确定txtInput在msgSell表中的位置
Dim x, Y, P As String
If msgSell.CellWidth <= 0 Or msgSell.CellHeight <= 0 Then Exit Sub
x = msgSell.TextMatrix(msgSell.FixedRows, msgSell.Col)
Y = msgSell.TextMatrix(msgSell.Row, 0)
If Y <> "" Then
If msgSell.Col - msgSell.LeftCol <= 3 Then
msgSell.LeftCol = msgSell.LeftCol + 1
End If
If msgSell.CellWidth > 0 And msgSell.CellHeight > 0 Then
txtInput.Width = msgSell.CellWidth
txtInput.Height = msgSell.CellHeight
txtInput.Left = msgSell.CellLeft + msgSell.Left
txtInput.Top = msgSell.CellTop + msgSell.Top
End If
x = msgSell.TextMatrix(msgSell.FixedRows, msgSell.Col)
Y = msgSell.TextMatrix(msgSell.Row, 0)
P = msgSell.TextMatrix(msgSell.Row, msgSell.Col)
txtInput.Text = msgSell.Text
txtInput.SelStart = 0
txtInput.SelLength = Len(txtInput.Text)
End If
End Sub
2) 采用Datareport打印输出代码:
Private Sub Command2_Click()
On Error GoTo errhandler:
Set DataEnvironment1 = New DataEnvironment1
DataEnvironment1.rsCommand4.Open "select * from tb_sell_main where 日期='" + Str(DTPicker1.Value) + "' order by 销售单据号"
If DataEnvironment1.rsCommand4.RecordCount > 0 Then
DataReport4.Show
Else
MsgBox "没有可以打印的信息!"
DataEnvironment1.rsCommand4.Close
End If
Exit Sub
errhandler:
MsgBox "error: " & err.Description & "", , "错误"
Resume Next
End Sub
3) 权限不同登录的界面不同的代码:
Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)
Select Case Button.Key
Case Is = "药品销售"
If ypxs.Enabled = True Then main_rcyw_sell.Show
Case Is = "药品入库"
If Yprk.Enabled = True Then main_rcyw_warehouse.Show
Case Is = "销售退货"
main_rcyw_sellth.Show
Case Is = "入库退货"
main_rcyw_stocked.Show
Case Is = "库存查询"
If kccxx.Enabled = True Then main_kcgl_stockfindx.Show
Case Is = "库存盘点"
If Kcpd.Enabled = True Then main_kcgl_stockpd.Show
Case Is = "价格管理"
main_kcgl_price.Show
Case Is = "销售日报表"
If Xsrbb.Enabled = True Then main_tjbb_sellday.Show
Case Is = "销售月报表"
main_tjbb_sellmonth.Show
Case Is = "客户销售报表"
main_tjbb_client.Show
Case Is = "应收款管理"
If Qkgl.
Case Is = "收款查询"
main_ysyf_chargefind.Show
Case Is = "销售查询"
If Xscx.Enabled = True Then main_cxtj_sellfind.Show
Case Is = "入库查询"
main_cxth_warehousefind.Show
Case Is = "销售退货查询"
main_cxtj_sellthfind.Show
Case Is = "入库退货查询"
main_cxtj_stockedfind.Show
Case Is = "药品信息管理"
main_jbxx_medicine.Show
Case Is = "客户管理"
If Jbxx.Enabled = True Then main_jbxx_client.Show
Case Is = "供应商管理"
main_jbxx_provide.Show
Case Is = "载操作员管理"
main_xtsz_czysz.Show
Case Is = "密码设置"
main_xtsz_klsz.Show
Case Is = "退出系统"
Unload Me
frmLgoin.Show
End Select
End Sub
4) 药品排行代码:
Private Sub Command1_Click()
On Error GoTo errhandler:
Set rs6 = New ADODB.Recordset
If Option1.Value = True Then
rs6.Open "select 药品名称 as '药品名称',sum(数量) as '药品数量' from tb_sell_detailed group by all 药品名称 order by sum(数量) desc ", conn, adOpenStatic, adLockOptimistic
ElseIf Option2.Value = True Then
rs6.Open "select 药品名称 as '药品名称',sum(数量) as '药品数量' from tb_sell_detailed where datediff(day,销售日期,'" & Date$ & "') <=365 group by all 药品名称 order by sum(数量) desc ", conn, adOpenStatic, adLockOptimistic
ElseIf Option3.Value = True Then
rs6.Open "select top 10 药品名称 as '药品名称',sum(数量) as '药品数量' from tb_sell_detailed where datediff(day,销售日期,'" & Date$ & "') <=30 group by all 药品名称 order by sum(数量) desc ", conn, adOpenStatic, adLockOptimistic
ElseIf Option4.Value = True Then
rs6.Open "select top 10 药品名称 as '药品名称',sum(数量) as '药品数量' from tb_sell_detailed where datediff(day,销售日期,'" & Date$ & "') <=7 group by all 药品名称 order by sum(数量) desc ", conn, adOpenStatic, adLockOptimistic
ElseIf Option5.Value = True Then
rs6.Open "select 药品名称 as '药品名称',sum(数量) as '药品数量' from tb_warehouse_detailed group by all 药品名称 order by sum(数量) desc ", conn, adOpenStatic, adLockOptimistic
ElseIf Option6.Value = True Then
rs6.Open "select 药品名称 as '药品名称',sum(数量) as '药品数量' from tb_warehouse_detailed where datediff(day,进货日期,'" & Date$ & "') <=365 group by all 药品名
ElseIf Option7.Value = True Then
rs6.Open "select top 10 药品名称 as '药品名称',sum(数量) as '药品数量' from tb_warehouse_detailed where datediff(day,进货日期,'" & Date$ & "') <=30 group by all 药品名称 order by sum(数量) desc ", conn, adOpenStatic, adLockOptimistic
ElseIf Option8.Value = True Then
rs6.Open "select top 10 药品名称 as '药品名称',sum(数量) as '药品数量' from tb_warehouse_detailed where datediff(day,进货日期,'" & Date$ & "') <=7 group by all 药品名称 order by sum(数量) desc ", conn, adOpenStatic, adLockOptimistic
End If
rs6.Requery
Set MSHFlexGrid1.DataSource = rs6
Dim x(1 To 25) As Variant
For i = 1 To rs6.RecordCount
x(i) = MSHFlexGrid1.TextMatrix(i, 1)
Debug.Print MSHFlexGrid1.TextMatrix(i, 1)
Next i
MSChart1 = x
For i = 1 To rs6.RecordCount
MSChart1.Column = i
MSChart1.ColumnLabel = "第" & i & "名" & ": " & MSHFlexGrid1.TextMatrix(i, 0)
Next i
Exit Sub
errhandler:
MsgBox "error: " & err.Description & "", , "错误"
Resume Next
End Sub