1、附录B 医务收费系统医务收费系统随着我国医疗卫生体制改革的深化,计算机技术与应用的发展,计算机信息化管理已成为各医院提高生存力,加强管理,增加效益的重要保障,作为一般高校的后勤医务室亦不例外。高校医务收费系统的主要目标是支持医务室的日常收入账务处理业务,减轻事务处理人员的劳动强度,合理地记录和管理这些账务信息,从而提高整个医务室的工作效率和工作质量。本章以某高校医务收费系统为实例,详细讲述整个医务收费系统的实施过程,需求分析、系统框架、系统建模、数据库建模、程序实现、系统维护等方面展开分析。A.1 系统分析需求分析是成功实施一个管理信息系统的基础,只有弄清楚客户的需求,才能真正开发出满足客户需
2、求的管理信息系统,也才能够让整个系统真正发挥其相应的作用。该环节是系统开发过程的最初阶段,围绕整个开发的指导思想和开发目标,对校医务室的整个记账收费过程和需求进行总的分析和概括。接下来就针对某高校医务收费系统的总体需求做分析。可能有些医院在某些管理方面有其特殊的需求,读者在实际开发过程中,可以在本系统需求分析中继续完善。A.1.1 系统总体功能需求在经过对学校医院正常运行的流程进行详细了解与分析后,一个功能完善的医务收费系统必须包括以下几个子系统:(1)操作人员管理系统。这个管理系统包括用户的注册、用户密码的修改、用户权限的设置、更换操作人员4个功能模块组成。操作人员管理系统主要是用来管理对该
3、软件进行操作的工作人员,同时系统所提供的用户权限设置能够提高系统的安全性,并对不同性质的人员赋予不同的权限,满足了不同人员对该软件的需求。(2)基本人员管理系统。这个管理系统包括编辑查询人员、批处理人员信息、学生数据导入、医生信息维护和医药费率调整5个功能模块。基本人员管理系统用来对基本人员数据、医生数据进行统一集中的管理,为其他几个管理系统提供基本信息,以提高工作效率。(3)收费管理系统。这个管理系统包括药费数据输入、打印日报表、打印日明细表、打印月报表、打印月明细报表、打印年报表、报表查询、帐单查询8个功能模块。收费管理系统主要为系统输入数据,并根据所输入的数据进行汇总,统计打印各种报表。
4、同时该子系统还提供报表和账单的查询,用户可以很方便的对各项数据和报表进行查询。(4)系统维护。这个管理信息系统包括数据备份、数据还原、计算器、导出每月数据4个功能模块。系统设置中的功能模块用来补充医务收费系统的一些辅助功能。综上所述,系统总体的功能需求可用图A-1简要表示。系统维护收费管理基本人员管理系统操作人员管理系统医务收费系统图A-1 系统总体功能需求框图A.1.2 操作人员管理系统操作人员管理系统包括的具体功能模块可以用图A-2说明。操作人员管理系统包括权限管理、更换用户、修改密码和修改用户等功能。1权限管理权限管理功能图如图A-3所示。权限管理修改权限删除用户增加用户操作人员管理修改
5、用户修改密码权限管理更换用户 图A-2 操作人员管理系统包括的功能模块需求框图 图A-3 权限管理的功能框图此功能主要是面向管理人员对操作人员的操作进行管理,满足不同层次的人员对系统不同的需求,使得系统的敏感数据不公开,同时实现了系统的安全性。在进入系统的时候,系统根据操作人员的权限自动判断操作人员是否可以对该项功能进行操作等。(1)增加用户的需求分析,如图A-4所示。O:生成用户注册信息详细列表F:产生用户注册记录更新到数据库I:输入用户名、密码等详细信息图A-4 增加用户的需求分析(2)删除用户需求分析,如图A-5所示。I:选择将删除的用户名称F:更新用户信息表到数据库O:生成用户注册详细
6、列表图A-5 删除用户需求分析(3)更换用户。由于该软件的操作人员并非惟一,当另一个操作员在同一台机器上需对系统进行操作时,就需要该操作人员重新登陆,获得该操作人员的权限后,再对系统进行操作。这样可以方便多用户对系统进行操作。(4)修改密码用户名,如图A-6所示。I:输入用户旧、新密码信息F:更新用户新密码到数据库O:生成用户注册信息详细列表图A-6 修改密码功能这两项功能可以集成到权限管理中,满足用户对用户名和密码的修改。不定期的对系统密码进行修改,能够减少密码的泄露,提高系统的安全性。A.1.3 基本人员管理系统这个管理系统包括的具体功能模块需求可以用图A-7说明。医药费率调整医生信息维护
7、学生数据导入批处理人员信息编辑查询人员基本人员管理图A-7 基本人员管理系统包括的功能模块需求框图1编辑查询人员某学院校医院是内部对全校教职工、在校学生、退休人员和统筹人员进行门诊治疗的机构。随着学校规模的不断发展,公费医疗对象不断增加,为了合理的记录各类人员的门诊信息,准确地对进行公费医疗数据的复杂人员的信息进行处理,此模块即产生了。在管理信息系统中,代码是人与计算机的共同语言,是着人与计算机沟通的桥梁。采用代码,可以使数据表达式标准化,简化程序,加快输入,减少出错,提高处理速度。在本系统中,由于人员类型繁多,人数多的特点。人员代码采用8位代码表示。如99222024,第1位表示学生,其余表
8、示学生学号,具体形式如表A-1。表A-1 人员编码前两位代码表示人员类别备 注00教 工如果教工退休则转为退休人员TX退 休TC统 筹表示学院教职工子女9x学 生x表示在校生的入学年份2批处理人员信息伴随着国家政策的改变,公费对象的定额和补偿金都将发生改变,为了快速地对所有数据进行修改,本系统提供了批处理模块。同时该模块也提供了删除毕业生数据的功能,是集成了处理人员基本信息功能的模块。3学生数据导入由于高校扩招,每年学生人数在不断的上升,如果手工进行学生数据的输入,肯定很繁琐,同时效率也很低。而且目前的高校招生大多采才用网上招生,肯定有学生基本信息的数据库,通过该模块可以很好的利用这些数据,同
9、时减少了重复劳动和输入过程中所出现的错误。4医生信息维护对某高校校医院的医生数据进行增加、删除、修改等,以适应校医院医生数据的改变。同时医生信息的改变也会影响收费系统中数据的改变。5医药费率调整根据国家的政策,适当的对该公费医疗的费率进行修改和调整。该功能的变化会对数据的录入产生影响,因此该功能是数据输入的基础。B.1.4 收费管理系统这个管理系统包括的具体功能模块需求框图如图A-8所示。收费管理报表查询账单查询报表打印药费数据输入图A-8 收费管理系统包括的功能模块需求框图收费管理是该系统的核心内容,它负责数据的输入和输出,并对数据进行汇总、统计等操作,打印出符合需求的它总报表。同时该模块也
10、提供了查询功能,用户可以自由的查询每日报表和每月报表,清楚地掌握当日或当月校医院的经营情况。1药费数据输入药费数据输入模块完成病员看病时一些基本信息的登记,病员从医生处获得处方后,交由交费人员进行数据的输入。数据输入人员只需进行人员编号、医药费用的输入即可,其他的都由系统提供数据供操作人员进行选择。这样不但提高了工作效率,而且减少了输入过程中因人为导致的错误的发生。2报表打印管理报表打印管理的功能需求框图如图A-9所示。打印年明细表打印月明细表打印日明细表打印月报表打印日报表报表打印图B-9 报表打印管理的功能需求框图报表打印功能模块也是收费管理系统中的核心,该模块主要实现了日报表、日明细表、
11、月报表、月明细表和年明细表的打印功能。日报表和月报表分别是对每日数据和每月数据进行汇总、统计而生成的,日明细表、月明细表和年明细表则是分别对每日数据、每月数据和每年数据进行汇总而生成,它们并不对原始数据进行处理。3账单查询账单查询如图A-10所示。O:生成该月份相关数据F:选择查询的关键字段I:选择月份图A-10 账单查询功能为了方便管理人员,提高工作效率,系统提供了账单查询功能,用户可以按多种查询方式对数据库中的账单信息进行查询,比如:某月某病员的就诊情况、某月某医生的工作情况等。4报表查询报表查询功能如图A-11所示。O:显示用户查询的数据F:根据用户选择进行查询I:用户选择输入日期或月份
12、图A-11 报表查询功能该功能完成对日报表和月报表的任意查询,并得到类似于日报表和月报表格式的结果,能够让用户A.1.5 系统维护系统维护包括的具体功能模块需求框图如图A-12所示。导出每月数据系统计算器数据还原数据备份系统维护图A-12 系统维护包括的功能模块需求框图系统维护包括数据备份、数据还原、系统计算器和导出每月数据等功能模块,基本满足了系统运行时所需的功能。(1)数据恢复功能需求。该功能将数据库数据表备份成数据库文件,再进行二次备份将其备份到U盘或其他计算机上,便于在一些无法避免数据破坏的情况下通过数据恢复功能恢复数据,以减小损失。(2)数据恢复功能需求。该功能实现从备份数据库中将数
13、据导入到工作数据库中。(3)系统计算器功能需求。该功能实现打开操作系统提供计算器,用它可以进行一些简单的计费操作,方便用户进行计费操作。A.2 UML系统建模对于本例,主要使用UML中的用例图、时序图和协作图来进行系统分析,帮助开发人员了解系统功能与系统流程。A.2.1 UML用例视图描述首先确定医务收费系统中的角色。1角色(Actors)的确定在医务收费系统中,可以归纳出来的主要问题是:(1)病人要看病;(2)挂号操作员提供挂号服务; (3)医生提供病人看病服务;(4)收费操作员提供门诊病人划价收费服务,并将信息输入到系统;(5)取药员负责取药给病人;(6)住院登记操作员提供住院登记服务,并
14、将信息输入到系统;(7)系统维护员提供系统相关的维护服务。由于医生与病人打交道,给病人诊断病情、开药方等服务,并没有直接与系统发生交互,与系统的交互是通过划价收费操作员来进行的,因此可以将医生与划价收费操作员这两个对象用一个操作员的角色代替,即认为划价收费操作员在所有病人看病的过程中直接向病人提供服务,并根据服务业务流程对系统进行操作。这样不妨碍系统的功能实现。同样,取药操作员并没有直接和系统发生交互,可以不用一个单独的角色。从以上的分析中,可以创建以下角色:(1)病人;(2)挂号操作员;(3)收费操作员;(4)药品管理员;(5)系统维护员。在Rational Rose的Use Case Vi
15、ew中建立角色如图A-13所示。图A-13 在Use Case View中创建角色2创建用例(Use Cases)医院信息系统根据业务流程可以分为以下的几个用例:(1)病人挂号;(2)挂号服务;(3)病人看病;(4)病人交费取药;(5)病人按处方配药;(6)收费操作员划价扣费配药;(7)分发药品;(8)维护基本信息;(9)用户注册;(10)登录验证。在Rational Rose的Use Case View中创建用例(Use Cases)如图A-14所示。图A-14 在Use Case View中创建用例3创建角色(Actor)与用例(Use Case)关系图Actor和Use Case之间存在
16、的关联关系通常涉及到Actor和Use Case之间的通信关联关系。(1)病人的Use Cases关系图如图B-15所示。病人(from Actors)病人看病(from User Cases)病人交费取药(from User Cases)病人按处方配药(from User Cases)病人挂号(from User Cases)图A-15 病人的用例关系图(2)挂号操作员的Use Cases关系图如图A-16所示。挂号服务(from User Cases)挂号操作员(from Actors)图A-16 挂号操作员的用例关系图(3)收费操作员用例的Use Cases关系图如图A-17所示。收费操
17、作员划价扣费配药(from User Cases)收费操作员(from Actors)图A-17 收费操作员用例关系图(4)药品管理员的Use Cases关系图如图A-18所示。分发药品(from User Cases)退货(from User Cases)进货(from User Cases)药品管理员(from Actors)图A-18 药品管理员的用例关系图(5)系统维护员的Use Cases关系图如图A-19所示。维护基本信息(from User Cases)系统维护员(from Actors)用户注册(from User Cases)登录验证(from User Cases)图A-1
18、9 系统维护员的用例关系图A.2.2 UML时序与协作视图描述下面介绍收费系统中的时序图及协作图。(1)病人看病过程时序图如图B-20所示。输入药费信息收费发票和药品交医药费用会诊后医生开处方给病人病人看病返回给病人潆?挂号收费操作员划价收费取药模块医生诊断挂号模块病人 挂号操作人员图A-20 病人看病过程时序图(2)病人看病过程协作图如图A-21所示。医生会诊划价收费取药模块收费操作员8:收费发票7:输入药费挂号操作人员5:处方交费病人9:药品5:处方4:看病挂号模块3:挂号号码2:输入信息1:挂号图B-21 病人看病过程协作图A.2.3 数据库设计本系统采用SQL Server 2000作
19、为后台数据库,由于数据库表比较多,以下只列出了几个比较重要的数据表,详细的数据库建模请参看所附光盘的“F_MIS.sql”文件。(1)描述收费单信息的表。描述门诊收费单信息的表格一共分为5个,即收费表(feiyong)、收费日报表(feiyong_rpt)、医生表(doctor)、人员信息表(rmk)和类别表(leibie)。使用Powerdesigner定义这5个表的字段,以及每个表的主键等如图A-22所示。IDsmallir人员名称nvarchArealBrealCrealDrealleibie号码nvarchar8姓名nvarchar8性别nvarchar2工龄float15补偿金flo
20、at15定额float15RMKIDnvarcharDOCTOR NAMEnvarchardoctor记录号smallint编号nvarchar8姓名nvarchar10医药费money类别 nvarchar2医生 nvarchar2自负金money日期 smalldatetimfeiyongfeiyong_rpt记录号smallint编号nvarchar8姓名nvarchar10医药费money类别 nvarchar2医生 nvarchar2自负金money日期 smalldatetim图A-22 描述收费单信息的表(2)其他数据库表。其他数据库表包括:软件用户信息表User_load、编号
21、计数表Count等,这里就不一一列举了。本例使用的后端数据库是客户/服务器型数据库SQL Server 2000。单机版文件共享型数据库ACCESS可以跳过此配置。在SQL Server 2000的企业管理器中新建一个数据库,命名为YAOFEI,然后打开SQL Server 2000的查询分析器,输入数据库表、视图和存储过程的全部SQL语句后执行,有关数据库的后台工作就已经建立。以上的SQL语句已经保存为文件,也可以用查询分析器直接运行一下本例源程序目录下SQL目录里的F_MIS.sql文件来建立数据库,不需要在企业管理器新建数据库表。在本系统中由于报表是由功能强大的水晶报表所制作,所以需对O
22、DBC数据源进行设置,具体操作在第1章有详细的说明。创建的ODBC数据源名称为“YAOFEI”。A.3 系统实现A.3.1 系统设计概况本程序是一个较完整的应用程序,能够实现医务收费管理的相关功能。为了能够让读者了解本程序,首先列举出本程序包含的所有窗体和模块。具体程序窗体信息如下。mainform(程序的主窗体):程序的主窗体,方便用户进行各种功能操作。frmlogin(用户登录窗体):为了提高软件操作安全性,用户进入系统前,需要进行身份验证,用户通过此窗口输入个人信息用以验证身份,并从用户表中获得用户的操作权限,为权限管理提供服务。frmsq(用户授权、增加和删除窗体):该窗体将用户修改和
23、授权集成在一起,方便管理员增加用户后对该用户进行授权。frmqueryperson(人员基本信息的查询、修改窗体):该窗体主要实现对公费医疗对象的基本信息进行操作,包括增加、删除、修改等。frmdoctor(医务人员登记窗体):用于管理校医院各个科室下医务人员的情况,可以进行录入、修改、删除操作; frmlrsj(数据录入窗体):根据病人的处方进行数据输入,该窗体是整个系统的核心,能够执行数据的修改、查询、打印等功能。frmquerybook(查询报表窗体):该功能是为了更好地查询日报表和月报表,并方便管理层对实时数据的掌握。同时用户也可以方便的进行报表数据的查询。frmquerycheck(
24、查询帐单窗体):该窗体为了查询具体数据,统计某位医生某个月的会诊数据或是某位病员某个月的就诊情况,是对查询报表窗体的补充。frmdataback(数据备份、还原窗体):为了提高系统数据的安全性,可将数据备份到U盘或其他主机的硬盘上。如果遇到系统数据损坏的情况,利用该窗体对备份的数据进行还原操作,使系统能够正常运行。以上介绍的是程序的重要窗体,用户登陆窗体来进行更换用户的操作,这样大大减少了窗体的使用数量。还有一个重要部分即模块文件,如下。全局模块(Global.bas):主要是在数据库的连接、报表打印时所进行的数据操作,以及基本的通用函数的定义和实现、全局变量的定义等。数据备份(databac
25、k.bas):为frmdataback的实现提供服务,它提供了基本的API函数的声明和调用、变量的定义等。读者在阅读下面的具体程序以前,最好弄清楚每个窗体的大概功能,这对了解整个程序的开发实施是非常有益的,要弄清楚一个比较完整的商业系统是需要花一定时间的。接下来就是针对重要模块和代码进行的分析。在后面的具体程序实现中,由于篇幅的限制,并不一定对所有的代码都进行详细的分析,而是针对关键的模块和技术进行说名,其他代码都在本书的附赠光盘中。A.3.2 系统主界面实现本程序采用流行的界面设计技术,符合商业化软件设计的要求。采用菜单、工具栏、状态条相结合的方法,使用户能够在主界面上快速的进入自己想要的程
26、序模块,具体的程序运行主界面如图B-23所示。在图B-23中很容易看清楚整个程序的结构,用户也可以很方便的从菜单和工具栏各小项功能模块及工具栏很快的进入各个模块。图A-23 程序运行主界面窗体设计包括菜单栏设计、工具栏设计、状态条设计,下面就分别进行简单的说明。1菜单栏设计进入菜单编辑器,设计界面如图A-24所示。图 A-24 菜单编辑器某些菜单命令的右边标有组合键,称为该命令的快捷键,可以不打开菜单而直接按快捷键来执行此命令。为命令选项增加快捷键(Shortcut Key),可在菜单编辑器中的“快捷键(S)”列表框中为该命令项分配一个。列表中一个快捷键只能被分配一次,否则系统会拒绝接受。为了
27、让用户迅速地在菜单中找到要执行的命令项,有必要对菜单中相关的命令用分隔条(Separate Bar)进行分组例如文件菜单中,把有关打印输出的一组命令:“页面设置”、“打印预览”、“打印”等用分隔条醒目地进行分隔。这只要在需要进行分组的命令之间插入一个特殊的命令条,将该命令条的“标题”插入“”,而“名称”任意,因为程序中一般不会引用此命令的名称。2工具栏设计组合工具栏设计需要两个控件配合使用,一个是工具栏控件(Toolbar1),另一个是图像列表控件(ImageList1)。ImageList1控件用来保存各种图片,使其显示在工具栏中(具体的程序界面,读者朋友可以打开本书附赠光盘中的源代码查看)
28、。工具栏设计界面如图A-25所示。图A-25 工具栏的设计界面在工具条位置单击鼠标右键,在弹出的窗体中选择“按钮”来添加按钮,在样式中,选择“3-tbrSeparator”添加分隔条。在本例中创建5个按钮和4个分隔条。3状态条控件设计StatusBar 控件由若干个面板构成,主要用来显示应用程序的运行状态。它既可以节省界面空间又可包含丰富的信息。例如,显示数据库表的有关情况(记录总数,以及当前记录在数据库中的位置等),显示关于RichTextBox控件的文本和字体状态的信息,显示键盘的状态(如Caps Lock 或 Number Lock),显示当前日期或时间等。其设计界面如图A-26所示。图
29、A-26 状态条控件设计界面4核心代码分析主窗体的代码不是很复杂,主要是对各个功能的导航和显示状态条导航信息,具体有菜单点击处理程序、工具条快捷按钮处理程序、状态度显示处理程序。程序说明:主窗体代码;程序模块名称:mainform.frm;重要控件:Toolbar、状态栏StatusBar、图像列表Imagelist、CrystalReport控件。 (1)菜单处理代码。由于系统涉及到权限问题,因此每次进行菜单处理程序前,应该对该用户的权限进行检查,判断该用户是否具有该项操作的权利。其具体实现如下所示:作为检查操作员使用权限的函数,该函数通过截取user_load表中的ql_flag字段来判断
30、该操作员所具有的权限和使用范围ql_flag字段的设置Public Function check_qx(qx_flag As String, i As Integer) As BooleanDim temp As IntegerIf qx_flag Then temp = Mid(qx_flag, i, 1) If temp = 0 Then MsgBox 您无权限使用该功能!, vbOKOnly + vbExclamation, 注意了:) check_qx = False Else check_qx = True End IfElse MsgBox 未经管理员授权,您无权限使用所有功能!,
31、 vbOKOnly + vbExclamation, 注意了:) check_qx = FalseEnd IfEnd Function检查权限后,如果该用户拥有该项权限的话,则进入菜单处理程序:Private Sub sjlr_Click()调用函数判断是否拥有权限使用各种功能t = check_qx(czry_flag, 6)If t = True Then 如果用户拥有该权限,则进入菜单处理程序,否则出现警告信息。 mainform.StatusBar1.Panels(1).Text = 状态: 药费输入 frmlrsj.ShowEnd IfEnd Sub(2)工具栏处理代码。工具栏上的快
32、捷按钮用来打开医务收费系统软件中某个特定的窗体。通过工具栏,用户可以方便地直接打开经常使用的功能,工具栏的实现代码示例如下:Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)Select Case Button.Key 判断所按下的工具栏按钮的名称 Case query 如果是查询编辑人员 t = check_qx(czry_flag, 1)检查当前用户是否拥有操作权限 If t = True Then mainform.StatusBar1.Panels(1).Text = 状态: 查询编辑人员 frmqu
33、eryperson.Show 显示frmqueryperson窗体 End If Case input 如果是数据输入 t = check_qx(czry_flag, 6) 检查当前用户是否拥有操作权限 If t = True Then mainform.StatusBar1.Panels(1).Text = 状态: 药费输入 frmlrsj.Show 显示frmlrsj窗体 End If Case drdc 如果是每月数据导出 t = check_qx(czry_flag, 17)检查当前用户是否拥有操作权限 If t = True Then mainform.StatusBar1.Pane
34、ls(1).Text = 状态: 每月数据导出 frmimport.Show vbModal显示frmimport窗体 End If Case book 如果是查询报表 t = check_qx(czry_flag, 13) 检查当前用户是否拥有操作权限 If t = True Then mainform.StatusBar1.Panels(1).Text = 状态: 查询报表 frmquerybook.Show 显示frmquerybook窗体 End If Case exit 如果是退出 End 退出系统End SelectEnd Sub(3)状态栏处理代码。状态栏主要是为了提示用户所做的
35、操作,其代码分散在各个菜单项和工具栏按钮的程序处理事件中,示例如下:Private Sub sysjsq_Click() 单击系统计算器菜单项 mainform.StatusBar1.Panels(1).Text=状态:系统计算器显示状态:系统计算器 Shell calc.exe, vbNormalFocus 显示操作系统所带的计数器End sub以上介绍了主窗体的主要代码,在该窗体中,主要是对界面及程序导航进行设计,没有涉及到具体的数据库设计,在后面的窗体分析中主要是数据库的设计,以及其他数据库的设计。A.3.3 操作人员管理操作人员管理系统主要是用来管理对该软件进行操作的工作人员,同时系统
36、所提供的用户权限设置能够提高系统的安全性,并对不同性质的人员给予不同的权限,满足了不同人员对该软件的需求。为了方便集中管理数据库表和数据源,我们把数据库的连接放到Global.bas模块中,应用ADO接口技术直接和SQL Server 2000数据库服务器建立连接。具体实现代码如下:Public Sub condatabase() Set cn = New ADODB.Connection cn.Provider = sqloledb cn.Properties(Data Source).Value = SQLServerName 建立与SQLServer的连接 cn.Properties(I
37、nitial Catalog).Value = DataBaseName 数据库的名称 cn.Properties(Integrated Security).Value = SSPI cn.openEnd Sub1操作人员维护模块操作人员维护模块的运行界面如图A-27所示。图A-27 操作人员维护模块的运行界面界面设计主要是利用了树型控件来实现的,读者可以参考前面章节。程序说明:操作人员管理窗体代码;程序模块名称:frmsq;重要控件:TreeView、图像列表Imagelist等;相关数据库表:user_load。下面学习窗体的核心代码。该窗体主要实现增加用户、删除用户、对用户进行授权,主要
38、是面向管理人员对操作人员的操作进行管理,满足不同层次的人员对系统不同的需求。Private SubCommand3_Click () 删除操作人员的命令按钮显示对话框,是否删除操作人员t = MsgBox(你是否确定删除该操作员!, vbOKCancel, 确定吗?)If t = 1 Then 如果返回1,则进行删除操作 判断是否有记录,如果没有记录,则提示选择操作人员 If rsdel.BOF = True Or rsdel.EOF = True Then t = MsgBox(请选择操作员姓名!, vbOKOnly, 无记录) Else 否则进行删除,并显示成功删除操作人员对话框 rsde
39、l.Delete t = MsgBox(成功删除操作员姓名!, vbOKOnly, 成功) End If tvwdb.Nodes.Clear 清除TreeView中节点的内容 tvwdb.Sorted = True 设置sorted属性为真 Set mnode = tvwdb.Nodes.Add() mnode.Text = 操作员姓名节点显示“操作员姓名” mnode.Image = 2 设置节点的图表为imagelist1中的图2 Set rspsw = New ADODB.Recordset rspsw.openselect*from user_load,cn,adOpenStatic,
40、adLockPessimistic Do Until rspsw.EOF 用rspsw中的记录对treeview进行加载 Set mnode = tvwdb.Nodes.Add(1, tvwChild) 添加treeview的孩子 mnode.Text = rspsw.Fields(user_name) 使其文本为rspsw字段中的用户名 mnode.Image = 1 设置节点的图表为imagelist1中的图1 rspsw.MoveNext 记录往后移动一条 LoopElse Exit SubEnd If将用户数据库表中的用户名加载到treeview控件中Private SubPrivat
41、e Sub loadtreeview() tvwdb.Sorted = True 将treeview的排序设为真Set mnode = tvwdb.Nodes.Add() mnode.Text = 操作员姓名节点显示“操作员姓名” mnode.Image = 2 设置节点的图表为imagelist1中的图2If cn.State = 1 ThenElse Call condatabase 连接数据库End If Set rspsw = New ADODB.Recordset 打开rspsw记录集 rspsw.open select * from user_load, cn, adOpenSta
42、tic, adLockPessimistic Do Until rspsw.EOF 用rspsw中的记录对treeview进行加载 Set mnode = tvwdb.Nodes.Add(1, tvwChild) 添加treeview的孩子 mnode.Text = rspsw.Fields(user_name) 使其文本为rspsw字段中的用户名 mnode.Image = 1 设置节点的图表为imagelist1中的图1 rspsw.MoveNext 记录往后移动一条 LoopEnd SubPrivate Sub Form_Load() 窗体加载过程 Call loadtreeview 调
43、用loadtreeview过程End SubPrivate Sub tvwdb_NodeClick(ByVal Node As MSComctlLib.Node) 处理nodeclick事件If Node.Index = 1 Then 如果只有一个根节点,则退出程序 Exit SubEnd IfCall check_condatabase 检查是否连接数据库,如果连接了则放弃,否则连接If Node.Parent.Index = 1 Then 是根节点 nodename = Node.Text 将删除的变量赋值给nodename Set rsdel = New ADODB.Recordset 获得该节点的用户名的所有资料 rsdel.open select * from user_load where user_