在数据库管理系统中,数据与程序是分开存放的,设计程序的目的是为了将数据加工处理成符合用户要求的有用信息。VFP的数据存储在表(Table,后缀为DBF)中,但是还有另外的一层名为数据库的外套(后缀为DBC)。DBC中包含有关于表、索引、关系、触发器等的信息。首先我们来看看表。然后再看看数据库如何把它们捆绑在一起。
第一部分:VFP的表
VFP的数据以表的形式存储,表的每一列表示一个单一的数据元素(在VFP中称为字段),比如姓名、地址或电话号码。每一行是一个记录,是一个由每列中的一个数据组成的组。表的每一个字段都有特定的数据类型。可以将字段的数据类型设置为下表中的任意一种。
表一. 字段的数据类型
数据类型 | 说明 |
字符型 | 字母、数字型文本 |
货币型 | 货币单位 价格 |
数值型 | 整数或小数 |
浮点型 | 同“数值型” |
日期型 | 年,月,日 |
日期时间型 | 年,月,日,时,分,秒 |
双精度型 | 双精度数值 |
整型 | 不带小数点的数值 |
逻辑型 | 真或假 |
备注型 | 不定长的字母数字文本 |
通用型 | OLE(对象链接与嵌入) |
字符型(二进制) | 同前述“字符型”相同,但是当代码页更改时字符值不变 |
备注型(二进制) | 同前述“备注型”相同,但是当代码页更改时备注不变 |
一、创建新表
下面,我们来建立一个新表。选择菜单“文件/新建”,在弹出的“新建”对话框中选择“表”,然后选择“新建文件”按钮,在弹出的“创建”对话框中选择要存放的目录或文件夹,并输入表名(如:学生情况),就会弹出“表设计器”对话框。
选择“字段”选项卡,在“字段名”区域键入字段的名称;在“类型”区域,选择列表中的某一字段类型;在“宽度”区域,设置以字符为单位的列宽;如果“字段类型”是“数值型”或“浮点型”,设置“小数位”框中的小数点位数;如果希望为字段添加索引,请在“索引”列中选择一种排序方式。请按照“图一”定义“学生情况表”的字段, 在以后的讲座中,我们将经常使用它。(说明:尽管VFP中可以用汉字来定义字段,但为了以后编程的方便,这里使用汉字的拼音简写来定义字段。)
定义完字段后,按“确定”命令按钮后,VFP会询问是否“现在输入数据?”,此时,可以选择是立即开始输入记录,还是在以后准备好所有记录后再打开表进行输入。
请注意,这时命令窗口将会出现一条命令“CREAT”,这就是建立新表的VFP命令,将光标移至这一行,按回车,将再次弹出“表设计器”对话框。VFP的大部分菜单操作都会将相应的命令显示在“命令”窗口中,可千万别错过这个学习命令的好机会呦!
二、表记录的编辑修改
在建立了新表后就可以在表中编辑修改数据了,表中数据的编辑修改包括增加记录、修改记录和删除记录,还有查询记录。
1.查看表的内容
查看表内容的最快方法是使用“浏览”窗口。“浏览”窗口中显示的内容是由一系列可以滚动的行和列组成的。若要浏览一个表,则执行下面的步骤:
1)选择菜单“文件/打开”命令,选定要查看的表名,则打开了选定的表。
2)选择菜单“显示/浏览”命令,则打开了浏览窗口。
VFP的浏览窗口功能非常强大,使用滚动条、箭头键和Tab键可以来回移动表,显示表中不同的字段和记录;拖动列头可以改变字段的显示顺序,但不影响字段在表结构中的顺序;拖动列头右边的分隔线可以改变字段的显示宽度,但不影响字段结构的长度;拖动窗口底部的分割条可以将窗口分为两部分以不同的方式显示(编辑方式或浏览方式);直接用鼠标单击删除标记区,能够给记录打上删除标记;通过菜单还可以对窗口进行更多的控制,当有表打开并在浏览窗口显示时,系统的“显示”菜单条自动增添了一些新的菜单项,并在菜单栏上出现一个“表”菜单条,对表和浏览窗口的有关操作都集中在这两个菜单条上。
2.添加新记录
若想在表中快速加入新记录,可以将“浏览”窗口设置为“追加”方式,方法是选择菜单“显示/追加方式”命令。在“追加”方式中,文件底部显示了一组空字段,可以在其中填入内容来建立新记录。每完成一条记录,在文件底端会出现一条新记录,此方式适于批量数据的录入。若只需添加一条记录,可以选择菜单“表/追加新记录”命令。
3.编辑字段
若要改变“字符型”字段、“数值型”字段、“逻辑型”字段、“日期型”字段、“日期时间型”字段中的信息,可以把光标移到字段中并编辑信息,或者选定整个字段并键入新的信息。
若要编辑“备注型”字段,可以在“浏览”窗口中双击该字段或按下Ctrl+PgDn键。这时会打开一个“编辑”窗口,可在其中修改、添加“备注型”字段的内容。
4.删除记录
在VFP中,删除表中的记录共有两个步骤。首先是在“浏览”窗口中单击每个要删除记录左边的删除标记区,标记要删除的记录。被标记过的记录并未从磁盘上消失,要想真正删除记录,应选择菜单“表/彻底删除”命令,这个过程将删除所有标记过的记录,并关闭“浏览”窗口。
三、工作区
在实际应用中, 经常需要同时打开多个表,这就要使用到工作区。VFP有32767个工作区,当VFP刚启动完后,工作区1被自动选中。“SELECT nWorkArea | cTableAlias”命令可用来选择工作区。若要使用表(浏览、编辑等),必须先打开表,并保证其所在的工作区被选中。为了加深对工作区的理解,可以选择菜单“窗口/数据工作期”或在命令窗口中输入“SET”命令,打开“数据工作期”对话框,如图3。
在“别名”列表框中将看到刚才打开的“学生情况”表,单击“打开”按钮,再打开一个表(如:位于安装VFP的目录中的SAMPLES\DATA子目录下的样例表Customer),请注意命令窗口中的相应命令“USE d:\vfp\samples\data\customer.dbf IN 0 EXCLUSIVE”,其中USE是打开表的命令字;d:\vfp\samples\data\customer.dbf是要打开的表名;IN 0表示在还没有表的下一个工作区内打开表。若无此选项,则在当前工作区内打开表,如果次工作区内已有表,将会被关闭;EXCLUSIVE(或SHARED)表示表的打开方式为独占(或共享)。此时,Customer表所在的工作区并没有被选中,用鼠标单击列表框中的“Customer”便可选中其所在工作区,相应的命令为“SELECT 2”。
四、索引
对于已经建好的表,可以利用索引对其中的数据进行排序,以便加快检索数据的速度。可以用索引快速显示、查询或者打印记录。还可以选择记录,控制重复字段值的输入并支持表间的关系操作。
VFP中 的索引和书中的目录类似。书中的目录是一份页码的列表,指向各章节所在的页号;表索引是一个记录号的列表,它指向待处理的记录,并确定了记录的处理顺序。
索引并不改变表中所存储记录的顺序,它只改变了VFP读取每条记录的顺序。可以为一个表建立多个索引,每一索引代表一种处理记录的顺序。索引保存在一个复合结构索引文件中,在使用表时,该文件被打开并更新。复合结构索引文件名与相关的表同名,并具有.CDX扩展名。
由于建立索引的方法很简单,你或许想为每个字段建立一个索引。但是,不常用的索引会降低程序的执行速度,所以应该只给那些经常使用的字段建立索引。在VFP中可以建立以下四种类型的索引:
主索引 可确保字段中输入值的唯一性,若在添加记录或修改索引字段时出现了索 引字段值,VFP将给出警告并不予接受。如果在建立该索引时,表中已经 有不唯一的记录存在,那将无法建立这样的索引。
候选索引 与主索引类似,也保证表中索引值的记录是唯一的。 因为一个表只能建立 一个主索引,所以当要建立多个不允许有索引重复值的索引时,可以作为 候选索引,同一个表允许建立多个候选索引。
普通索引 允许表中有重复索引值的记录。
唯一索引 允许表中索引值的记录不唯一,但只有第一个有相同索引关键字值的记录 有效。这是为兼容旧版本而保留的一种形式。
下面我们来建立几个索引。
打开“学生情况”表,并保证其所在工作区被选中,选择菜单“表/表设计器”,打开“表设计器”对话框。在“字段”选项卡中,将光标移至“xh”字段,用鼠标单击“索引”下的下拉列表框,选择“升序”或“降序”项,再将光标移至“rxrq”字段,重复以上操作。在“索引”选项卡中,可以看到我们已建立的两个索引,将“xh”的索引类型改为“主索引”。再建立一个稍微复杂一点儿的索引,将光标移至“索引名”下的空框内,输入“rxnl”(入学年龄),在“表达式”下的空框内输入“year(rxrq)-year(csrq)”,其中year()函数用于计算出生年份和入学年份。单击“排序”下的按钮,选择你喜欢的排序方式。按“确定”按钮退出“表设计器”对话框。
在本讲中,你已经了解了VFP最基本的数据部件——表,下一讲将介绍VFP更为强大的数据工具——数据库。请大胆地练习“表”菜单和“显示”菜单中的各菜单项,这将加深你对表的了解,别忘了“命令”窗口中的命令,尽快熟悉它们对以后的编程大有裨益。
心铃
猫猫的心里话
加菲猫的VFP|狐友会社群接收投稿啦
加菲猫的VFP,用VFP不局限VFP,用VFP混合一切。无论是VFP,还是JS,还是C,只要能混合起来,都可以发表。
商业模式,销售技巧、需求规划、产品设计的知识通通可以发表。
暂定千字50元红包,,优秀的文章红包更大,一经发表,红包到手。
如何帮助使用VFP的人?
用VFP的人,有专业的,有非专业了,很多人其实是小白,问出的问题是小白,如果问题不对,我们引导他们问正确的问题。无论如何请不要嘲笑他们说帮助都不看,这么简单的问题都不会,嘲笑别人不行,而无法提出建设性答案,是很low的。
我们无论工作需要,还是有自己的软件,都是是需要真正的知识,如何让更多人学习真正的VFP知识呢,只需要点赞,在看,能转发朋友圈就更好了。
加菲猫的vfp倡导用"VFP极简混合开发,少写代码、快速出活,用VFP,但不局限于VFP,各种语言混合开发"。
我已经带领一百多名会员成功掌到VFP的黑科技,进入了移动互联网时代,接下来我们要进入物联网领域。
2025年狐友会社群会员继续招募中
社群会员获取的权益有:
祺佑三层开发框架商业版(猫框),终身免费升级,终身技术支持。
开放的录播课程有:
微信小程序,微信公众号开发,H5 APP开发,Extjs BS开发,VFP面向对象进阶,VFP中间层开发。
源码类资源有:
支付组件源码,短信源码,权限组件源码,一些完整系统的源码。这个可以单独出售的,需要的可以联系我。
会员也可以实现群内资源对接,可以接分包,合作等各项商业或技术业务