VFP基础教程 第二章 VFP语言基础(精选7篇)
VFP基础教程 第二章 VFP语言基础 第1篇
2.1 程序设计概述
1. 程序设计方法简介
设计方法
主要概念
设计过程
程序执行方式
结构化程序设计 功能模块(即过程、自定义函数) 编制各个功能模块,再用主程序将它们串起来 将应用程序分解成若干功能模块,通过各模块的相互调用来完成整个执行过程,是过程驱动的,
面向对象程序设计 类、对象、属性、事件、方法 设计类、子类、对象(设计外观、设置属性、为事件编写方法程序) 将应用程序分解成具有特定属性的对象,通过调用各对象的不同方法来完成相关事件,是事件驱动的。
2.数据类型
VFP 包含下列数据类型:
通用的数据类型 字符型
Character
货币型
Currency
日期型
Date
日期时间型
DateTime
逻辑型
Logical
数值型
Numeric
仅用于字段的数据类型 双精度型
Double
浮点型
Float
整型
Integer
通用型
General
备注型
Memo
3. 数据容器
VFP中用来存储数据的容器有:常量、变量、数组、记录和对象。
(1) 常量(constants):
一个在操作过程中保持不变的数值或字符串。
常用的常量类型
常量类型
数值型常量
字符型常量
逻辑型常量
日期型常量
表示方式
-25.36
“abc”,“123”,“中国”
.T. .F.
{^/07/10}
(2)变量(variables):
是内存中的一个存储单元的位置,其中的内容可以变化,但标识该存储位置的名称(即变量名)不变。
变量的命名习惯: 类型变量代号
如:cStud 、nCj 、dCsrq ——
分别代表一个字符型、数值型、日期型的变量名
变量的赋值方式: 1) 用 STORE 命令 如:STORE “王兰” TO cStud
2) 用赋值操作符 = 如:cStud = “王兰”
变量的作用域: 即变量起使用的有效范围,
变量作用域
定义作用域的关键字
特点
局部变量
local variable(本地变量)
LOCAL 只能在一个函数或过程中被访问,其他过程或函数不能访问此变量的数据。当其所属程序停止运行时,局部变量将被释放。
私有变量
private variable
PRIVATE 私有变量在 VFP 中是默认的,不需要特殊的关键字定义。但是,如果在更高一级例程(routine)中已经有同名变量,可以用PRIVATE 关键字予以声明,以限定其范围。当定义此变量的例程结束时,此变量也被相应释放。可使用私有变量在被调用的函数中共享数据。
公共变量
public variable
PUBLIC 可用于所有过程和函数,而不限于定义该变量的过程和函数。可使用全局变量在多个过程或函数之间共享数据,在命令窗口中创建的任何变量自动具有全局属性。
变量的访问:
当变量和字段同名时,字段有优先被访问权。要在变量名前加 m. 或 m ->以示区别,如 m.cStud
(3)数组(array):
是存储在一个变量中由单个变量名引用的有序数据集合。在 VFP中,一个数组中的数据不必是同一种数据类型。常用的有一维数组,二维数组。
数组元素的标识:通过一个数值下标来引用,如 AA[2],AA[2,3]
数组类型的声明:
私有数组 ——用DECLARE 或 DIMENSION定义
全局数组 ——用PUBLIC命定义
局部数组 ——用LOCAL定义
数组元素的赋值:
用赋值语句: 如 AA=45
用SCATTER从当前记录中取特定字段的值赋给数组:
如: scatter fields xh, xm, xb to aa
(数组长度、类型自动与所给字段相同)
用 COPY TO ARRAY从当前记录中取所有字段的值赋给数组:
如: copy to array aa
(数组长度、类型自动与表中全部字段相同)
把数组中的数据传给当前表中的当前记录:
gather from 数组名 [fields 字段名表]
用数组向当前表添加记录:
append from array 数组名 [for 条件] [[fields 字段名表]
(用二维数组可以同时添加多条记录)
数组处理的常用函数:
排序SORT,搜索ASCAN(),删除ADEL(),插入AINS()
(4) 记录:
表中的一行,由字段组成。
(5) 对象:
对象是类的一个实例,类是对拥有数据和一定行为特征的对象集合的描述。VFP对象可以是表单、表单集、控件。
VFP基础教程 第二章 VFP语言基础 第2篇
在实际应用中,可以将查询结果用表单的列表框控件显示出来。例如,显示职工的编号,姓名及工资的信息
步骤:
1.新建表单,添加三个标签,caption属性分别设为“编号”,“姓名”,“工资”.再添加一个列表框控件list1,
2.将列表框控件list1的rowsourcetype属性设为3(即可用Sql语句选择数据项),再将其rowsource属性设为“select 编号,姓名,工资 from 职工档案”.另外,将list1的columncount属性设为3
3.保存并运行表单。
二。 视图:前面介绍的查询可以很方便的从表中检索出所需的数据,但不能修改所查出的数据。如果既要查询又要修改数据,可以使用视图。视图是数据库的一部分,与数据库表有很多相似的地方。视图是一个虚表,其中存放的是数据库表的定义。在大多数场合下,视图的作用等同于表,数据库表的特性,比如给字段设置标题等, 同样适用于视图。在VFP中,有两种类型的视图:本地视图和远程视图。本地视图能够更新存放在本地计算机上的表,远程视图能够更新存放在远程服务器上的表。
三。创建本地视图:
1.使用命令方式:可以用下列命令直接创建视图:
格式:create sql view 视图名 as select_sql语句
例如,创建视图zgda,选择“职工档案”表的全部信息,命令如下:
create sql zgda as select * from 职工档案
也可以使用已有的select_sql语句来创建视图,只要把select_sql语句存入一个变量,然后用宏替换在create sql view命令中调用即可
例如,上面创建视图的命令,可以改成下列的格式:
x=“select * from 职工档案”
create sql view zgda as &x
2.使用“视图设计器”创建视图的步骤如下
(1)启动“视图设计器”
(2)添加表或视图
(3)建立表间的关联
(4)选择字段
(5)筛选记录
(6)排序记录
(7)设置更新条件,
“视图设计器”的窗口与“查询设计器”窗口相类似,这里不再介绍。
四。使用“视图设计器”创建视图:
1.启动“视图设计器”:
(1)在项目管理器中选择“全部”或“数据”选项卡,选择“本地视图”,单击“新建”按钮,单出“新建本地视图”对话框,如图62
(2)在“新建本地视图”对话框中单击“新建视图”按钮,进入“视图设计器”窗口,与“查询设计器”窗口相比较,除了多了个“更新条件”选项卡之外,其他都是相同的。
2.添加表:步骤如下
(1)打开“视图设计器”窗口后,弹出“添加表或视图”对话框
(2)在该对话框中,选中要添加的表,单周“添加”
3.其余操作同查询
4.设置更新条件:在“更新条件”选项卡中,选中“发送SQL更新”复选框,并设置更新字段,即可使用视图更新基表中的数据
五。视图的使用:
1.视图的打开:
视图不作为单独的文件存在,是数据库的一部分。要打开视图,必须先打开数据库,格式如下:
open database 数据库名
use 视图名
browse
2.显示视图的结构:
如只需要打开视图并显示其结构,而不必下载数据时,可使用带nodata子句的use命令。对于远程视图,这个选项更有用。格式如下:
use 视图名 nodata
browse
3.关闭视图:公关闭视图,用下列命令:
select 视图名
use
关闭数据库中所有表和视图,用下列命令:
close tables
关闭数据库,则库中的表和视图也一起关闭:
VFP语言学习难点初探 第3篇
1 VFP知识几个难点
1.1 字符串比较
1.1.1 VFP中字符型数据进行比较
系统对字符串中的字符按从左到右的序对应进行比较,一旦发现两个对应字不同,则按它们的排序序列比较出两个符串的大小。在VFP中字符的排序序列有三种:1)machine(机器):西文字符按ASC值排序,中文的一级汉字按拼音次序排。2)PinYin(拼音):中文按拼音次序序,西文字符大写字母大于小写字母。3)Stroke(笔画):中、西文都按笔画多少排序。在中文VFP中,字符默认的排序序列为PinYin(拼音)。而其它许多高级语言按ASCII码来比较的。故在VF中默认情况下大写字母大于小小字母。“A”是大于“a”字符,要改变字符排序序列,可选用工具菜单/选项命令进行设置。
1.1.2 字符串精确比较
字符比较结果还受精确比较开关影响,可用SET EXCACT ON/OFF命令来打开或关闭。在默认情况下,比较两个字符串是否相等,VFP采用的不精确比较。当在不精确比较状态时,只要两个字符串满足下面两个条件结果就相等:一是两个字符串最左边的字符相同;二是第一个字符串长度大于或等于第二个的长度。根据规则可知:?"郑老师"="郑老",结果为.T.;而?"郑老"="郑老师",结果为.F.。同时要注意特别情况:空串“”包含于任何字符串中,且长度为0,所以?"ab"=""结果为.T.;?""="ab"结果为.F.。
1.1.3 字符串的模糊比较问题
字符串的模糊比较可用like()函数、$运算符、AT()函数等方法来解决。如姓名中含有“小”可以写成:“小”$姓名或AT(“小”,姓名>0来实现。而LIKE函的格式LIKE(cExpression1,cExpression2),其中cExpression1中可以包含通配符*和?。问号(?)可与任何单个字符相匹配,星号(*)可与任意数目的字符相匹配。只有在c Expression1与c Expression2中的字符逐个匹配的情况下,LIKE()函数才返回“真”(.T.)。如?like(“郑*”,姓名)是判断是否姓郑。但在SQL语句中的like运算符不能用在一般命令的for条件中,而通配符变为_和%,判断是否姓郑可写成:姓名like“郑%”。
1.2 变量的作用域问题
在VFP程序设计中,同一个变量名由于作用域不同变量有不同的作用域和生存期,因涉及的知识点比较多,使用的环境和场合也比较复杂,这对于初学者往往是一个不容易理解。的作用归纳起来,大致有三个方面:
1.2.1 变量的作用域
变量的作用域可用变LOCAL、PRIVATE、PUBUC命令强制规定作用域。LOCAL用于定义局部变量,局部变量只在本模块中有效;当建立它的模块程序运行结束时,局部变量自动释放。全局变量和局部变量初值为逻辑假。局部变量要先建立后使用。PRIVATE用于定义私有变量,变量的作用域为本模块中以及下级模块中有效;PUBUC用于定义全局变量,在本次程序运行期间,变量在所有模块中都有效。当大范围变量和小范围变量同名时,在小范围内,小范围变量优先。没经过申明的变量,约定为私有变量。下面的例子是来说明它们之间的关系。
在主程序中,k1,k2没经过说明,那么它是私有类型变量,在本模块及下级模块中有效,所以在子过程SUB中有效,但在SUB过程中重新显示定义K1,那么相当于定义了一个作用范围更小的小范围变量,它将屏蔽主程序中的K1的值,所以在SUB过程中输出为:30,40;而回到主程序输出为:10,40。
1.2.2 参数传递
考试中要求学生掌握的过程主要有Sub过程和Function过程。Sub过程不返回值,Function过程必须由函数名返回一个值。在调用过程时,主调过程的实参以一定的形式传递给被调过程的形参,完成实参与形参的结合,然后执行被调过程体。经过被调过程的处理,又将所得结果返回给主调过程。在VFP中,参数的传递有传值和传址两种形式。
1)传值方式
当调用一个过程时,将实参的值复制给形参,实参与形参断开联系。过程调用结束时,形参占用的存储单元被释放,因此对形参的任何操作都不会影响到实参。传值方式是“单向”的,形参的值不能返回给实参。
2)传地址方式
如果实参是常量或一般形式的表达式,系统会计算出实参的值,并把它们赋值给相应的形参变量。这种情形称为按值传递。如果实参是变量,那么传递的将不是变量的值,而是变量的地址。在模块程序中对形参变量值的改变,同样是对实参变量值的改变。这叫按引用传递。下面的例子是来说明它们之间的关系。
这个例子在主过程调用过程中的两个实参(A)和B,由于B是简单变量时,VFP在分配形参Y时和实参B共用内存单元(传地址),所以在子过程PP的变化将影响实参变量B,而形参X,由于实参不是简单变量,在分配形参时另外分配内存单元,所以A和X只是单向传值,没有关联,因此在主程序中输出为3,15。
1.2.3 内存变量和字段变量同名时
字段变量的类型是在建立表文件的结构时确定的,一旦定义了字段变量的类型,那么赋值的数据类与变量类型一致,由于改变时不能用运算"="和store语句直接赋值。内存变量是用内存单元存储的变量,它的类型与之比较就有一定的随意性,它只能保存最后一次更新的值。当内存变量和字段变量同名是,字段变量优先。但用"="和store语句改变的变量例外,如下例子:
设职员表已在当前工作区打开,当前记录的“姓名”字段值为“张三”;字段宽度为4,执行如下命令:
姓名=姓名+"你好"
?姓名
结果:“张三”,并不是“张三你好”因为当存在字段变量“姓名”时,字段变量优选,所以输出的是字段变量“姓名”的值,而字段变量不能使用“=”来改变其值,所以,姓名=姓名+“你好”语句改变的是内存变量“姓名”为字段变量姓名的值“张三"+"你好”,结果是“张三你好”,可用?m.姓名来输出内存变量的值。
2 结束语
VFP在学习过程中所遇到的难点不仅仅涉及到这些。本文的目的是通过对上述知识点难点的介绍,起到举一反三的效果,从而提高同学们学习这门语言的信心,增强在学习过程中解决问题的方法。
参考文献
[1]匡松,刘容.余平.Visual FoxPro面向对象程序设计[M].成都:西南交通大学出版社,2006.
[2]王瑛.数据库管理系统VFP的教学探索[J].天水师范学院学报,2005,(5).
VFP基础教程 第二章 VFP语言基础 第4篇
VFP基础教程 第二章 VFP语言基础 第5篇
(三)任课教师:黄平
贵州天力电脑技工学校
2012年10月贵州高等教育自学考试VFP应用基础模拟试卷
(三)一、选择题(本大题共18小题,每小题2分,共36分)。
1、语句DIME TT(4,5)定义的数组元素的个数是(B)
A、30B、20C、9D、45
2、设A=(1*2+3)
B=1*2+3 C=“1*2+3”
正确的表达式为(A)
A、A+BB、A+CC、B+CD、A+B+C
3、函数DATE(),TIME()类型分别是(C)A、D,DB、D,TC、D,CD、C,D4、当前记录号为3,将第六号记录设置为当前记录命令是(B)A、skip +6B、skip +3C、skip –6D、skip –
35、下列关于物理删除和逻辑删除表记录的说法,正确的是(D)A、物理删除表记录的命令是DELETE,逻辑删除表记录的命令是PACK B、逻辑删除表记录的命令ZAP,物理删除表记录的命令是PACK
C、物理删除只是在记录旁坐删除标记,可以恢复记录;逻辑删除是真正从表中删除记录,不能再恢复。
D、逻辑删除只是在记录旁坐删除标记,可以恢复记录;物理删除是真正从表中删除记录,不能再恢复。
6、下列叙述中正确的是(D)
A、当前记录为首记录时,EOF()为.T..eof()为.f.B、当前记录为首记录时,EOF()为.F..eof()为.T.C、当前记录为首记录时,EOF()为.T..eof()为.T.D、存在EOF(),BOF()同时为F 的情况
7、以下命令正确是(D)A、LOCA 出生日期 =10/10/1998 B、LOCA FOR 出生日期=10/10/1998 C、LOCAT for 出生日期=1998-10-10 D、LOCA FOR 出生日期={^1998-10-10}
8、关于属性,正确的是(B)
A、只是对象的内部特征B、是对象的固有特性
C、是对象的外部特征D、属性是对象的固有的方法
9、表单程序中,关于编写事件代码,错误的描述是(A)A、就是编写.PRG程序,文件名为事件名 B、将代码写入该对象的该事件过程中 C、可以从父类中继承
—本试卷共4页,当前是第1页—
D、属性窗口的代码卡片中选择该对象的事件双击,再打开的事件代码窗口中输入代码
10、在面向对象程序设计中,对象所具有的特性不包括(C)A、继承性B、封装性C、完整性D、多态性
11、关系数据库管理系统的三种基本运算是(A)A、选择,投影,联接B、自制,剪切与粘贴 C、录入,修改与删除D、统计,分类与替换
12、关系数据库管理系统所管理的关系是(B)A、一个DBF文件B、若干个二维表 C、若干个DBF 文件D、以上说法都不对
13、在SELECT 语句中,(B)子句后可能带有HAVING短语 A、ORDERB、GROUPC、WHERED、SELSCT14、在SELECT 语句中,如果要对输出的记录进行排序,应选择使用(A)项。A、ORDERB、GROUPC、HAVINGD、TOP
15、在下列函数中,函数值为数值的是(A)A、AT(‘人民’,‘中华人民共和国‘)B、CTOD(’01/01/96‘)C、BOF()D、SUBS(DTOC(DATE()),7)
16、向项目中添加表单,应该使用项目管理器的(D)A、代码选项卡 B、类选项卡 C、数据选项卡D、文档选项卡
17、常见的数据模型有(C)
A、大型、中型和小型B、西文、中文和兼容 C、层次、网状和关系D、数据、图形和多媒体
18、顺序执行下列命令之后,屏幕显示的结果是(B)STORE “Visual FoxPro” to tt ?UPPER(RIGHT(TT,3))
A、VISUAL FOXPROB、PROC、ProD、VIS
二、填空题(本大题共20小题,每小题2分,共40分)。
19、表达式STUFF(“GOODBOY”,5,3,“GIRL”)的运算结果是____GOODGIRL____ 20、在VISUAL FOXPRO中,参照完整性规则包括更新规则、删除规则和___插入___规则
21、在VISUAL FOXPRO中,CTREATE DATABASE命令创建一个扩展名为___.dbc___的数据库文件。
22、在VISUALFOXPRO中,建立索引的作用之一是提高____查询____速度
23、我们把表中的行称为___元组___,列称为字段。
24、设N1=20,N2=“N1”,则?&N2+N1的结果是___40___
25、在VFP中视图可以分为本地视图和___远程视图___
26、程序文件默认的扩展名为_____.prg_____
—本试卷共4页,当前是第2页—
VFP教程 七、 表单设计 第6篇
1.名词解释
表单:
即用户与计算机进行交流的一种屏幕界面,用于数据的显示、输入、修改,
VFP教程 七、 表单设计
。该界面可以自行设计和定义,是一种容器类,可包括多个控件(或称对象)。
表单集:
可包含一张或多张表单的容器。
数据环境:
在打开或修改一个表单或报表时需要打开的全部表、视图和关系。它以窗口形式(类似于数据库设计器)反映出与表单有关的表、视图、表之间关系等内容。可以用数据环境设计器来创建和修改表单的数据环境。
2.表单设计界面
主要包括: 表单向导、表单设计器、 表单设计器工具栏、 表单控件工具栏、 属性窗口
3.表单设计中常用的属性、事件与方法介绍
属性、事件、方法
说明
默认值
AlwaysOnTop属性控制表单是否总是处在其他打开窗口之上假(.F.)AutoCenter属性控制表单初始化时是否让表单自动地在Visual FoxPro主窗口中居中假(.F.)BackColor属性决定表单窗口的颜色255,255,255BorderStyle属性决定表单是否有边框,若有边框,是单线边框、双线边框,还是系统边框,
电脑资料
VFP基础教程 第二章 VFP语言基础 第7篇
在开发应用程序时,首先应进行系统环境规划,规划中要考虑的因素有:应用程序所面向的用户及其可能需要的各种操作、数据库规模、系统工作平台(单用户或是网络)、程序要处理的数据类型(是本地数据还是远程数据)等,
VFP教程 十一、 应用程序开发
。规划完成之后,即可利用项目管理器来进行每一步开发,它可以帮助管理开发过程中的所有文件,并最终连编成应用程序。应用程序的开发步骤大致如下图所示:
1. 数据库结构设计
2. 系统功能模块设计
3. 菜单设计
4. 用户界面设计
5. 查询设计
6. 报表设计
7. 系统维护设计
8. 系统模块调试
9. 用项目管理器连编成应用程序
11.2 优化应用程序的技巧
1. 优化表和索引
(1) 如果没有启用记录或表缓冲,应该使用INSERT-SQL命令(因索引只需更新一次),而不要使用APPEND BLANK 命令后再使用REPLACE;
(2) 当需要将大量记录追加到索引过的表中时,应先取消或关闭索引,在数据追加完毕,再重建索引,这样速度会快些;
(3) 在SQL语句中要尽量避免函数调用;
(4) 如果需要经常使用某种索引顺序,应周期性使用此索引对表进行排序,提高表的性能;
(5) 在多用户环境中,使用CDX 索引文件比 IDX 索引文件快。
2. 使用Rushmore 技术加速数据访问
使用 Rushmore 技术可以显著地提高查询的速度,
电脑资料
Rushmore 是一种从表中快速地选取记录集的技术,它可将查询响应时间从数小时或数分钟降低到数秒。访问单表时,使用 FOR 子句,访问多表时,使用SELECT-SQL 查询,可自动隐含地使用该技术。
(1)访问单个表中的数据,使用一个FOR子句;
(2)访问多个表中的数据,使用SELECT-SQL、DELETE-SQL、UPDATE-SQL命令。
3. 优化表单和控件
(1) 使用数据环境;
(2)在表单集里限制表单数目;
(3)在页框中动态加载页面控件;
(4)动态绑定控件与数据;
(5)当必须对屏幕进行多处更改时,延迟屏幕刷新;
(6)在经常使用的方法程序中减少代码。
4. 提高VFP程序性能的一般技巧
(1)数据要选择正确的数据类型
(2)避免重复打开文件,需要打开多个文件时,将它们分配给不同的工作区,需要时使用SELECT命令选择工作区;
(3)尽量使用FOR…ENDFOR循环,而不要使用DO WHILE…ENDDO循环,因为FOR循环较快;
(4)从多个字段复制数据时,用SCATTER TO ARRAY 比用SCATTER MEMVER快;
(5)为了有效的使用内存,避免在需要对象之前就创建它们,当不要该对象时应及时清除它;
(6)尽量将输出发送到顶层窗口,速度快些;
(7)使用SET TALK OFF命令取消状态显示,可节省屏幕顶端更新时间;
(8)将SET DOHISTORY 设置为OFF,避免当运行程序时每次都更新命令窗口;
(9)使用名称表达式代替宏替换,因为名称表达式更快;
(10)有效地引用对象属性:
·优化对属性的重复引用,可将属性值保存到一个变量中,再进行更改,在完成时一次性的设置属性;