资源描述
毕业设计中文摘要
移动电话客户信息管理系统
摘要: 移动电话客户信息管理系统是典型的信息管理系统(MIS),本系统可用于对移动电话客户信息的录入,查询,修改,浏览等,使用本系统可以使移动公司对客户信息的管理更加高效
经过分析,我们使用 Visual FoxPro6.0开发工具,利用其提供的各种面向对象的开发工具,尤其是数据窗口这一能方便而简洁操纵数据库的智能化对象,首先在短时间内建立系统应用原型,然后不断修正和改进,直到形成用户满意的可行系统。
关键词 客户信息管理系统,数据库设计,VFP6.0
26
毕业设计外文摘要
Title THE managerial system on Mobilephone of customer information
Abstract The system of managing cellophane file is a typical application of managing information system on Mobilephone(know as MIS).,this system can be used in selecting,looking through,adding and deleting Mobilephone customer’information.Using this system can promote the efficiency of managing information。
Visual Foxpro6.0 presented by Microsoft because of its objective tools in Win32.VFP offered a series of ActiveX operating a data-base. It can give you a short-cut to build up a prototype of system application. The prototype could be modified and developed till users are satisfied with it.
Keywords Customer information management system, Database design, VFP6.0
目 录
1 引言 5
2 系统概况 6
3 数据库设计 7
3.1数据库设计的重要性 7
3.2移动电话客户信息管理系统总体规划 7
3.3 需求分析 7
3.4 概念结构设计 10
3.5逻辑结构设计 12
4 程序的实现 15
4.1 创建本系统主程序 15
4.2 表单的建立 15
4.3 代码及界面 17
4.4 主菜单的设计 24
4.5 系统的实现及连编 26
4.6 设计小结 26
致谢 27
参考文献 28
1引言
移动通信是目前我国电信发展的主要热点。移动通信具有方便快捷的优势,它不受地域的限制,可以实现消费者的随地通话目的,同时,随着无线上网的技术逐渐被接受,我国移动电话用户保持了高速发展,用户数目不断增加,并且逐渐从高档消费品转变为普通消费品,移动通信投资比例逐渐增加,移动通信能力得到了进一步的提高。了解了移动通信的市场趋势,我就组织开发了移动电话客户信息管理系统,通过这个系统可以使移动电话公司对客户信息的管理更加规范化,更加省时省力
移动电话客户信息管理系统是移动公司不可缺少的部分,它的内容对于公司工作人员和顾客来说都至关重要,所以移动电话客户信息管理应该能够为用户提供充足的信息和快捷的查询手段。但一直以来人们使用传统人工的方式管理文件档案,这种管理方式存在着许多缺点,如:效率低、保密性差,另外时间一长将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。
使用计算机对移动电话客户信息管理,具有手工管理所无法比拟的优点.例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。 因此,开发这样一套管理软件成为很有必要的事情,在下面我们将以开发系统为例,谈谈其开发过程和所涉及到的问题及解决方法。
本系统以VF为开发环境,开发移动电话客户管理信息的数据库应用程序从而实现数据库的管理功能。无论是组织信息,运行查询,创建关系型数据库系统,还是为最终用户编写功能全面的数据管理应用程序,Visual FoxPro都可以提供管理数据所具有的工具,可以在应用程序或数据库开发的任何一个领域中提供帮助。Visual FoxPro 所具有的速度,功能和灵活性,是普通数据管理系统无法比拟的,它把我们带入了一个XBASE 新时代!Microsoft Visual FoxPro 6.0是20世纪90年代发展起来的新一代小型数据库系统的杰出代表,它兼容早期流行的大众数据库FoxBase,在Windows95/98/2000/NT环境下运行,它以强大的功能,完整而丰富的工具,极高的处理速度,友好的界面和良好的兼容性等特点,赢得了广大用户的青睐。32位数据库开发系统 Microsoft Visual FoxPro 6.0中文版数据库管理,使应用程序的开发更为合理,使组织数据,定义数据库规则和建立应用程序等工作变的简单易行,利用可视化工具和向导用户可以快速创建表单,查询和打印报表。Microsoft Visual FoxPro 6.0提供了集成化的系统开发环境,不仅支持面向过程的编程,而且在语言功能方面作了强大的扩充,支持面向对象可视化编程技术,拥有齐全的可视化程序设计工具,是当前用户收集信息,查询数据,创建继承数据库系统,进行应用系统开发的理性工具软件。
2系统概况
2.1移动电话客户信息管理系统的简介
移动电话客户信息管理系统主要包含客户个人基本情况,维护基本资料情况,查询,交费,系统维护等各方面信息内容比较庞大复杂。
2.2移动电话客户信息管理系统的功能
2.2.1灵活的数据记录编辑功能.
可以随时对记录进行增加,修改,更新,删除,浏览等编辑操作。
2.2.2数据库表的查询.
便于在客户资料管理操作中对人员情况进行统计查看,还可以进行精确查和模糊查询。
2.2.3具备分级用户权限管理设置.
以确保档案的保密性和安全性。
2.2.4具有数据备份功能 .
该备份功能可随情况的变化而变化,以防客户信息的丢失。
2.2.5具有比较友好的人机界面.
各种操作可以在直观的界面上通过人机交互式进行。
3 数据库设计
3.1数据库的重要性
计算机信息系统以数据库为核心,在数据库管理系统的支持下,进行信息的收集、整理、存储、检索、更新、加工、统计和传播等操作。
对于数据库应用开发人员来说,为使现实世界的信息流计算机话,并对计算机话的信息进行各种操作,就是如何利用数据库管理系统、系统软件和相关硬件系统,将用户的要求转化成有效的数据结构,并使数据库结构易于实现用户新的要求的过程。确切的说,数据库设计是指对于一个给定的应用环境,提供一个确定最优数据模型与处理模式的逻辑设计,以及一个确定数据库存储结构与存取方法的物理设计,建立起既能反映现实世界信息和信息联系,满足用户数据要求和加工要求,有能被某个数据库管理系统所接受,同时能实现系统目标,并有效存取数据的数据库。
在数据库系统的开发过程中,数据库设计是一个非常重要的环节,数据库设计的好坏将直接影响到应用系统的效率,好的数据库结构设计会减少数据的存储量,数据的完整性和一直性比较高,系统具有较快的响应速度,能简化基于数据库的应用程序实现等。
3.2移动电话客户信息管理系统总体规划
对于数据库系统,规划工作是十分必要的。规划的好坏将直接影响到整个评估系统的成功与否,数据库设计中的规划阶段的主要任务是建立数据库的必要性及可行性分析,确定数据库系统在整个移动电话客户信息管理系统的地位。
根据移动电话管理数据库对技术人员和管理人员的水平、数据采集和管理活动的要求;数据库技术对计算机系统的软硬件的要求,决定把数据库管理系统设计成为一个综合的数据库。此数据库包括所有操作人员的所有活动功能。因为,此移动电话客户信息管理系统应用界面较简单、功能单一。所以,用一个综合的数据库就能满足移动电话管理要求,而且实现容易。
因此,移动电话客户信息管理系统可以按照用户权限和实现功能的不同分为两部分:外部操作人员对数据库的查阅访问和内部管理人员对电话信息的管理维护。但是,这两部分都调用的是同一数据库,只不过内部管理人员能实现所有管理功能,而外部操作人员访问数据库时,一些功能被屏蔽,只能进行查阅。交费,系统维护等各方面信息内容比较庞大复杂。
3.3需求分析
数据库需求分析是数据库系统设计的第一个阶段,并且是非常重要的一个环节,在需求分析阶段主要是收集基本数据和数据处理的流程,为以后的进一步设计打下基础,明确用户的各种需求,然后在此基础上确定新系统的功能。新系统必须充分考虑今后可能的扩充和改变,不能仅仅按当前应用需求来设计数据库。 需求分析的重点是调查、收集与分析用户在数据管理中的信息要求、处理要求、安全性与完整性要求。信息要求是指用户需要从数据库中获得信息的内容与性质。由用户的信息要求可以导出数据要求,即在数据库中需要存储哪些数据。处理要求是指用户要求完成什么处理功能,对处理的响应时间有什么要求,处理方式是批处理还是联机处理。新系统的功能必须能够满足用户的信息要求、处理要求、安全性与完整性要求。
需求分析大致可分为三步来完成,即需求信息的收集、分析整理和评审通过。
(1)需求信息的收集
需求信息的收集又称为系统调查。为了充分地了解用户可能提出的要求,在调查研究之前,要做好充分的准备工作,要了解调查的目的、调查的内容和调查的方式。
(2)需求信息的分析整理
要想把收集到的信息(如文件、图表、票据、笔记)转化为下一阶段设计工作可用的形式信息,必须对需求信息做分析整理的工作。
(3) 评审通过
要想使收集的信息准确无误,必须对需求信息做评审
由需求分析得到的本系统的数据流程图为:
登录界面
启动程序
打印输出
系统主界面
系统维护
客户资料查询
客户资料显示
客户资料录入
基本资料查询
维护资料查询
客户费用查询
客户基本资料
客户维护资料
基本资料录入
维护资料录入
客户交费
维护资料清单
基本资料清单
机型录入
数据恢复
购机查询
数据备份
数据初始化
3.4概念结构设计
将需求分析得到的用户需求抽象为信息结构即概念模型的过程就是概念结构设计,概念结构是对现实世界的一种抽象,即对实际的人、物、事和概念进行人为处理,抽取人们关心的共同特性,忽略非本质的细节,并把这些特性用各种概念精确地加以描述。
3.4.1 系统的数据项和数据结构如
1) 客户资料表(客户姓名,客户地址,邮编,联系电话,当前使用手机,手机型号,购机日期,电池,客户年龄,附件)
2) 品牌型号表(手机品牌,手机型号,手机费用)
3) 维护资料表(客户姓名,客户地址,联系电话,手机型号,维护费用,故障描述,维护次数,维护时间,备注)
4) 附件(附件)
5) 费用(手机号,费用)
3.4.2 E-R图的设计
设计步骤:
1)选择局部应用
就是要根据系统的具体情况,在多层的数据流图中选择一个适当层次的(经验很重要)数据流图,让这组图中每一部分对应一个局部应用,我们就可以这一层次的数据流图为出发点
客户信息
手机
维修
姓名
联系方式
客户年龄
手机品牌
手机型号
手机型号
客户地址
手机费用
M
N
2)逐一设计分E-R图
每个局部应用都对应了一组数据流图,局部应用涉及的数据都已经收集在数据字典中了。现在就是将这些数据从数据字典中抽取出来,参照数据流图,标定局部应用中的实体、实体的属性、标识实体的码,确定实体之间的联系及其类型(1:1、1:n、m:n)。
根据上面分析得:移动电话客户信息管理系统实体间关系E-R图如下
3.4.3系统功能各个模块的具体说明
★ 用户登录模块
功能:设置使用移动管理系统的用户及其使用权限。
系统启动后,首先要做的就是用户登录。若不进入系统,所有功能都无法使用。用户只有登录系统后,根据其具有的权限,才能执行一定的操作。进入该功能后,要求选择用户的登录名及输入其口令,只有其登录名和口令完全正确,才能进入人事管理系统。系统会根据为用户分配的权限,设置其对应的功能为有效,用户就可操作该功能
操作:用户分为管理员、工作人员。用户在使用本系统时,要求输入用户的口令,为了安全,用户需建立一个只有自己才知道的特殊口令,通常,系统的权限分为两大部分,即:
管理权限:设置用户和系统参数。
输入权限:客户基本资料输入,客户维护资料输入,手机型号,价格输入
根据需要,可以把这些功能分配给不同的员工。管理员具有对系统的最大权限,管理员才可以修改所以用户密码和权限。其他用户不能执行此功能。工作人员对系统有操作权限。每一权限对应系统菜单上的一项功能,可为该用户选择任意的权限
整个移动管理系统由多个功能模块组成,不同的模块完成不同的功能,所以可以为不同的工作人员分配不同的功能,使其具有不同的权限,完成其权限所对应的功能,从而很好地管理好整个系统。 该模块提供管理系统的主界面,是主系统的唯一入口和出口。
★ 查询模块
功能:对客户资料的查询功能,包括客户费用查询查询和基本维护资料查询,客户费用查询等。
该模块的主要分为两部分:一是在文本框中输入要查询的字段等;二是用来显示用户进行查询的字段及查询、退出按钮。当查询的条件输入完毕,点击确定按钮,完成该模块的查询功能。客户资料中的各字段,选择相应的条件操作符输入相应的值即可进行客户资料查询。在这里可以查到符合程序要求的任何信息。再这里的选项中输入规定的范围即可查到相关的客户信息。该模块提供查询符合某一条件的客户信息的界面。
★ 客户资料录入模块
客户资料录入模中有4个子模块。他们是客户基本资料录入、维护资料录入和手机品牌录入,交费情况录入等功能。这些功能因管理员的权限不同所表示出的功能使用也不同,只有管理员才拥有数据修改及删除的权利。在这些功能里详细的记录了所有客户的资料。
★ 客户资料打印输出模块
功能:对全部员工的信息进行全局浏览;除了浏览信息的功能外,还把客
户信息转至EXCEL格式,打印输
★ 系统维护模块
数据处理模块(是对系统在库中的数据资料的处理)数据处理包括数据初始化和数据备份初始化。数据初始化包括购机资料初始化,维护资料初始化,机型资料初始化,配件资料初始化。本模块是将数据库中的记录拷贝到备份数据库中,本模块防止了用户资料的丢失。
★ 帮助模块
帮助向用户详细介绍本系统的各个模块的功能以及本系统的相关信息,本模块当你点击某个按钮时将会弹出相应模块的功能介绍.
3.5逻辑结构设计
设计逻辑结构应该选择最适于描述与表达相应概念结构的数据模型,然后选择最合适的DBMS。设计逻辑结构时一般要分三步进行:
·将概念结构转换为一般的关系、网状、层次模型
·将转化来的关系、网状、层次模型向特定DBMS支持下的数据模型转换
·对数据模型进行优化
要利用 Visual FoxPro 实现移动电话客户信息管理系统,需要将上面的数据库概念结构转化为Visual FoxPro数据库支持的实际数据模型,也就是数据库的逻辑结构.
3.5.1 数据库中表结构的设计
客户资料表
列名
数据类型
可否为空
客户姓名
CHAR(10)
否
客户地址
CHAR(18)
否
邮编
CHAR(6)
可
联系电话
CHAR(20)
否
客户年龄
INT(2)
可
当前使用手机
CHAR(20)
否
附件
CHAR(20)
可
手机机型
CHAR(20)
否
客户职业
CHAR (20)
可
耳机
CHAR (20)
可
经受人
CHAR (20)
否
发票日期
DATE (8)
否
电池
CHAR(30)
否
品牌型号表
列名
数据类型
可否为空
手机型号
CHAR(1O)
否
费用
INT(10)
否
手机品牌
CHAR(20)
否
费用表
列名
数据类型
可否为空
手机
CHAR(20)
否
客户姓名
CHAR(20)
否
费用
CHAR(18)
否
维护资料表
列名
数据类型
可否为空
客户姓名
CHAR(10)
否
客户地址
CHAR(18)
否
维护费用
INT (10)
否
联系电话
CHAR(20)
否
维护次数
INT(3)
否
维护时间
DATE(8)
否
故障描述
CHAR(10)
可
手机机型
CHAR(20)
否
备注
备注(10)
可
附件
列名
数据类型
可否为空
附件
CHAR(20)
否
4程序的实现
4.1 创建本系统主程序
在VFP6.0中,所提供的“项目管理器”和“应用程序生成器”是系统开发人员的强大工具,利用应用程序向导,无需编写任何代码,就可以创建一个项目和一个VFP6.0应用程序框架,简化开发工作。
“移动电话客户信息管理系统”就是用向导建立的项目和应用程序框架。系统的主程序是自动生成的,为了满足系统需求,对主程序做如下修改:
在主文件的首部,添加下面语句:
_screen.caption="移动电话客户信息管理系统"
_screen.picture='水.JPG'
_SCREEN.WINDOWSTATE=2
PUBLIC K1,K2,K3,K4,K5,K6,K7,K8,K9,k10,k11,k12,k13,
k14 ,K15,K16,K17
STORE 0 TO K1,K2,K3,K4,K5,K6,K7,K8,K8,K9,k10,k11,k12
k13,k14,K15,K16,K17
DO FORM 登陆表单.SCX
其目的是控制系统主菜单,让相应的菜单命令“跳过”使之成为灰色显示而不起作用。当不同权限用户进入系统是在更改这些变量的值,使菜单命令可用。通过这种方法,实现对不同权限的用户赋予不同的操作权限目的。再者就是执行系统登陆表单。退出并保存主程序文件。
4.2 表单的建立
本系统大部分的功能都是通过表单来实现的,下面就以一个表单为例来说明表单的建立以及它的代码
登陆界面的制作及界面
1 建立一个表单.在项目管理器的文档页中选择表单,单击“新建”,弹出表单设计器,
2在该表单上添一个“容器”控件“Containder1”“容器”控件是可包含其他控件的空间,并且允许访问被包含控件,
3在“Container1”控件上添加2个“按钮”控件.他们的“Caption”属性分别为“确定”、 “退出”、,再添加两个标签,设置它们的属性分别为“请选择操作员”,“请输入密码”
4在表单上添加“图象”控件“Image1”,并设置“Stretch”属性为“2—STRETCH”“Picture”属性为图片所在位置.
5双击按钮控件可以弹出代码编辑器
确定
yhm=bo1.value &&用户名
mm=allt(thisform.container1.text1.value) &&密码
locate for 姓名=yhm
do case
*case 密码表.级别="0" .and. mm=allt(密码表.密码)
case 密码表.级别="0" .and. mm=allt(密码表.密码)
messagebox("超级用户,你有权修改数据!"+chr(13)+"请按‘确定’按钮进入系统!",0+48,"欢迎进入!")
store 1 to k1,k2,k3,k6,k7,k8,k9,K4,K5,K10,K11,K12,K13,K14&&确定不同类型用户的使用菜单权限
thisform.release
retu
*case 密码表.级别="1" .and. mm=allt(密码表.密码)
case 密码表.级别="1" .and. mm=allt(密码表.密码)
messagebox("普通用户,你只有权浏览数据!"+chr(13)+"请按‘确定’按钮进入系统!",0+48,"欢迎进入!")
store 1 to K4,K5,K10,K11,K12,K13,K14
thisform.release
retu
otherwise
n=n+1 && n是表单初始化时定义的全局变量,初值为1
if n<=3
messagebox("口令错,请重新输入!你还有"+allt(str(4-n))+"次机会!",0+48,"口令最多可输入3次")
thisform.container1.text1.value=""
thisform.container1.text1.setfocus
else
messagebox("你是非法入侵者,请退出系统!",0+48,"警告!")
*quit
*set sysmenu to default
*clear events
thisform.release
endif
endcase
退出 THISFORM.RELEASE
6表单名为“登录表单”
4.3代码编写及界面
1)查询表单
进行查询按钮:
SET SAFETY OFF
SET EXACT ON
USE 维修资料表.DBF
IF ALLT(THISFORM.TEXT1.VALUE)==""
=MESSAGEBOX("表达式错误,无法搜索!",0+64,"提示")
ELSE
SELE 1
LOCATE FOR 客户姓名=ALLT(THISFORM.TEXT1.VALUE)
IF(EOF())
=MESSAGEBOX("不存在本用户姓名,无法定位,请重新输入!",64+0,"警告")
THISFORM.TEXT1.VALUE=""
ELSE
??CHR(7)
THISFORM.LABEL1.CAPTION=ALLT(客户姓名)
THISFORM.TEXT2.VALUE=ALLT(附件)
THISFORM.TEXT3.VALUE=ALLT(联系电话)
THISFORM.TEXT4.VALUE=ALLT(维护费用)
THISFORM.TEXT5.VALUE=ALLT(维护次数)
THISFORM.TEXT6.VALUE=ALLT(故障描述)
THISFORM.TEXT7.VALUE=ALLT(维修时间)
THISFORM.TEXT1.ENABLED=.F.
THISFORM.COMMAND2.ENABLED=.T.
ENDIF
ENDIF
继续查询按钮
THISFORM.TEXT1.ENABLED=.T.
THISFORM.TEXT1.VALUE=""
THISFORM.COMMAND2.ENABLED=.F.
2)录入表单
确定按钮:
use 维修资料表.dbf
go bottom
append blank
dimension m.menadd[9]
m.menadd[1]=thisform.text1.value
m.menadd[2]=thisform.text2.value
m.menadd[3]=thisform.text3.value
m.menadd[4]=thisform.text4.value
do case
case thisform.optiongroup1.value=1
m.menadd[5]='死机'
case thisform.optiongroup1.value=2
m.menadd[5]='不开机'
case thisform.optiongroup1.value=3
m.menadd[5]='按键失灵'
case thisform.optiongroup1.value=4
m.menadd[5]='无震动'
case thisform.optiongroup1.value=5
m.menadd[5]='外客坏'
case thisform.optiongroup1.value=5
m.menadd[5]='掉话'
case thisform.optiongroup1.value=7
m.menadd[5]='自动关机'
case thisform.optiongroup1.value=8
m.menadd[5]='听筒无声'
case thisform.optiongroup1.value=9
m.menadd[5]='时钟不走'
case thisform.optiongroup1.value=10
m.menadd[5]='翻盖无效'
case thisform.optiongroup1.value=11
m.menadd[5]='机械故障'
case thisform.optiongroup1.value=12
m.menadd[5]='黑屏'
case thisform.optiongroup1.value=13
m.menadd[5]='解锁'
case thisform.optiongroup1.value=14
m.menadd[5]='无显示'
case thisform.optiongroup1.value=15
m.menadd[5]='天线坏'
case thisform.optiongroup1.value=15
m.menadd[5]='无接收'
case thisform.optiongroup1.value=17
m.menadd[5]='音频差'
case thisform.optiongroup1.value=18
m.menadd[5]='无背景'
case thisform.optiongroup1.value=19
m.menadd[5]='升级'
case thisform.optiongroup1.value=20
m.menadd[5]='其它'
endcase
do case
case thisform.optiongroup3.value=1
m.menadd[6]='保修 WH'
case thisform.optiongroup3.value=2
m.menadd[6]='进入 S'
case thisform.optiongroup3.value=3
m.menadd[6]='返修 C'
ENDCASE
do case
case thisform.optiongroup2.value=1
m.menadd[7]='第一次'
case thisform.optiongroup2.value=2
m.menadd[7]='第二次 '
case thisform.optiongroup2.value=3
m.menadd[7]='第三次'
ENDCASE
m.menadd[9]=thisform.text5.value
m.menadd[8]=thisform.TEXT6.value
gather from m.menadd
use
THISFORM.COMMAND3.ENABLED=.T.
继续按钮:
THISFORM.TEXT1.ENABLED=.T.
THISFORM.TEXT1.VALUE=""
THISFORM.TEXT2.ENABLED=.T.
THISFORM.TEXT2.VALUE=""
THISFORM.TEXT3.ENABLED=.T.
THISFORM.TEXT3.VALUE=""
THISFORM.TEXT4.ENABLED=.T.
THISFORM.TEXT4.VALUE=""
THISFORM.TEXT5.ENABLED=.T.
THISFORM.TEXT5.VALUE=""
3)备份表单代码及界面
备份按钮:
FPATH=TRIM(THISFORM.TEXT1.VALUE)
DO CASE
CASE THISFORM.OPTIONGROUP1.VALUE=1
IF LEN(FPATH)=0
MESSAGEBOX("你没有选择要保存的路径!",64,"警告")
ELSE
COPY FILE 客户资料表.DBF TO &FPATH\客户资料表.DBF
COPY FILE 客户资料表.CDX TO &FPATH\客户资料表.CDX
MESSAGEBOX("客户购机资料已经成功备份!",64,"消息")
ENDIF
CASE THISFORM.OPTIONGROUP1.VALUE=2
IF LEN(FPATH)=0
MESSAGEBOX("你没有选择要保存的路径!",64,"警告")
ELSE
COPY FILE 维护资料表.DBF TO &FPATH\维护资料表.DBF
COPY FILE 维护资料表.CDX TO &FPATH\维护资料表.CDX
MESSAGEBOX("客户维护资料已经成功备份!",64,"消息")
ENDIF
CASE THISFORM.OPTIONGROUP1.VALUE=3
IF LEN(FPATH)=0
MESSAGEBOX("你没有选择要保存的路径!",64,"警告")
ELSE
COPY FILE 品牌型号表.DBF TO &FPATH\品牌型号表.DBF
COPY FILE 品牌型号表.CDX TO &FPATH\品牌型号表.CDX
MESSAGEBOX("手机型号数据已经成功备份!",64,"消息")
ENDIF
CASE THISFORM.OPTIONGROUP1.VALUE=4
IF LEN(FPATH)=0
MESSAGEBOX("你没有选择要保存的路径!",64,"警告")
ELSE
COPY FILE 配件.DBF TO &FPATH\配件.DBF
COPY FILE 配件.CDX TO &FPATH\配件.CDX
MESSAGEBOX("手机配件数据已经成功备份!",64,"消息")
ENDIF
ENDCASE
4)维护信息显示
GO TOP
THISFORM.CONTAINER2.COMMAND2.ENABLED=.F.
THISFORM.CONTAINER2.COMMAND3.ENABLED=.T.
THISFORM.CONTAINER2.COMMAND4.ENABLED=.T.
THISFORM.REFRESH
SKIP-1
IF BOF()
THIS.ENABLED=.F.
THISFORM.CONTAINER2.COMMAND1.ENABLED=.F.
THISFORM.CONTAINER2.COMMAND3.ENABLED=.T.
THISFORM.CONTAINER2.COMMAND4.ENABLED=.T.
ELSE
THIS.ENABLED=.T.
THISFORM.CONTAINER2.COMMAND1.ENABLED=.T.
THISFORM.CONTAINER2.COMMAND3.ENABLED=.T.
THISFORM.CONTAINER2.COMMAND4.ENABLED=.T.
ENDIF
THISFORM.REFRESH
SKIP 1
IF EOF()
THIS.ENABLED=.F.
THISFORM.CONTAINER2.COMMAND1.ENABLED=.T.
THISFORM.CONTAINER2.COMMAND2.ENABLED=.T.
THISFORM.CONTAINER2.COMMAND4.ENABLED=.F.
ELSE
THIS.ENABLED=.T.
THISFORM.CONTAINER2.COMMAND1.ENABLED=.T.
THISFORM.CONTAINER2.COMMAND2.ENABLED=.T.
THISFORM.CONTAINER2.COMMAND4.ENABLED=.T.
ENDIF
THISFORM.REFRESH
go bottom
THI
展开阅读全文