VFP笔试复习资料 65页

  • 225.00 KB
  • 2022-07-30 发布

VFP笔试复习资料

  • 65页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档由用户上传,淘文库整理发布,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,请立即联系网站客服。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细阅读内容确认后进行付费下载。
  4. 网站客服QQ:403074932
第1章数据库系统及VFP概述一、关系和关系模型●数据库系统(DBS)由数据库(DB)、数据库管理员(DBA)和有关软件组成。PS:数据库管理系统缩写:DBMS●数据库系统的特点:①采用数据模型表示复杂的数据结构。(数据冗余减少,可实现数据共享)②有较高的数据独立性。③提供了数据安全性、完整性等控制功能,以及对数据操作的并发控制、数据的备份与恢复等功能。④为用户提供了方便的用户接口。1.数据模型的种类层次模型、网络(状)模型、关系模型2.关系模型(1)关系是以二维表结构来表示实体集及其实体间的联系。一个关系就是一张二维表。(2)E-R模型(“实体-联系”模型)及其三个基本属性:实体、联系、属性关系模型是用二维表格的结构形式来表示实体间的联系。二维表中的列称为字段(关系中称“属性”);行称为记录(关系中称“元组”);一张二维表称为一个关系(实体间的联系)。关系模型通过一系列的关系模式来表述数据的结构和属性,它一般有三个组成部分:数据结构、65\n数据操作、完整性规则。(3)关系的规范化(参见P8)关系规范化的条件可以分为几级,每级称为一个范式(nNF)。实际设计关系模式时,一般要求满足3NF。3.关系运算▲传统的集合运算:并、交、差▲专门的关系运算:选择、投影、联接二、关键字1.关键字的种类超关键字、候选关键字、主关键字、外部关键字超关键字、候选关键字、主关键字均能惟一确定一条记录;外部关键字不一定能惟一确定一条记录。三、VFP概述VFP是一种关系型数据模型。1.VFP的文件类型(参见P19)在创建某类文件时,在磁盘上实际生成的文件数目。2.项目管理器项目管理器是VFP的控制中心。65\n有关项目管理器的叙述:同一个文件可以同时属于多个项目;可以从项目中把文件移去或删除;项目中文件的包含与排除;在项目中建立文件等。四、例题:1.二维表中能唯一确定记录的一列或多列的组合称为超关键字。若一个超关键字去掉其中任何一个列后不再能唯一确定记录,则称其为______。2.从数据模型看,VFP属于______型数据库管理系统。3.数据库中的数据按一定的数据模型组织、描述和储存,具有较小的______、较高的数据独立性和易扩展性,并可以供各种用户共享。4.关系模型是用______的形式来表示实体及实体间的关系的。5.在VFP系统中,如果要打开一个项目文件,应使用的命令是______。6.长期以来,在数据库设计中广泛使用的概念模型当属“实体-联系”模型(简称E-R模型)。E-R模型中有3个基本的抽象概念,它们分别是__数据结构数据操作完整性规则____、______和______。7.在VFP的集成操作环境中,对于比较长的命令,在“命令”窗口和程序中可以利用______以实现换行输入。8.创建并保存一个项目后,系统会在磁盘上生成两个文件,这两个文件的文件扩展名分别是___PJXPJT65\n___和______。9.数据库按数据模型可分为层次数据库、网络数据库______、关系数据库______和______等。10.概念模型常用______表示。11.关系是以______结构来表示实体集及其实体间的联系。12.关系规范化的条件可以分为若干级,每一级称为一个______。13.根据给定的联接条件将两个关系模式拼成一个新的关系,称为______运算。14.在项目管理器的某个选项卡中,若某类型数据项有一个或多个数据项,则单击______符号可折叠展开的列表。15.数据模型不仅表示反映事物本身的数据,而且表示______。16.二维表中的列称为关系的______;二维表中的行称为关系的______。17.在关系数据库的基本操作中,从表中取出满足条件元组的操作称为______;根据给定的联接条件把两个关系模式拼成一个新的二维表的操作称为______;从表中抽取若干个属性组成新的表的操作称为______。18.VFP不允许在主关键字字段中有重复值和______。65\n19.在VFP中,关闭所有的文件并结束当前VFP系统运行的命令是______。20.数据库通常包括两部分内容:一是按一定的数据模型组织并实际存储的所有应用所需的数据;二是存放在数据字典中的各种描述信息,这些描述信息通常称为______。65\n第2章VFP语言基础一、VFP的数据类型1.VFP名称命名规则(P27)2.VFP数据类型▲数据和字段的数据类型(包括在表中所占空间的大小)P25▲备注型和通用型数据只能在表中使用,其在表中占4个字节,用于建立一个引用。其数据内容存储于一个与表文件名相同、扩展名为.fpt的文件(表备注文件)之中。(1)6种常量的表示方法▲字符型常量的3种定界符▲日期型常量的定界符及2种格式(传统的和严格的日期格式)、命令SETSTRICTDATETO的参数(P28)▲逻辑型常量的定界符▲货币型常量的表示(2)变量▲字段名变量和内存变量内存变量的数据类型、内存变量与字段名变量同名时的访问优先级别、内存变量的赋值、内存变量文件的使用(SAVE)与恢复(RESTORE)。▲数组65\n数组的声明、数组的赋值(数组元素的赋值和数组名的赋值)、数组的引用(数组元素的引用和数组名的引用)、以一维数组的形式对二维数组的引用。▲内存变量/数组的生存期与作用域全局变量、私有变量、局部变量(PUBLIC、PRIVATE、LOCAL)二、运算符1.各种运算符及运算级别▲字符运算符:+、-、$▲算术运算符:+、-、*、/、%、**(^)▲日期运算符:+、-▲逻辑运算符:NOT与!、AND、OR(运算的级别)▲关系运算符:<、>、<=、>=、=、==2.字符型数据比较大小▲字符的排列顺序(拼音、笔画、机器)▲比较字符型数据的大小(SETEXACTON/OFF)三、函数各个常用函数的函数名称、函数的功能、语法格式、函数参数的数目、各参数的数据类型及其含义、函数返回值的数据类型。(1)数值型函数:ROUND()ABS()MOD()65\nSQRT()MAX()MIN()RAND()INT()(2)字符型函数:ALLTRIM()LEFT()RIGHT()SPACE()SUBSTR()LEN()AT()与ATC()(3)日期型函数:DATE()DATETIME()YEAR()MONTH()DOW()DAY()(4)数据转换函数:ASC()CHR()VAL()STR()CTOD()DTOC()注:26个英文字母(大小写)、空格符、换行符的ASCII值。(5)其它类型函数IIF()TYPE()BETWEEN()ISNULL()EMPTY()ISBLANK()MESSAGEBOX()(6)数据库、表、记录函数:BOF()EOF()RECCOUNT()RECNO()FCOUNT()SELECT()DBC()USED()DBUSED()65\nDELETED()FOUND()DBGETPROP()DBSETPROP()四、表达式(1)名称表达式和宏替换的作用(P49以宏替换为主)(2)判断表达式的值注意几个问题:▲函数嵌套时,表达式的值的确定。▲不同类型的数据在运算时必须先进行数据类型的转换(索引表达式)。▲逻辑表达式的值的确定,特别要注意含NULL值时的运算。五、NULL处理1.NULL的特点:▲等价于没有任何值▲与0、空字符串及空格不同;▲排序优先于其它数据;▲在计算过程中或大多数函数中都可以用到NULL值;▲NULL值会影响命令、函数逻辑表达式和参数的行为。空值的输入方法:Ctrl+02.NULL值在表达式中的作用▲数值表达式中含有NULL数据,则其返回值为NULL;65\n▲日期表达式中含有NULL数据,其返回值也为NULL;▲逻辑表达式中含有NULL数据,则其大部分返回值为NULL;▲如果条件表达式的返回值为NULL,则被当作“假”看待(因NULL为非“真”),但在整个表达式的计算过程中,空值仍被看作NULL,直到整个表达式都被计算为止。(P50~51)3.EMPTY()、ISBLANK()、ISNULL()三个函数的比较:▲当内存变量或字段值是空格或空字符串时,函数EMPTY()和ISBLANK()的返回值为T;函数EMPTY()对于0的返回值为T,ISBLANK()对0的返回值为F;而函数ISNULL()对这些数据的返回值均为F。▲变量或字段值是NULL时,函数EMPTY()和ISBLANK()的返回值均为F;而ISNULL()返回值为T。3.NULL不是一种数据类型,给变量赋NULL值时改变了它的值,但并不改变它的数据类型(注意:变量一开始即赋于NULL值时的数据类型)。六、程序设计65\nVFP的程序文件扩展名为.prg,运行程序文件的命令是:DO程序文件名注:DO命令可执行的文件(命令文件、查询文件、菜单文件、表单文件)。1.程序结构程序程序结构主要有3种类型:顺序结构、分支结构和循环结构。(1)顺序结构按照顺序依次执行程序中的命令。(2)条件分支IF…ELSE…ENDIFDOCASE……ENDCASE(3)循环结构FOR……ENDFORDOWHILE……ENDDOSCAN……ENDSCAN与循环相关的两条命令:EXITLOOP注意:①语句的结构和语法。②程序的走向。65\n③SCAN…ENDSCAN结构中,SKIP语句对程序运行结果的影响。④条件语句FOR和WHILE之间的区别。注:①用双分支与多分支处理编程与程序填空;②用FOR循环与DOWHILE循环处理结构化编程;③用SCAN循环处理表中记录(注意FOR条件与WHILE条件的不同)。(4)输出语句▲?和??▲WAITWINDOW(其后为一个字符型表达式)命令的使用2.自定义函数和自定义过程P57(1)自定义函数和自定义过程的定义▲FUNCTION……ENDFUNC▲PROCEDURE……ENDPROC(2)自定义函数和自定义过程的调用方式▲利用函数名▲DO命令(3)参数的传递▲形参与实参的关系:个数和数据类型必须一致。▲参数的2种传递方式:引用传递、值传递P60▲传递方式的设定65\n☆系统默认的传递方式:函数是值传递;过程是引用传递☆命令设置传递的方式:SETUDFPARAMSTOVALUE|REFERENDE()与@(4)参数的接收PARAMETERS命令(函数或过程结构中的第一句语句)(5)函数运行后的数值返回RETURN(缺省时返回逻辑真)七、与阅读程序和编写程序的相关问题①编程题:形式:求数列前n项(或其它限制)之和或满足某种条件的数值。实现方法:运用循环结构(FOR……ENDFOR、DO……ENDDO)与嵌套的分支结构。注:数列计算的关键是写出其通项公式②阅读程序写结果综合运用分支与循环语句(包括SCAN循环)的嵌套结构及用户自定义过程、自定义函数等处理阅读程序写结果。例题:65\n(一)写出表达式的值1.(-12%-5)^32.ROUND(1234.56,-2)3.IIF(.T.ANDNULL,2+3,"你好")4.LEN(ALLT("南京"+SPACE(2)–"财经"))5.(ABS(VAL("2e4ab")/10-YEAR({^2008/10/10}))(二)读程序写结果1.s=0FORi=1TO10STEP2IF(i/3)=INT(i/3)LOOPENDIFs=s+iENDIF?s,i程序运行结束时,s的值是______,i的值是______。2.DIMENSIONA(8)A(1)=1A(2)=1i=3DOWHILEi<=6A(i)=A(i–1)+A(i–2)65\ni=i+1ENDDOFOFi=1TO6??A(i)ENDFOR程序运行结束时,输出的结果是。3.已知cj表中含有如下表所示的3条记录:xhkcdmcj95010101889501020285950101035095010204829501020170现运行以下程序:CLOSEALLUSEcjs=0cnt=0SCANFORcj>=60IFcj>=80s=s+1ENDIF65\ncnt=cnt+cjSKIPENDSCAN?s,cnt程序运行结束时,s的值是,cnt的值是。4.在某教学管理数据库中,有一个成绩表(cj.dbf),其表结构及所含的记录如下表所示。成绩表(cj.dbf)结构成绩表的(cj.dbf)记录内容字段名数据类型字段含义xhkcdhcjxhkcdhcjxhC,6学号01020101780102020280kcdhC,2课程代号01020102820103010180CJN,3成绩0102010380010301038501020203700103010678010202045865\n执行下列程序:CLOSETABLESALLUSEcj;nSum=0nAvg=0n=0k=RECCOUNTFORi=1TOkIFkcdh="03"nSum=nSum+cjn=n+1ELSEnAvg=nAvg+cjENDIFSKIPENDFORnAvg=nAvg/(k–n)?nSum,nAvg程序运行结束时,nSum的值是、nVag的值是______。5.?straa("www南京NJUE财经EDU大学网站cn",0,0)65\nFUNCTIONstraaPARAcstr,m,nFORi=1TOLEN(cstr)aa=ASC(SUBSTR(cstr,i))IFaa>127n=n+1i=i+1ELSEm=m+1ENDIFENDFORRETURN"m="+STR(m,3)+SPACE(3)+"n="+"STR(n,3)ENDFUNC程序运行结束时,VFP主窗口显示m=______、n=______。(三)填空题1.完善下列程序,此程序的功能是统计一个由ABCDEF六个大写英文字母所组成的字符串中各种字母的个数。CLEARcstr="BCDDEFABDFABDFE"STORE0TOna,nb,nc,nd,ne,nfDOWHILELEN(cstr)>065\nc=LEFT(cstr,1)n&c=______cstr=______ENDDO?na,nb,nc,nd,ne,nf2.下列程序运行后,a的值为______,b的值为______。CLEARa=27b=0IFINT(a/3)=a/3b=MOD(a,5)a=a+8ENDIFIFINT(a/5)=a/5b=MOD(a,-4)ENDIF?a,b3.若变量a的值为27,则a%5的值为______,MOD(a,-5)的值为______。4.用______定义全局变量,用______定义私有变量,用______定义局部变量。5.名称表达式是用圆括弧括起来的______型表达式,在命令和函数中使用它可以替代一个名称。65\n6.程序清单如下:IFX>0Y=1ELSEIFX=0Y=0ELSEY=-1ENDIFENDIF上面程序段的功能是根据数值型变量X的取值范围不同,给变量Y赋不同的值。该程序段的多条命令可以简化为一条命令。该命令如下所示,请补充完整。Y=IIF(X>0,______,______)7.在"命令"窗口中创建的任何变量或数组都被自动赋予______属性。8.在系统默认情况下,系统通过______将参数传递给自定义函数,通过______将参数传递给过程。65\n第3章表的创建与使用一、表的结构1.表的结构(1)基本概念表中的列称字段(Field),它规定了数据的特征(属性)。表中的行称记录(Record),每一条记录表示一个实体。记录是多个字段的集合。表结构的定义主要是指定表的字段及其属性,即:字段名、字段的数据类型、字段宽度等。(2)表中字段的数据类型在VFP中,某些字段的宽度是固定的:▲日期型、日期时间型、货币型为8个字节;▲备注型、通用型、整型为4个字节;▲逻辑型为1个字节;对于含有备注型和通用型字段的表来说,系统会自动生成一个相应的备注文件,用于存储备注内容。备注文件的主文件名与表文件名相同,扩展名为.fpt。在表的备注字段中,仅存储引用信息,指向备注文件中的备注内容。▲仅数值型字段需要设置小数位数。字段的宽度为(整数部分包括正负号):整数部分宽度+1(小数点)+小数部分宽度65\n2.表结构的创建▲利用表设计器创建表的结构▲CREATETABLE-SQL命令创建表的结构(P66)CRETETABLE/DBF表文件名[FREE];(字段名1字段类型[(宽度[,小数位数])];[NULL|NOTNULL][,字段名2字段类型…]…)3.表结构的修改▲格式1:ALTERTABLE表文件名ADD|ALTER[COLUMN];字段名字段类型[(段宽度[,数位数])];[NULL|NOTNULL]▲格式2:ALTERTABLE表文件名RENAME[COLUMN];原字段名TO新字段名▲格式3:ALTERTABLE表文件名DROP[COLUMN]字段名二、表的使用1.表的打开与关闭65\n(1)表的打开:▲表的独占和共享SETEXCLUSIVEON/OFF▲在指定的工作区打开表USE表文件名IN工作区号/0(2)表的关闭▲USE关闭当前工作区中表▲USEIN别名/工作区号关闭指定工作区中表▲CLOSETABLES[ALL]关闭所有打开数据库中的所有表▲CLOSEDATABASES[ALL]关闭当前数据库和表▲CLOSEALL关闭所有工作区中打开的数据库、表和索引,并选择工作区1▲CLEARALL从内存中释放所有内存变量、数组以及自定义菜单、窗口等QUIT退出所有VFP文件都将被关闭(3)工作区的选择▲表的工作区编号▲表的别名的使用▲SELECT命令SELECT别名/工作区号65\n注意:SELECT命令与SELECT()函数的区别。2.表的编辑(1)插入记录▲INSERT-SQL命令INSERTINTO表文件名[(字段名1[,…])];VALUES(表达式1[,…])▲APPEND命令APPEND[BLANK]APPENDFROM表文件名注:备注型字段数据的输入:Ctrl+Home(2)表的浏览BROWSE[FIELDS字段名表][FOR逻辑表达式];[FREEZE字段名表][NOAPPEND][NODELETE];[NOMODIFY][TITLE字符表达式]如果仅显示满足某一条件的记录,则可以在命令中使用FOR条件子句,或用命令:SETFILTERTO条件表达式注意:65\n此命令不会限制SELECT-SQL、DELETE-SQL、UPDATE-SQL命令对表中记录的访问。如果仅显示某一部分字段,应使用命令:SETFIELDTO字段名列表(3)记录的定位▲记录的定位有绝对定位、相对定位和条件定位。GOTOP、GOBOTTOM、GOn是绝对定位命令;SKIP是相对定位命令;LOCATEFOR是条件定位命令。注意:☆GOTOP与GO1☆GOBOTTOM与GORECCOUNT()▲记录的定位涉及到:记录指针、记录开始标志、记录结束标志。记录指针的测试函数:BOF()、EOF()、RECNO()☆表文件刚打开时,记录指针指向表中的第1条记录,RECNO()函数的返回值为1;函数BOF()的返回值为.F.;执行SKIP–1的命令后,BOF()的返回值为.T.,RECNO()函数的返回值为1。☆记录指针指向末记录时,EOF()的返回值是.F.;执行SKIP命令后,EOF()的返回值是.T.,RECNO()函数的返回值为记录总数加1。☆当打开一个空表(无记录的表)时,函数BOF()和EOF()的返回值均为.T.65\n,函数RECNO()的返回值为1。☆RECNO()函数的最小值是1,不可能为0或负数,最大值是表中记录总数加1。▲在界面操作时,作用范围有4种选择:☆All表中全部记录☆Nextn从当前记录开始的n条记录☆Recordn仅指记录号为n的记录☆Rest从当前记录开始至表末尾的记录(4)修改记录▲UPDATE-SQL命令UPDATE表文件名SET字段1=表达式1[,…];[WHERE条件表达式]▲REPLACE命令(5)删除记录▲逻辑删除☆DELETE-SQL命令DELETEFROM表文件名[WHERE条件表达式]☆DELETE命令▲物理删除PACKZAP65\n▲对带有删除标记记录的访问:SETDELETEDON|OFF默认值为OFF,允许访问带有删除标记的记录;ON忽略标有逻辑删除标记的记录。3.数据的复制COPYTO4.数据的统计SUM字段名列表[范围][FOR条件][TO内存变量名]COUNT[范围][FOR条件][TO内存变量名]AVERAGE字段名列表[范围][FOR条件][TO内存变量名]三、表的索引记录的物理顺序与逻辑顺序(排序和索引)1.索引的类型▲主索引仅用于数据库表中,每张表仅有一个主索引;组成主索引关键字的值在表中是唯一的;▲候选索引可用于数据库表和自由表,每张表可有多个候选索引;组成候选索引的关键字的值在表中是唯一的;▲普通索引65\n可用于数据库表和自由表,每张表可有多个普通索引;组成普通索引的关键字的值在表中不是唯一的,允许有重复值;▲唯一索引可用于数据库表和自由表,每张表可有多个唯一索引;组成唯一索引的关键字的值在表中允许有重复值,但是在索引对照表上,具有重复值的记录仅存储其中的第一个。(2)索引文件类型▲结构复合索引文件其文件名与对应的表文件名相同,扩展名为CDX;结构复合索引文件与表文件同步打开、更新和关闭;结构复合索引文件中可以含有所有类型的索引(自由表的结构复合索引文件不含有主索引);结构复合索引文件的创建既可以是界面的,也可以用INDEX命令创建(命令中无OF子句);▲非结构复合索引文件其文件名由用户自定义,扩展名也是CDX;非结构复合索引文件不会随表文件的打开而打开;非结构复合索引文件的创建,必须要用命令INDEX命令(带有OF子句);▲独立索引文件65\n独立索引文件的扩展名为IDX,其文件名由用户自定义;与非结构复合索引文件相同,独立索引文件不会随表文件的打开而打开;独立索引文件中,无索引类型的区别;独立索引文件由INDEX命令创建(文件名由TO子句给出)。注:不同索引文件的扩展名;索引文件的打开和关闭与表的打开和关闭之间的关系。(3)主控索引▲主控索引的含义无论何种类型的索引,均可设置为主控索引。▲主控索引的设置:打开表文件时,设置主控索引P87打开表后再指定主控索引SETORDERTO(4)索引的创建和使用▲创建索引的命令INDEXON(参见P86)注意:☆不能作为索引表达式的字段的数据类型。☆建立“多字段”索引表达式时,字段的数据类型不相同或同为数值型字段时的处理方法;索引表达式中日期型字段转换为字符型数据时的参数1的作用。☆用INDEX命令所建索引时,索引类型的指定(教材P86)。65\n☆建立主控索引后,浏览表时的记录顺序。▲索引的使用主要用于快速查找:SEEK命令(5)区分几个概念▲索引类型和索引文件类型▲主索引和主控索引例题:1.若已经为在当前工作区中打开的表设置了主控索引,将记录指针移动到物理顺序的第一条记录,所用的命令为GOTO1,而将记录指针移动到逻辑顺序的首记录,所使用的命令为______。2.在js表中要按如下要求更改基本工资(jbgz):工龄(gl)在10年以下(不含10年)的基本工资增加100元工龄(gl)在10年至19年(含19年)的基本工资增加200元工龄(gl)在20年以上(含20年)的基本工资增加500元可用一条UPDATE命令完成上述更改,即:UPDATEjsSETJBGZ=IIF(js.gl<10,______,;IIF______,jbgz+500,jbgz+65\n200))3.已知成绩表(cj.dbf)中包括xh字段(学号,C型)、sxcj(数学成绩,N型)、jsjcj(计算机成绩,N型),并且已建立了1个按降序排序的结构复合索引,其索引名为cj1、索引表达式为sxcj+jsjcj。该表中含有如下所示的3条记录。xhsxcjjsjcj200185732002928120038087若在命令窗口中执行如下两条命令:USEcjORDERTAGcj1BROWSE则在浏览窗口中,学号为“2001”的记录在第______行显示;而首记录的学号是______。4.彻底删除表中部分记录需要分两个步骤来实现:首先是作______删除,即用DELETE或DELETE-SQL命令给需要删除的记录加注删除标记;然后在第一步的基础上用______命令将彻底删除带删除标记的记录。5.在JS表中有以下字段:基本工资(JBGZN(7,2))、工龄(GLN(2))、职称(ZCC(10)65\n)。要求将职称为教授或工龄在20年以上(包括20年)的教师的基本工资增加50元,可用一个UPDATE命令完成上述更改。该命令如下所示:UPDATEJS______JBGZ=JBGZ+50WHERE______6.执行以下程序段:CLOSETABLEALLUSEXSSELECT3USEJSUSEKCIN0BROWSE程序运行后,浏览窗口中显示______表的记录、当前工作区号是______。7.要为学生表创建一个索引,要求先根据出生日期(CSRQD)排序,出生日期相同时,再按学号(XHC(10))排序,则其索引表达式应该是______。8.表的索引文件有3种类型,其中______索引文件会随表的打开而自动打开,其索引文件的文件名为______,扩展名为______。9.要在xs(学生)表结构中删除csrq字段,则相应的操作命令为:ALTERTABLExs_______10.在打开了js表后,再次用命令USEjsIN2065\nAGAIN打开js表。则第二次打开的js表的别名为______。11.命令USExsIN2执行后,若仅用一条命令来关闭该表,则该命令为______。12.以下程序执行后,SELECT(0)的返回值是______,SELECT("xs")的返回值是______。CLOSEALLSELECT10USEjsIN0USExsIN013.如果要彻底删除表中带有删除标志的记录,可以使用命令______,不过在该命令执行之前,必须将表用______方式打开。65\n第4章数据库的创建与使用一、数据库创建一个新的数据库都将生成三个文件:数据库文件(.dbc)、数据库备注文件(.dct)和数据库索引文件(.dcx)。1.数据库的组成数据库表(包括数据库表之间的关系)、视图、连接、存储过程。2.数据库与数据库表之间的双向链接它们之间的双向链接包括:前链(存储于数据库文件中)和后链(存储在数据库表文件中)。前链意外丢失后,可以由FREE命令删除表的后链,使它成为一张自由表。数据库表成为自由表后数据库表的扩展属性将全部丢失。3.数据库的创建与使用▲创建数据库▲打开与关闭数据库(命令操作)▲数据库的打开/关闭与数据库表的打开/关闭的关系。4.数据字典存储在数据库中用于描述所管理的表和对象的数据,即关于数据的数据。65\n二、数据库表1.数据库表的字段扩展属性(1)字段的显示属性字段格式、输入掩码、字段的标题(2)字段的有效性规则字段的有效性规则仅涉及该字段的值。在改变字段的值,且光标离开字段或关闭表时进行字段有效性规则的检验。(3)字段的默认值和默认控件类2.数据库表的表扩展属性(1)长表名与表注释(2)记录有效性规则及有效性信息▲记录有效性规则涉及多个字段的值。在改变字段的值,且光标离开记录或关闭表时进行记录的有效性规则检验。注:数据库表的以上所述扩展属性的命令设置方法(CREATETABLE、ALTERTABLE命令)。(3)表的触发器▲触发器是绑定在表上的逻辑表达式,当表中的任何记录被指定的操作命令修改时,在进行了其它所有检查之后被激活。触发器返回值为T时允许执行相应的操作,否则不允许执行相应的操作。65\n▲触发器的种类(插入、更新与删除触发器)▲触发器的设置命令:CREATETRIGGER(P102)注:要求能根据给定的要求正确写出触发器的逻辑表达式。3.函数DBGETPROP()和DBSETPROP()的使用包括:函数的功能、语法格式、参数的作用与选择。(P110)注意:DBSETPROP()函数能够设置的属性名是有限的。三、数据库表之间的永久关系与参照完整性1.表之间的关系类型表之间的关系种类有:一对一、一对多、多对多。多对多的关系应该由第三张表转化为两个一对多关系。2.数据库表之间的永久关系永久关系是在数据库表之间的一种关系,这种关系不仅在运行时存在,而且一直保持。数据库表之间的永久关系是根据表的索引建立的。索引的类型决定了要创建的永久关系的类型。(P107)65\n数据库表之间的永久关系的作用:建立数据库表之间的参照完整性、作为两张表联接时的默认联接条件。3.相关表之间的参照完整性▲相关表之间的参照完整性规则是建立在永久关系基础上的,它用于控制数据的一致性,尤其是控制数据库相关表之间的主关键字和外部关键字之间数据一致性的规则。参照完整性规则设置在主表或子表的触发器中,规则代码被保存在数据库的存储过程中。▲数据一致性须满足的3个规则(P108)——不产生孤立记录。▲参照完整性规则包括:更新规则(级联、限制、忽略)、删除规则(级联、限制、忽略)和插入规则(限制、忽略)注意:☆更新、删除、插入规则的激活时机。☆级联、限制、忽略三种设置在不同规则中的含义。P109☆这三种规则与三种触发器之间的区别。4.VFP的数据完整性综述三类完整性:实体完整性、参照完整性、用户自定义完整性。实体的完整性包括两级:字段的数据完整性和记录的数据完整性。65\n通过字段级、记录级和表间三级完整性约束,有效地实现了数据的完整性和一致性。例题:1.若当前数据库内有一个名为xs的表,且表中有一个名为xm的字段,则利用DBSETPROP()函数设置该字段的标题属性为“姓名”的命令为:=DBSETPROP("xs.xm","______","______","______")。2.向数据库中添加表是指把自由表添加至数据库中,使之成为数据库表。这一操作的本质是建立了数据库与表之间的______。3.在js表中,仅允许删除工龄大于等于40的教师的数据,请完善以下设置该删除触发器的命令:CREATETRIGGERONjsFOR______AS______4.下列语句是用ALTERTABLE-SQL语句设置数据库表cj.dbf的cj字段的有效性规则,请补充完整:ALTERTABLEcjALTERCOLUMNcj______cj>=0;ANDcj<100ERROR"成绩必须在0~100之间"5.对数据库表添加新记录时,系统会自动地为某个字段给定一个初始值,这个值称为该字段的______。65\n6.使用SETFILTERTO命令设置过滤器,对三条命令不起作用。这三条命令分别是:______、______和______。65\n第5章查询、视图和SQL语句一、基本概念▲一个查询文件(.qpr)中保存的是实现查询的SELECT-SQL命令,而非查询的结果。▲查询文件的运行命令:DO查询文件名注:必须含扩展名▲视图是从表中提取一组记录,改变这些记录的值,并把更新结果送回到源表中。要使视图更新数据源,必须:设置关键字段、指定可更新字段、发送SQL更新有效。▲视图分本地视图和远程视图。▲查询与视图的异同☆查询不能作为别的查询或视图的数据源;视图可以作为别的查询或视图的数据源。☆查询是从表中检索或统计出所需数据,是一个只读的结果;视图不仅具有查询的功能,而且可以改变视图中记录的值,并把更新的结果返回到数据源表中。☆查询和视图中保存的都是一条SELECT-SQL语句,但是查询文件是一个独立的文件;视图保存在数据库中。▲数据库、视图、基表三者之间的关系(P126)☆65\n视图是数据库的一个组成部分,是基于表的并且可更新的数据集合。☆打开视图时,其基表也将同时自动打开;视图关闭时其基表不会自动关闭。☆视图兼有查询和表的特点,可以从相关表中提取有用信息,并可更新其中的信息。二、SELECT-SQL语句VFP支持SELECT-SQL、ALTERTABLE-SQL、CREATETABLE-SQL、INSERT-SQL语句。SELECT-SQL语句的语法结构:SELECTDISTINCT输出项表FROM数据源表;联接类型JOIN联接条件ON表名WHERE筛选条件;GROUPBY分组依据;HAVING分组结果筛选条件;ORDERBY排序依据(DESC为降序排列)▲必须特别注意的几个问题:☆SELECT子句和FROM子句为必选项。☆建立多表查询时的联接条件的设定与联接类型的含义(内联接、左联接、右联接、完全联接)。注意:语句中的顺序。☆字段别名的使用(列标题的命名规则P136,尤其是相同字段名称及表达式列的标题)65\n☆可以用WHERE子句来代替内联接条件的设置。☆分组依据的设置。分组依据不一定是一个输出字段,但绝不能是一个计算字段。☆WHERE子句与HAVING子句的区别。当仅有HAVING时,其等价于WHERE子句。☆排序字段必须是一个输出字段;如果将一个计算字段作为排序依据时,应以其序号作为标识。☆设置输出去向时,界面设置和命令设置的不同。界面:P121INTO子句:P122、P135(注意其语法格式)☆组合查询是使用UNION子句将两个查询合并为一个查询,使用时必须注意(P139-140):ⅰ)各查询的列数相同、对应列的标题必须相同、对应列的宽度必须相同、对应列的数据类型必须相同ⅱ)只有最后的SELECT语句中可以使用ORDERBY子句,且必须按序号指出所输出的列。(参见教材上的例题P139~P140)▲语法结构的正确性判断、计算字段的建立(使用函数或表达式)、输出去向及输出记录数等。特别注意:计算字段的建立、65\n字段别名的使用、排序字段与输出字段的关系、分组依据的正确设置以及与输出字段的关系、WHERE和HAVING、输出去向的设置(INTOTABLE|CURSOR、INTOARRAY、TOSCREEN|FILE|PRINT)等。三、DBSETPROP()函数在视图中的应用▲设置关键字段=DBSETPROP("视图名.字段名","Field","KeyField",.T.)▲指定可更新字段=DBSETPROP("视图名.字段名","Field","UpdateName","基表.字段名")▲发送SQL更新有效=DBSETPROP("视图名","View","SendUpdates",.T.)65\n第6章对象模型和事件模型一、类、对象、事件和方法程序1.类▲基类和子类容器类和控件类可视类和不可视类▲类的特性继承性、多态性、封装性、抽象性2.对象▲对象的绝对引用是从容器的最高层次引用对象,给出对象的绝对地址;▲对象的相对引用是在容器层次中,相对于某个容器层次的引用。相对引用对象时所涉及到的一些关键字This、Parent、ThisForm、ThisFormSet。3.属性▲属性的定义(P148)不同的类有不同的属性集合,用户可以为对象新建新的属性。▲基类的最小属性集(P149)▲对象的属性设置65\n既可以在设计时进行,也可以在运行的过程中进行。运行过程中进行属性的设置方法:引用对象.属性=属性值WITH……ENDWITH4.事件▲事件定义(P148)当对象的某个事件发生时,该事件的处理程序代码将被执行。如果事件没有与之相关联的处理程序,则当事件发生时,不会发生任何操作。▲基类的最小事件集(P149)基类的事件集合是固定的,不能进行扩充。它的最小事件集包括:Init(创建对象)、Destroy(从内存中释放对象)、Error(运行出错时)。▲容器层次与类层次中的事件☆容器不处理与所包含的控件相关联的事件(容器层次原则);☆如果没有与控件相关联的事件代码,VFP奖在类层次的更高层上检查是否有与此事件相关联的控件代码(类层次原则)。▲事件激发顺序(P155)LoadInitActivateDestroyUnLoad▲事件驱动与事件循环事件循环由READEVENS命令建立、CLEAREVENTS命令终止事件循环。65\n▲常用事件5.方法▲方法的定义(P148)用户可以调用VFP提供的方法,也可以为这些方法设计新的程序,也可以创建新的方法。▲调用对象的方法程序:引用对象.方法程序▲常用的方法SetAllAddItemRefreshReleaseSetFocusResetRemoveIem65\n第7章表单一、表单与表单集1.创建表单和表单集▲表单的创建使用表单向导;使用表单设计器;使用“表单”菜单中的“快速表单”选项;利用程序创建表单。表单文件和表单备注文件的扩展名(.scx和.sct)▲表单的常用属性(P192)▲表单集表单集是一种容器类,是由一个或多个相关表单组成。无论表单集中含有多少个表单,存储时,总是存储为一个表单文件。2.运行和关闭表单DOFORM表单文件名请注意VFP中的DO命令使用格式:DO程序文件名DO查询文件名(文件的扩展名.qpr不可缺省)DO菜单文件名(文件的扩展名.mpr不可缺省)3.表单的两个重要方法Refresh用于重画表单,且还能重画表单所包容的对象Release65\n从内存中释放表单,即终止该表单对象的存在二、表单的数据环境▲表单和表单集的数据环境包括了与表单交互作用的表和视图,以及表单要求的表之间的关系(临时关系)。三、容器的计数属性和集合属性(P190)▲计数属性是一个数值属性,它表明了容器所包含对象的数目。▲集合属性是一个数组,用以引用每个包含在其中的对象。容器集合属性计数属性_SCREENFormsFormCount表单集表单ControlsControlCount页面列工具栏容器页框PagesPageCount表格ColumnsColumnCount命令按钮组ButtonsButtonCount选项按钮组65\n注:容器的此两属性在FOR循环中的使用方法。四、表单的类型1.单文档界面和多文档界面▲多文档界面各个应用程序由单一的主窗口组成,且应用程序的窗口包含在主窗口中或浮动在主窗口的顶端。▲单文档界面应用程序由一个或多个独立的窗口组成,它们在Windows的桌面上独立显示。2.模式表单与非模式表单所谓模式表单是指:该表单在关闭之前,其它表单不能成为活动表单3.子表单、浮动表单、顶层表单▲子表单包含在其它表单(称父表单)中的表单,它不能移出父表单。子表单在最小化时,出现在父表单的底部;当父表单最小化时,子表单与父表单一起最小化。▲浮动表单由子表单变化而来的表单。该表单属于父表单的一部分,可以不位于父表单中(即可以在桌面上任意移动),但不能在父表单后台移动。浮动表单最小化时,出现在桌面的底部;当父表单最小化时,浮动表单65\n与父表单一起最小化。▲顶层表单独立的、无模式的、无父表单的表单。顶层表单与其它应用程序窗口同级别。子表单、浮动表单和顶层表单的设置,是通过对表单的ShowWindows属性和DeskTop属性的设置实现的:ShowWindowsDesktop顶层表单2子表单0或1F浮动表单0或1T五、与表单进行数据传递(P196)▲创建容纳参数的表单属性▲在表单的Init事件代码中包含参数接收语句:PARAMETERS▲在表单的Init事件代码中将参数分配给新建的属性▲在运行表单时,在DOFORM命令中包括一个WITH子句65\n第8章控件一、控件与数据的关系根据控件与数据源的关系,表单中的控件可以分为两类:数据绑定型控件和非数据绑定型控件P201几个特别需要注意的问题:▲绑定型控件的数据源由该控件的ControlSource属性决定;。▲表格控件的数据源由RecordSourceType和RecordSource属性决定,表格没有ControlSource属性。▲列表框和组合框的数据源由RowSourceType和RowSource属性决定(RowSourceType的几个重要设置的意义);若列表框和组合框通过ControlSource属性与表中数据绑定后,当在列表框或组合框中选定了某一值,该值将传递到由ControlSource属性指定的数据,这是一种单向的传递,即只能将控件值传递给字段,不能由字段传递给控件。▲控件的Value属性将随着所绑定的字段的值的改变而改变。二、向表单中添加控件▲各控件的英文名称▲不可直接添加到表单上的控件65\n选项按钮、表格列、列标头、页面、分隔符▲运行时不可见的控件表单集、计时器、页框、分隔符▲从表单的数据环境向表单拖放表或表中字段时,有表单中添加的控件类型、数目和默认控件名(P189)▲具有Caption属性的控件和不具有Caption属性的控件(控件访问键的设置,尤其是不具有Caption属性控件的访问键的设置方法)具有Caption属性的控件有:表单、标签、选项按钮、命令按钮、复选框、列标头、页面等。三、控件的主要属性▲控件的ReadOnly属性:默认为F▲控件的Enabled属性允许在运行时将对象设置为启用(即Enabled为T时,控件能响应用户的事件,是系统的默认值)或废止状态(即Enabled为F时,控件不能响应用户的事件),控件如果被废止后则不能访问。当某个容器对象的Enabled属性为F时,则同时废止它所包含的所有控件。用户单击已废止的控件时,不会触发任何事件。65\n选项按钮组或命令按钮组的Enabled属性设置为F时,组中所有按钮都废止,但不会显示出废止的前景色和背景色。设置组的Enabled属性不会影响组中单个按钮的Enabled属性。当重新启用该组时,原来失效的按钮仍然失效。计时器的Enabled属性决定是启用还是停止计时器的计时。1.标签(Label)▲Caption属性(长度限制为256个字符)▲AutoSize属性AutoSize属性值设为T时,标签区域自动调整为与标题文本大小一致。▲WordWrap属性当标签的AutoSize属性为.T.时,且WordWrap属性设置为T,文本将自动换行,标签在垂直方向缩放到恰好容纳文本和字体大小,而水平方向尺寸不变;如果WordWrap属性设置为.F.(默认设置)时,文本不自动换行,标签在水平方向上缩放到恰好容纳文本长度,且在竖直方向缩放到恰好容纳字体大小和行数,竖直尺寸不变。2.文本框(TextBox)和编辑框(EditBox)(1)文本框▲InputMark属性和Format属性对文本框中文本的输入与显示格式进行控制。▲PasswordChar属性65\n可以使文本框接收键盘的输入的同时,不显示实际输入的值(显示的是属性设置的字符)。(2)编辑框用途与文本框相似,但它可以输入或编辑长字段或备注型字段,允许输入多段文本,允许自动换行并能用光标移动键、操作滚动条来浏览文本。▲编辑框与文本框的主要区别:☆编辑框只能用于输入或编辑字符型数据;而文本框则适用于数值型等4种类型的数据。☆文本框只能用于输入一段数据;而编辑框则能输入多段文本,即回车符不能终止编辑框的输入。☆VFP系统默认编辑框与备注型字段绑定;文本框与字符型、数值型、日期型字段绑定。3.列表框(ListBox)和组合框(ComboBox)▲列表框和组合框两者之间的区别:☆列表框任何时候都显示它的列表;而组合框平时只显示一项,待用户单击它的下拉按钮后才显示可滚动的下拉列表。若要节省空间并且突出当前选定项时可使用组合框。☆组合框又分下拉组合框与下拉列表框两类,前者允许键入数据项,而列表框与下拉列表框都仅有选项功能。▲RowSourceType属性和RowSource属性65\n列表框和组合框通过RowSourceType属性和RowSource属性与数据绑定,并且通过ControlSource属性将列表框和组合框的值传递给指定字段。列表框中显示的信息可以是一列或多列,系统默认属性为一列。在创建具有多列的列表框/组合框时,应设置ColumnCount属性、BoundColumn属性(与Value属性绑定的列)等。▲Style属性组合框的Style属性将该组合框分为两种类型:下拉组合框(Style的值为0)和下拉列表框(Style的值为2)。▲List(i)属性用于指定数据项所在的行和列。▲InteractiveChange事件当用户用鼠标或键盘改变列表框或组合框的值时,该事件发生,可以在其代码中调用Refresh方法,以刷新表单。▲列表框的AddItem()和RemoveItem方法用于在列表框中增加一个新的数据项和移去一个数据项。4.选项按钮组(OptionGroup)和选项按钮(Option)选项按钮组创建时默认包含2个按钮,可修改ButtonCount属性值来调整按钮的个数。65\n▲选项按钮的Value属性1表示选定,0表示未选定▲选项按钮组的Value属性表示被选定按钮的序号,默认为1,若将其设置为0,则没有一个按钮呈选定状态。▲选项按钮组的ControlSource属性指定选项按钮组的数据源。▲选项按钮组的Value属性与选项按钮的Caption属性之间的关系若选项按钮组与数值型字段绑定,当选定某个选项按钮时,则在当前记录的该字段中写入该选项按钮的序号;若与字符型字段绑定,则该按钮的标题就被保存在当前记录的该字段中。5.复选框(CheckBox)▲复选框的Value属性的设置如下:0或F表示未选定(默认值)1或T表示选定2或Null灰色,该设置仅在代码中可用▲ControlSource属性若复选框的ControlSource属性设置为表中的一个逻辑字段,那么当前的记录值为.T.时,复选框显示为选中;如果当前记录值为.F.,复选框显示为未选中;如果当前的记录为Null值,复选框则变为灰色。65\n6.表格(Grid)表格由以下4部分组成:表格(Grid)由一列或若干列组成。列(Column)一列可显示表的一个字段,每列由列标题和列控件组成。列标题(Header标头)默认显示字段名,允许修改。列控件(例如TextBox)一列必须设置一个列控件,该列中的每个单元格都可以用此控件来显示字段值。列控件默认为文本框,但允许修改为与本列字段数据的类型相容的控件。如果本列是字符型字段的数据,就不能用复选框作为列控件。▲表格控件的RecordSourceType属性和RecordSource属性▲表格列的ControlSource属性▲表格控件的动态显示属性的含义及设置方法(P208)7.微调框(Spinner)主要属性除了ControlSource属性和Value属性外,还有:KeyBoardHighValue、KeyBoardLowValue、SpinnerHighValue、KeyBoardLowValue和Increment属性65\n8.命令按钮(CommandButton)和命令按钮组(CommandGroup)▲命令按钮组是一个数据绑定型控件,它具有ControlSource属性和Value属性。▲命令按钮组的Value属性与ControlSource属性所绑定的字段的数据类型的关系▲命令按钮和命令按钮组的Click事件9.计时器(Timer)计时器控件具有三个要素:▲Timer事件代码表示在Interval属性所规定的时间间隔内所要执行的动作;▲Interval属性表示Timer事件的触发时间间隔,单位为毫秒;Interval属性不能决定事件发生多长时间以及何时终止,而是决定事件发生的频率;Interval属性为0时,计时器将不触发Timer事件,可利用此特征来启动或终止Timer事件代码的执行;▲Enabled属性65\n该属性默认为.T.。当Enabled属性为.T.,则表单加载时,计时器即被启动。也可在其它事件中将该属性设置为.T.,来启动计时器。当属性为.F.时,计时器的运行将被系统挂起,等候属性改为.T.时才继续运行。10.线条、形状(Line、Shape)▲线条的斜度由属性Width和Height决定;斜线的方向用属性LineSlant指定,属性值可以是\和/。▲形状的类型由Curvature、Width和Height属性来指定:CurvatureWidth=HeightWidth<>Height0正方形矩形1~99小圆角正方形→大圆角正方形→圆小圆角矩形→大圆角矩形→椭圆11.页框和页面(PageFrame、Page)页框是一个非可视控件(非可视控件有:表单集、页框、计时器等)。它是包含页面(Page)的容器对象,用户可以在页框中定义多个页面;对页面所在的表单使用Refresh方法时,只刷新当前活动的页面;不能直接将页面添加到表单。12.OLE容器控件与OLE绑定型控件对象链接与嵌入(OLE)是一种协议。根据该协议一个OLE对象,如Excel电子表格或Word文档或画片等,可以链接或嵌入到表单中或表的通用字段中。65\n嵌入用于将一个对象的副本从一个应用程序插入另一个应用程序。对象副本嵌入后,不再与原来的对象有任何关联。如果原来的对象有所改变,嵌入的对象不受影响。OLE绑定型控件可以通过设置对象的ControlSource属性与一个VFP表的通用字段连接在一起。四、控件的访问键与Tab次序▲访问键的设置方法(参见教材P211)▲不具有Caption属性的控件的访问键的设置方法五、面向对象的程序设计使用表单及命令按钮组、命令按钮、列表框、表格、文本框、标签等控件处理单表或两表操作的问题,主要包括:命令按钮组(或命令按钮)的Click事件代码、列表框的InterActiveChang事件代码(如:建立两表之间的临时关系,以便用主表控制子表的显示或求值,可以通过设置过滤器来实现等)。65\n第9章报表报表文件和报表备注文件的扩展名(.frx和.frt)▲定义报表的两个要素报表的数据源报表的布局▲报表的类型列报表、行报表、一对多报表、多栏报表▲报表的带区各带区的打印次数默认情况下,报表设计器显示的是:页标头、细节、页注脚。▲报表的打印与预览REPORTFORM报表文件名[PREVIEW]第10章类的创建和应用▲用户可以基于VFP的基类创建自定义的子类。VFP将用户自定义的子类保存在扩展名为.vcx的可视类库文件之中;一个类库文件可以保存多个自定义子类。但VFP基类并不保存在.vcx类库文件中。▲用户可以在类设计器和表单设计器窗口创建一个自定义类。在创建新类时,需要指出新类的名称、基于的类和所保存的类库文件名及位置。65\n▲为类添加新的属性时,类的可视性包括:☆公共可以应用程序的任何位置被访问。☆保护仅能被该类定义内的方法程序或该类的派生类所访问。☆隐藏只能被该类定义内的成员所访问,该类的子类不能引用它们。▲通常在为子类创建事件代码时,仍然保留其父类的事件代码。此时,用户可以通过作用域操作符::和DODEFAULT()函数来调用父类的事件代码。(P244)▲作用域操作符::和DODEFAULT()函数的区别▲防止基类代码被执行:NODEFAULT第11章菜单和工具栏1.菜单的类型一般菜单、快速菜单、快捷菜单2.菜单的设计▲菜单设计器中“结果”列中的设置项及其含义▲菜单的热键和分组线设置▲菜单设计器运行时“常规选项”菜单栏的设置(尤其是用户自定义菜单与VFP系统菜单的替代关系)3.VFP系统菜单65\n▲VFP主菜单系统的特点▲用SETSYSMENU命令重新配置VFP系统菜单(P259命令格式)SETSYSMENUTODEFAULT|SAVE|NOSAVE4.菜单文件的运行定义的菜单在运行之前,必须先生成菜单程序文件,即将扩展名为.mnx的菜单文件生成为扩展名为.mpr的菜单程序文件。DO菜单文件名注:菜单文件的扩展名.mpr不可缺省5.SDI菜单(P262)▲SDI菜单是指出现在单文档界面(SDI)窗口中的菜单。▲将SDI菜单附加到表单中的方法是:①创建一个SDI菜单;②将表单的ShowWindows属性设置为:2-作为顶层表单;③表单的Init事件添加代码:DO菜单名WITHTHIS,.T.第12章建立应用程序65\n1、编译应用程序所谓编译应用程序就是将所有在项目中引用的文件(除标记为排除的文件)合成为一个可执行的应用程序文件。2、连编应用系统在VFP的项目管理器中,可以把项目中的文件连编成以下两种文件:▲应用程序文件(.app)VFP的应用程序文件(.app)的运行不能脱离VFP的环境,但.app文件将多个相关的文件合并为一个文件,并隐藏了VFP的原代码。▲可执行文件(.exe)VFP的可执行文件(.exe)的运行可以完全脱离VFP的环境,但需要和两个VFP的动态连接库(vfp6r.dll和vfp6enu.dll)连接,它们共同构成VFP应用程序所需的完事运行环境。3、应用程序的主程序主程序是一个应用系统运行时的起点,是在应用系统执行时首先运行的程序。一个项目中只能指定一个文件作为主程序。能够成为VFP应用程序的主程序的文件只能是程序文件、表单文件、菜单文件和查询文件。4、排除和包含65\nVFP项目中对文件的引用有两种方式:▲包含被包含在项目中的文件在项目连编时后,将会被完全合并在一个应用程序文件或可执行文件中,当应用程序运行时,不再需要这些文件。▲排除被排除的文件不会被合并,仅在应用程序文件或可执行文件中提供访问相应文件的方法,当程序运行时,若需要这些文件,则应用程序将到指定的位置查找并使用这些文件。被排除的文件可以被用户动态地修改。5、在项目中连编应用程序文件除在项目管理器中可视化地连编应用程序外,还可以使用以下命令:BUILDAPP程序文件名FROM项目文件名BUILDEXE程序文件名FROM项目文件名连编后的应用程序文件可以在VFP环境下,从“程序”菜单中或用DO命令运行;连编后的可执行文件可以直接在Windows中运行。65

相关文档