论文部分内容阅读
【摘要】开发和建立MIS的根本目的在于提高管理水平,严格地说,设计一个信息系统,应首先进行组织的设计,为了对数据流程图中的各个元素做出详细的说明,有必要建立数据字典。数据字典就是关于数据信息的数据库。它是在数据流程图的基础上,进一步定义和描述所有数据的工具,包括对一切动态数据(数据流)和静态数据(数据存贮)的数据结构和相互关系的说明,是数据分析和数据管理的重要工具,是系统设计阶段进行数据库(文件)设计的参考依据。
【关键词】数据字典 表单 控件 事件 属性
数据字典就是关于数据信息的数据库。换言之,它就是元数据的仓库。
本文介绍了应用Visual FoxPro数据字典功能的三种常用方法。
一、基于较少固定数据项的数据字典
在资产管理系统中,数据字典的应用比较广泛,如资产类型、资产单位、资产来源、部门信息、员工信息等等。我们以资产类型为例来介绍数据字典的第一种应用方法:假设资产类型分为三类,即固定资产、低值耐用品、低值易耗品。实现方法:首先创建一个表单,在表单中添加两个控件,标签Label和组合框Combo,如图1所示
分别设置两个控件的主要属性为:
保存并执行表单,点击组合框下拉箭头可选择列出的值(效果如图2所示)。
这种数据字典应用是VF中最为简便的方法,但只适用于较少固定数据项的数据字典,字典内容不便修改与扩充是其最大的缺点。
二、基于数据库的数据字典
为了方便对数据字典的内容进行修改与扩充,一般情况下,要对数据字典,分别建立相应的数据表。
如上例所提,可做如下改变:
首先要建立“资产分类表”用来保存系统资产的类别,只包含“资产类别”1个该表的设置如下所示:
建立如图1所示的表单。添加表单form1的Init事件代码如下:
sele 资产分类
**调用“资产分类”数据表**
两个控件的主要属性为:
这一应用较之第一种来说,具有更大的灵活性。如果我们需要更改数据字典的内容,只需另外设计一个表单(更直接的办法是利用表单向导),对“资产分类表”进行操作即可。
三、基于更复杂的数据字典
在实际设计过程中,我们要从较复杂的数据字典中获得信息,如在学校资产管理系统中,需要确定某一设备的规定分类号,就要从《高等学校资产分类目录及编码》中查询并使用,而此目录中所包含类别有近2万类,这就给查询和使用带来了问题。我的解决方案是这样的:
首先,设计一个表单,如图3所示。
图3
添加三个控件,1个标签控件,1个文本框控件Text1,1个组合框控件Combo1,调整这三个控件的位置、大小及属性如图3所示。
图4
添加Combo1控件的DropDown事件代码如下:
*——调用“分类号选择”对话框
DO FORM 代码查询 TO FANO
*——如果返回了资产分类号
IF .NOT. EMPTY(ALLTRIM(FANO))
THISFORM.text1.VALUE = FANO
THISFORM.text1.VALID
ENDIF
第二步,设计“分类号选择”表单,如图4所示。
在表单中,设计有1个选项按钮组OptionGroup1,其Click事件代码为:
set filt to
do case
case this.value=1
thisform.label1.caption="选择分类:"
thisform.text1.enabled=.f.
thisform.text1.visible=.f.
thisform.combo1.visible=.t.
thisform.combo1.enabled=.t.
thisform.combo1.setfocus
case this.value=2
thisform.label1.caption="输入关键字:"
thisform.combo1.enabled=.f.
thisform.combo1.visible=.f.
thisform.text1.visible=.t.
thisform.text1.enabled=.t.
thisform.text1.setfocus
endcase
1个表格控件Grid1,其Text1的DblClick事件代码为:
*——将选择的值赋给自定义变量
THISFORM.rValue = ALLTRIM(THIS.VALUE)
*——退出表单
THISFORM.Release
1个按钮控件Command1,其Click事件代码为:
if thisform.optiongroup1.value=1
do case
case alltrim(thisform.combo1.value)='00;.全部'.or.;
len(alltrim(thisform.combo1.value))=0
kk=''
case alltrim(thisform.combo1.value)='01.房屋'
kk='fldm="01"'
case alltrim(thisform.combo1.value)='02.土地及植物'
kk='fldm="02"'
case alltrim(thisform.combo1.value)='03.仪器仪表'
kk='fldm="03"'
case alltrim(thisform.combo1.value)='04.机电设备'
kk='fldm="04"'
case alltrim(thisform.combo1.value)='05.电子设备'
……
kk='fldm="13"'
case alltrim(thisform.combo1.value)='14.行政办公设备'
kk='fldm="14"'
case alltrim(thisform.combo1.value)=‘16.牲畜’
kk='fldm="16"'
endcase
else
if len(alltrim(thisform.text1.value))=0
kk=''
else
kk='alltrim(thisform.text1.value)'+ '$flmc'
endi
endi
sele 仪器设备分类目录
set filt to
set filt to &kk
thisform.refresh
1个组合框控件Combo1,其设置采用方法1的设计方案进行。其值为:
00.全部,01.房屋.……
1个文本框控件Text1,其Visible属性设为.T.-真,并使其置于组合框控件Combo1下。
表单的Init事件代码如下:
sele 仪器设备分类目录
set filt to
thisform.combo1.enabled=.t.
thisform.combo1.visible=.t.
thisform.text1.visible=.t.
thisform.label1.caption="选择分类:"
thisform.refresh
表单的Unload事件代码如下:
RETURN THISFORM.rValue
新建表单属性rValue,其值为空。表单的MDIForm属性值为.T.-真。
至此,整个设计工作基本完成。应用数据字典功能使开发出的软件在具备实用性的同时,也充分考虑了普通用户使用的方便性和准确性,使软件更具有人性化。愿以上所述能对喜爱Visual FoxPro的编程者以启示,开发出更多更精美的软件来。
参考文献:
[1]求是科技.Visual FoxPro通用模块及典型系统开发.人民邮电出版社.
[2]蔡德利.数据字典录入的类型及实现.黑龙江八一农垦大学学报,2001,6.
【关键词】数据字典 表单 控件 事件 属性
数据字典就是关于数据信息的数据库。换言之,它就是元数据的仓库。
本文介绍了应用Visual FoxPro数据字典功能的三种常用方法。
一、基于较少固定数据项的数据字典
在资产管理系统中,数据字典的应用比较广泛,如资产类型、资产单位、资产来源、部门信息、员工信息等等。我们以资产类型为例来介绍数据字典的第一种应用方法:假设资产类型分为三类,即固定资产、低值耐用品、低值易耗品。实现方法:首先创建一个表单,在表单中添加两个控件,标签Label和组合框Combo,如图1所示
分别设置两个控件的主要属性为:
保存并执行表单,点击组合框下拉箭头可选择列出的值(效果如图2所示)。
这种数据字典应用是VF中最为简便的方法,但只适用于较少固定数据项的数据字典,字典内容不便修改与扩充是其最大的缺点。
二、基于数据库的数据字典
为了方便对数据字典的内容进行修改与扩充,一般情况下,要对数据字典,分别建立相应的数据表。
如上例所提,可做如下改变:
首先要建立“资产分类表”用来保存系统资产的类别,只包含“资产类别”1个该表的设置如下所示:
建立如图1所示的表单。添加表单form1的Init事件代码如下:
sele 资产分类
**调用“资产分类”数据表**
两个控件的主要属性为:
这一应用较之第一种来说,具有更大的灵活性。如果我们需要更改数据字典的内容,只需另外设计一个表单(更直接的办法是利用表单向导),对“资产分类表”进行操作即可。
三、基于更复杂的数据字典
在实际设计过程中,我们要从较复杂的数据字典中获得信息,如在学校资产管理系统中,需要确定某一设备的规定分类号,就要从《高等学校资产分类目录及编码》中查询并使用,而此目录中所包含类别有近2万类,这就给查询和使用带来了问题。我的解决方案是这样的:
首先,设计一个表单,如图3所示。
图3
添加三个控件,1个标签控件,1个文本框控件Text1,1个组合框控件Combo1,调整这三个控件的位置、大小及属性如图3所示。
图4
添加Combo1控件的DropDown事件代码如下:
*——调用“分类号选择”对话框
DO FORM 代码查询 TO FANO
*——如果返回了资产分类号
IF .NOT. EMPTY(ALLTRIM(FANO))
THISFORM.text1.VALUE = FANO
THISFORM.text1.VALID
ENDIF
第二步,设计“分类号选择”表单,如图4所示。
在表单中,设计有1个选项按钮组OptionGroup1,其Click事件代码为:
set filt to
do case
case this.value=1
thisform.label1.caption="选择分类:"
thisform.text1.enabled=.f.
thisform.text1.visible=.f.
thisform.combo1.visible=.t.
thisform.combo1.enabled=.t.
thisform.combo1.setfocus
case this.value=2
thisform.label1.caption="输入关键字:"
thisform.combo1.enabled=.f.
thisform.combo1.visible=.f.
thisform.text1.visible=.t.
thisform.text1.enabled=.t.
thisform.text1.setfocus
endcase
1个表格控件Grid1,其Text1的DblClick事件代码为:
*——将选择的值赋给自定义变量
THISFORM.rValue = ALLTRIM(THIS.VALUE)
*——退出表单
THISFORM.Release
1个按钮控件Command1,其Click事件代码为:
if thisform.optiongroup1.value=1
do case
case alltrim(thisform.combo1.value)='00;.全部'.or.;
len(alltrim(thisform.combo1.value))=0
kk=''
case alltrim(thisform.combo1.value)='01.房屋'
kk='fldm="01"'
case alltrim(thisform.combo1.value)='02.土地及植物'
kk='fldm="02"'
case alltrim(thisform.combo1.value)='03.仪器仪表'
kk='fldm="03"'
case alltrim(thisform.combo1.value)='04.机电设备'
kk='fldm="04"'
case alltrim(thisform.combo1.value)='05.电子设备'
……
kk='fldm="13"'
case alltrim(thisform.combo1.value)='14.行政办公设备'
kk='fldm="14"'
case alltrim(thisform.combo1.value)=‘16.牲畜’
kk='fldm="16"'
endcase
else
if len(alltrim(thisform.text1.value))=0
kk=''
else
kk='alltrim(thisform.text1.value)'+ '$flmc'
endi
endi
sele 仪器设备分类目录
set filt to
set filt to &kk
thisform.refresh
1个组合框控件Combo1,其设置采用方法1的设计方案进行。其值为:
00.全部,01.房屋.……
1个文本框控件Text1,其Visible属性设为.T.-真,并使其置于组合框控件Combo1下。
表单的Init事件代码如下:
sele 仪器设备分类目录
set filt to
thisform.combo1.enabled=.t.
thisform.combo1.visible=.t.
thisform.text1.visible=.t.
thisform.label1.caption="选择分类:"
thisform.refresh
表单的Unload事件代码如下:
RETURN THISFORM.rValue
新建表单属性rValue,其值为空。表单的MDIForm属性值为.T.-真。
至此,整个设计工作基本完成。应用数据字典功能使开发出的软件在具备实用性的同时,也充分考虑了普通用户使用的方便性和准确性,使软件更具有人性化。愿以上所述能对喜爱Visual FoxPro的编程者以启示,开发出更多更精美的软件来。
参考文献:
[1]求是科技.Visual FoxPro通用模块及典型系统开发.人民邮电出版社.
[2]蔡德利.数据字典录入的类型及实现.黑龙江八一农垦大学学报,2001,6.