




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第一章 Visual FoxPro基础知识1、 什么叫数据库,数据库管理系统、数据库系统?数据库,是存储在外存中有结构的相关数据的集合,是一种有结构的数据文件,是数据库管理系统管理的对象。数据库系统,是一个引入数据库以后的计算机系统,他由计算机硬件及相关软件、数据库、数据库管理系统及用户组成。数据库管理系统,是在操作系统支持下管理数据的软件,实现数据库的建立、使用和维护,是数据库系统的核心。2、 简述数据库的3种模型,关系数据库的主要特点及操作。数据库的数据模型有三种:层次模型,网状模型,关系模型。Visual FoxPro是一个关系型数据库管理系统。关系数据库的主要特点:关系中每一个属性都是
2、不能再分的基本元素;各元组的县同列具有相同的数据类型;每个属性列被指定一个不同的属性名,在一个关系中,属性名不能重复;行、列顺序可任意变动,不影响表格信息;每个元组的内容是不相同的,不允许重复。有选择、投影、连接三种基本操作。3、 简述Visal FoxPro的常量和变量概念。常量是以直观的数据形态和意义直接出现的数据,在整个程序的执行过程中,常量的值是固定不变的。类型有:数值性,字符性,逻辑型,日期型,货币型等。变量是在程序执行过程中可以变化的数据项;变量实际上是用标示符命名的存放数据项的计算机内存单元。变量有变量名、变量值、变量类型、长度、变量作用域等属性。4、 简述Visal FoxPr
3、o变量的类型,系统变量的概念及作用,内存变量的建立、现实、删除。存盘和恢复方法。Visual FoxPro的变量可分为字段变量和内存变量,内存变量又可分为一般内存变量、系统内存变量和数组变量。系统内存变量是Visual FoxPro自动创建并维护的内置内存变量。是用来保持固定信息。内存变量操作如下:1)显示:DISPLAY MEMORY或LIST MEMORY.。2)清除:RELEASE或RELEASE ALL。3)保存和恢复:SAVE TO<内存变量文件名>、RESTORE FROM<内存变量文件名>。5、 简述Visal FoxPro的表达式类型,它们之间的运算规则
4、。Visual FoxPro的表达式可分为:数值型表达式,字符型表达式,日期型表达式,关系型表达式,逻辑型表达式。各种运算符的优先级为:数值运算符高于关系运算符,关系运算符高于逻辑运算符。所有同一级命令都是从左到右进行的,括号内的运算优先执行,嵌在最内层括号内的运算首先进行,然后依此由内向外执行。6、 什么是函数?说明随机函数的概念和作用,宏代换函数的概念和作用。函数是系统为实现一些特定功能而设置的内部程序,作为系统的一部分供用户使用。随机函数(RAND()作用是返回一个0-1.0之间的随机数。宏代换函数(&)作用是用字符型内存变量的"值"代替内存变量的"
5、名"。7、 简述名表达式的概念和作用。说明名表达式、宏代换函数、EVALUATE()函数三者的区别及使用方法。名表达式就是用一对括号将名称括起来,以实现替换功能。例如:X="学生.DBF" USE(X),后边的USE(X)相当于USE 学生.DBF 能用名表达式代替&时,尽量用名表达式,因为名表达式比&快得多,但应注意,只有在进行名称转换时才能使用名表达式,如果是处理表达式的读取,则不能使用名表达式取代&。8、 简述Visual FoxPro的启动和退出方法。启动:单击"开始"菜单上的"程序"选项,打
6、开"程序"层叠菜单;移动标到Microsoft isual FoxPro,打开Visual FoxPro 5.0;单击图标,即可启动VFP5.0退出:方法很多,最常用的是单击窗口右上角的关闭按扭。第二章 表的建立与操作1、 计表文件结构时如何确定字段明、字段类型和字段宽度?对表结构的建立主要是确定表结构的字段名、字段类型、字段宽度。字段名又称字段变量,最长为10个字符,允许由字母、汉字、数字和下划线组成,但必须以字母或汉字开头,中间不能有空格。字段类型有13种,它们是:字符型、数值型、逻辑型、日期型、备注型、通用型、整型、双精度型、浮点型、日期时间型、货币型、二进制字符型、
7、二进制备注型。字段宽度:逻辑型,1;备注型,4;通用型,4;整型,4;日期型,8;货币型,8。2、 LIST与DISPLAY命令有什么区别?LIST显示当前记录的内容和表达式的结果。如果有更多的信息需要显示,而在窗口中显示不完,就滚动显示。LIST也可用来显示表达式的结果,它可以包括字母和数字的组合、内存变量、数组元素、字段和备注字段。DISPLAY显示当前表记录的内容和表达式的结果。如果有更多信息需要显示,而在窗口中显示不完,就显示第一屏信息,然后暂停。按任意键继续显示下一屏的信息。不带所有选项时,DISPLAY的默认范围是当前记录。3、 FIND 与SEEK命令在使用上有何区别?FIND与
8、SEEK命令都是索引查找命令。由于索引查找速度快,又称快速查找。FIND命令可用于字符型和数值型数据的快速查找,可以查找字符型和数值型常量,但不能查找变量和表达式。用于查找的字符串呆以加定界符,也可以不加定界符。若使用字符型变量,必须加"&"。SEEK命令查找的对象是表达式,即可以是常量、变量或表达式,字符型常驻量必须加定界符,字符型变量前不需加"-"。SEEK命令的功能远强于FIND命令,所以在Visual FoxPro中很少使用FIND命令,而用SEEK命令取而代之。4、 什么是排序和索引?两者有何区别?1)、概念不同:排序是按关键字的顺序建
9、立一个新的、与原文件同样大小、结构相同的物理文件,改变了物理顺序;索引只是在原表的基础上建一个按逻辑顺序排列的索引表,原表的物理顺序并无改变。2)占存储空间大小不同:排序后的文件与原文件大小相同,占存储空间大,且在排序时还要有临时转换空间,需有原表3倍大小的空间;索引文件只是一张相当于两个字段的表格,占存储空间小。3)查找速度不同:排序文件中的查询依然按记录的物理顺序,查找速度慢;索引文件中的查找是按逻辑顺序进行的,查找速度快。4)使用方法不同;5)建立所需时间不同。 5、 删除表记录与删除表文件的命令各是什么?两者有何区别?删除表记录的命令是DELETE和PACK或ZAPDELET
10、E是对表中要删除的记录加上删除标记,然后使用PACK真正删除记录。ZAP是将表文件中的所有记录完全删除,它相当于DELETE ALL 后用PACK。删除表文件的命令是ERASE或DELETE FILE删除表记录后表文件还存在,还存在表结构。而删除表文件后,表记录和表结构都被删除。6、 REPLACE命令与STORE命令、"="运算符有何区别?REPLACE 命令是用来修改字段的值,例如我们可以用REPLACE来修改学生表中的姓名字段:REPLACE 奖学金 WITH 100 FOR 姓名"李平"STORE和命令是用来为内存变量赋值:STORE 30 TO
11、 M或M30,M是内存变量。REPLACE与STORE和的处理对象不同。7、 VISUAL FOXPRO有几种类型的索引?如何用表设计建立索引?VisualFoxPro有种类型的索引文件:一种是传统的.IDX文件,这种索引文件只有一个索引表达式,称为单项索引文件。另一种是复合索引文件,其扩展名是.CDX,复合索引文件包含多个索引表达式,这些索引表达式称为索引标识。在表设计器中建立索引的方法是:打开要建立索引的表的表设计器,单击索引标识卡,出现其对话框;然后在索引名文本框中输入该索引标识的名字,索引名框右边按钮决定升序或降序;用鼠标可以改变索引表示列出的顺序;类型下拉表中可选择索引类型。8、 什
12、么是主索引?如何建立主索引?什么是SET ORDER TO数值表达式的规则?主索引文件或主控标识决定了表文件的逻辑顺序,在使用打开索引文件或用SET ORDER TO命令重新确定主索引文件或主控标识时,都会遇到索引序号这一概念。所谓索引序号就是众多打开的索引文件或索引标识的排序。首先是打开的单项索引文件在打开索引文件名表中的次序编号;然后是结构复合索引文件,按其生成顺序记数的索引标识的冷编号;最后是独立复合索引文件,按其生成顺序记数的索引标识的冷编号。SET ORDER TO就是确定主索引的命令,其后跟索引序号。9、 VFP中导出数据的几种方法:当VFP处理好数据后,这时你可以用多种方法将这些
13、数据导出,以便被其它应用程序(如Excel等)所用。下面向你简单介绍几种导出数据的方法:1.用"导出数据"对话框。你可以从VFP主菜单中选择"文件/导出"打开"导出"对话框,在该对话框中的"来源"框中输入表名(c:vfpstudents.dbf),在"类型"中指定要导出数据的类型(Microsoft Excel),在"到"框中输入导出的路径和文件名(C:excelaa.xls),然后按"确定"即可。这时你如果查看command窗口,可发现以下代码:COPY
14、 TO C:excelaa.XLS TYPE XL52.用COPY TO命令。COPY TO命令的工作对象是VFP中的表,它要依据"TYPE"项才知道要产生哪一类导出文件。对于上面的导出过程,可用以下方法实现:USE studentsCOPY TO C:excelaa.XLS TYPE XL53.用SET ALTERNATE TO写入ASC文件。用该命令可以把屏幕上的内容导出,导向一个文件,下面例子可以将系统状态输入到status.txt文件中:SET ALTERNATE TO status.txtSET ALTERNATE ONSET CONSOLE OFF?"
15、系统状态"DTOC(DATE()""TIME()LIST STATUSSET ALTERNATE OFFSET CONSOLE ON4.用SET PRINTER TO命令。用该命令可把打印输出到文本文件中:SET PRINTER TO hello.txtSET PRINT ON?CHR(27)"广大计算机爱好者"?"你们好!"?"祝你们新年快乐"SET PRINT OFF5.用REPORT FORM TO FILE命令。运行报表的REPORT命令有许多选项,把报表输出保存到文件中的方法为:REPORT F
16、ORM(报表名)TO FILE(文件名)10、什么是表结构文件?如何用表结构文件建立和修改表结构?表结构文件就是存储表的结构的文件,它也是一个表,但是它是以表的字段为记录的。我们可以用表结构文件来建立新表。格式为:CREATE表文件名FROM表结构文件名。利用表结构文件名中说明的结构创建新表表文件名。第三章 程序设计基础1、 结化程序设计具在几种基本控制结构?哪几种?顺序结构是指程序的执行按其中的命令从上到下顺序执行。选择分支结构是根据条件的测试结果执行不同的操作。依次判断某一条件后来执行某一段固定程序,直到条件不满足。2、 什么叫算法?如何表示算法?请用生活中的例子说明。算法就是解决问题的方
17、法及步骤。表示算法的形式很多,如自然语言、传统流程图、NS图和伪代码等。无论哪种表示方法都可以达到清晰描述算法过程,整理解决问题思路的目的。例如:做一道菜,我们得先洗菜,然后用刀进行加工,加工好了后,点火,开始烧菜。当然如果中间的步骤不同,做出来的菜的味道也就不同。这一过程就是生活中做一道菜的"算法"。3、 程序文件一般包括几部分?哪几部分?程序文件主要包括三部分:数据输入、数据处理和数据输出。输入语句包括表达式接收语句INPUT;字符串接收语句ACCEPT;单字符接收语句WAIT。输出语句包括换行输出语句?和同行输出语句?。4、 什么叫死循环?如何预防死循环的出现?死循环
18、是在循环语句中没有退出循环语句,或有退出循环语句而永远达不到退出循环的条件。所以在编写程序时要预防死循环的出现,方法是要使条件判断变量在循环过程中变化,并且最终满足条件退出循环。举例如下:死循环:A=1DO WHILE A>0A=A+1ENDDO非死循环:A=1DO WHILE A>0A=A+1IF A>99EXITENDIFENDDO5、 请说明过程和过程文件的区别?过程是一个由PROCEDURE过程名开头,ENDPROC结尾了子程序段,其所处的文件称为过程文件,即过程文件是由若干个过程构成的,而过程必须存放在一个过程文件中。过程文件的扩展名为.PRG。过程的存在格式为:P
19、ROCEDURE过程名程序最后有ENDPROC。过程是为完成某个操作而编写的代码,可以将过程放在单独的程序文件中,也可以放在一般程序的结尾。6、 程序之间参数传递有几种方法?请说明每种方法的优缺点。有两种:利用内存变量的作用域属性;利用DO文件名WITH参数表达式列表。利用不同属性的内存变量的作用域,可以实现程序之间参数和互传。Visual FoxProK 内存变量有4种作用域属性:自然属性、公用属性、私有属性和本地属性。利用内存变量的属性,可以实现主程序与子程序之间的参数传递,但使用的变量必须同名。如果不想爱变量名的限制,又想达到传递参数的目的,就得利用DO文件名WITH参数表达式列表命令了
20、。7、 请说明内存变量的自然属性、私有属性和本地属性三者的异同点。自然属性:1)定义格示:STORE/=、DIMENSION、DECLARE、INPUT、SUM等。2)作用范围:该程序及其调用的下属子程序。3)传递方向:单向(由主程序到子程序)。4)变量寿命:所在程序运行结束后,该变量被自动删除。私有属性:1)格示定义:PRIVATE内存变量列表2)作用范围:该程序及其下属子程序,同自然属性。3)传递方向:单向(由主程序到子程序),同自然属性。4)变量寿命:程序运行结束后,该变量被自动删除。5)特殊作用:可隐藏上级程序中与当前程序同名的变量,即对当前程序中变量的操作,不影响上级程序中与当前程序
21、同名的变量值。本地属性:1)定义格示:LOCAL内存变量列表。2)作用范围:该程序本身。3)传递方向:无。4)变量寿命:程序运行结束后,该变量被自动删除。5)特殊作用:可屏蔽上级程序中与当前程序同名的变量,即对当前程序中变量的操作,不影响上级程序中与当前程序同名的变量值。同时也不受下属子程序中同名内存变量值的影响。8、 请说明调用过程和调用自定义函数方法的异同点。调用过程是用DO语句,DO过程名,而自定义函数虽然是一个子程序,但是不能用DO命令来调用而只能象内部函数那样出现在表达式中,自定义函数名(<参数表达式列表>)。9、 一般一个VFP就用程序由几部分组成?通常一个VFP程序由
22、以下几个部分:一个或多个数据库、设置应用程序系统环境的主程序以及用户界面。此外,还可以包括查询和报表,允许用户检索或输出自己的数据。因此,无论多简单的问题,也应该包括数据源、交互界面和数据输出。10、 面向过程的程序方法是什么?通常是将应用程序目标系统的整体功能进行分解,自顶向下不断的把复杂的处理分解为子处理,这样一层一层地分解下去,直到仅剩下若干个容易处理的子处理为止。 第四章 面向对象程序设计基础1 问:什么是面向对象程序设计方法(OOP)?答:在面向对象程序设计方法中,客观世界中的问题被看作客观世界中的实体与实体之间的关系及其相互作用。每一个实体就是一个对象,其中包含有关数据和
23、一组对这些数据的操作,是一个相当于微型程序的软件"零件"。面向对象程序设计就是要将这些"零件"进行严密而有效的连接组装,形成能解决客观问题的软件"机器"。2 问:面向过程程序设计方法与面向对象程序设计方法的区别是什么?答:面向过程程序设计方法与面向对象程序设计方法的区别有以下几点: 前者在程序设计时将数据和算法完全的分开,后者将数据和算法看作是不可分割的实体,称为对象; 前者在程序设计过程中以算法为中心,围绕着实现系统功能的过程来构造系统,后者以数据为中心,所有的操作都围绕着数据而展开; 前者是一句接一句地编写程序,后者主要是适当地创
24、建对象、修改对象属性和编写对象的方法程序。3 问:利用面向对象程序设计方法进行程序设计的步骤是什么?答:面向对象程序设计方法要在应用程序的统筹规划和设计之后作以下步骤: 创建对象或选用合适的对象 设置对象的属性 选择并设计适当的对象事件及操作 在过程代码中调用对象以实现对象之间的通信4 问:什么是对象的封装性?答:封装是指将对象的方法程序和属性代码包装在一起,对象的属性数据也可称为对象的内部数据。外界用户(包括应用程序用户和其他对象实体)不能跨越对象的方法直接操作对象的内部数据。5 问:面向对象程序设计中,如何利用对象类的继承性实现代码的可重用性?答:继承是指子类自动地共享其父类中定义的所有数
25、据和方法的机制。这样对于某一对象类的多个子类或多重子类而言,我们就不用重复地设计其中的一些基本数据和方法,从而实现了代码的可重用性。6 多态性是指什么?答:子类继承了父类的方法,但是在定义其中的过程时,可以根据子类的不同需求改变或修改父类中原有方法的实现算法,新的实现算法在子类中屏蔽父类的实现算法,这就是继承中的屏蔽性。由于继承屏蔽性的存在,同一方法名在不同的类层次中或同一层次的不同子类中可能具有不同的实现算法,这就是多态性。7 问:如何向对象发送消息?消息的格式是怎样的?答:向对象发送消息就是对该对象的某一个固有操作(方法或事件)的调用。消息的格式如下:对象名.方法名/事件名(<参数列
26、表>)8 问:消息与方法的区别和联系分别是什么?答:消息时要求某个对象执行某个操作的常规命令;方法是对象内部的一段能完成特定操作的程序代码。消息是调用方法的命令;方法是相应消息的算法实现程序。9 问:在VFP中,对象的方法程序与事件有什么区别和联系?答:在VFP中,对象的方法程序分成两种:第一种方法程序与对象的事件相关联,其中的代码当事件发生时执行,这种方法程序往往由程序设计人员自行设计算法;第二种方法程序是独立于事件存在的,其中的代码由消息来调用,这种方法程序一般是系统所固有的。10 问:容器和控件分别是什么?它们之间有何联系?答:容器类对象可以包含其他对象;控件类对象是一个单一而独立
27、的部件,其中不能包含其他对象。它们之间是包含与被包含关系,这种关系可以不断的嵌套,从而形成容器层次。11 问:表单的Refresh方法和Release方法有何区别?答:Refresh方法的功能是根据对表单的最新修改重新画出表单,并刷新其中的所有值。除表单以外,Refresh方法还可应用于文本框、命令按钮等各类控件。Release方法的功能是从内存中释放表单,它还可用于表单集。12 问:按钮组的Click事件和组中某一按钮的Click事件的区别是什么?答:按钮组中按钮的Click事件是针对于该按钮而设置的,与组中其他按钮无关,也就是说,当别的按钮被单击时,该Click事件中的程序代码不会执行。这
28、类Click事件的编写相对较为简单。按钮组的Click事件是对于整个按钮组而设置的,对组中的所有按钮都起作用。因此,该Click事件必须知道用户单击的是哪个按钮,我们要用按钮组的Value属性来确定这一点,并由此确定不同的程序执行代码,这可以用DO CASE ENDCASE语句实现。所以按钮组的Click 事件的编写比较复杂。两种Click事件能够实现同样的操作,用户可以根据习惯和需求选择编写。13 问:在容器层次中,引用对象的格式是什么?答:在容器层次中,引用对象的格式有两种:绝对引用对象: 表单集名.表单名.容器名1.容器名n.控件名相对引用对象:例如,ThisForm.Text1This
29、FormSet.Form2.Command3等14 问:修改属性值的两种方式是什么?答:第一种方式是在程序设计的交互界面上修改属性值。这种方式常用于一些一直保持不变的属性值或属性的初值。第二种方式是在程序运行过程中修改属性值,这种修改是由写在各个方法程序中的语句来实现的。这种方式用于随着程序运行不停变化的属性值。15 问:如何运用容器对象的"编辑"命令?答:当要在某一容器对象的内部增加、删除、修改对象时,我们就要用到容器对象的"编辑"命令。使用方法:右击容器对象的任意位置,在弹出的快捷菜单中选取"编辑"菜单命令即可。第五章 表单的建立
30、与操作16 问:可以采用哪几种方法创建表单?答:(1)在"项目管理器"中选择"文档"选项卡,然后选择"表单",选择"新建"再选择"表单向导"。(2)通过在"工具"菜单上选择"向导"选项并选中"表单"。(3)通过在"文件"菜单上选择"新建",在"新建"窗口中,选择"表单"再选中"向导"按钮。(4)通过在主窗口上的工具栏中选择"新建
31、"按钮,在"新建"窗口中选择"表单"再选中"向导"按钮。17 问:可以采用哪几种方法进入表单设计器?答:(1)通过"项目管理器"。(2)通过"文件"菜单。(3)通过在主窗口上的工具栏中选择"新建"按钮。(4)通过命令:CREAT FORM <表单名>。18 问:可以采用哪几种方法设置Tab键次序?答:(1)以交互方式设置Tab键次序。(2)用列表方式设置Tab键次序。19 问:可以将哪些类型的对象添加到表单中?答:(1)数据环境。(2)控件。(3)容器。
32、(4)用户自定义类和OLE对象。20 问:什么是容器对象的收集属性和记数属性?答:Visual FoxPro中的所有容器对象都有与它们相关联的收集属性和记数属性。收集属性是引用其每个被包含对象的数组,其得到的值的类型为对象型。记数属性是指示其包含的对象数的数值属性,其得到的值的类型为数值型。21 问:表单中的控件可分为哪几类?答:表单中的控件可以分两类:与表中数据绑定的控件(绑定型控件又称为数据型控件)和没有与数据绑定的控件(非绑定型控件)。22 问:编辑事件或方法程序代码可采用的步骤有哪些?答:(1)从"显示"菜单中选择"代码"选项。(2)在"
33、;过程"框中选择事件或方法程序。(3)在编辑窗口中键入代码,编辑方法与程序文件方法相似。23 问:如何设置表单或控件的前景或背景颜色?答:(1)从"显示"菜单中,选择"工具栏"并选择"调色板"。(2)选择"前景颜色"按钮或"背景颜色"按钮。(3)选定想改变的控件或表单。(4)在"调色板"工具栏中选择想使用的颜色。24 问:如何创建自定义颜色?答:(1)在"调色板"工具栏中,选择"其他颜色"。(2)在"颜色"
34、对话框中,选择"规定自定义颜色"显示"自选颜色选择器"。(3)选择"自定义颜色"框,然后在"自选颜色选择器"中单击,选择所需的自定义颜色。(4)选择"添加到自定义颜色",把新颜色添加到调色板中。(5)选择"确定"。25 问:要将参数传递到在表单设计器中创建的表单,可用哪些步骤来实现?答:(1)创建容纳参数的表单属性,也就是向表单中添加新属性,属性名根据问题的需要随意命名。(2)在表单的Init事件代码中,包含语句:PARAMETERS参数列表。(3)在表单的Init事件代码中
35、,将参数分配给属性。(4)当运行表单时,在 DO FORM命令中包括一个 WITH子句。26 问:若要从表单返回值,可采用哪些步骤来实现?答:(1)将表单的WindowsType属性设置为1,使表单成为模式表单。(2)在与表单的Unload事件相关代码中,包含一个带返回值的RETURN命令。(3)在运行表单的程序或方法程序中,在DO FORM命令中包含TO关键字。27 问:要指定默认的表单模板,可采用哪些步骤?答:(1)从"工具"菜单选择"选项"命令。(2)在"选项"对话框中,选择"表单"选项卡。(3)在"
36、;模板类"区,选中"表单"复选框。(4)如果没有选定表单模板,会打开"打开"对话框,这样我们可以选择一个表单类。如果己选定表单模板,可以选择对话按钮来选择其他的类。(5)如果想在以后的 Visual FoxPro工作期中使用这个模板,选择"设置为默认值"按钮。(6)选择"确定"按钮28 问:要将新属性添加到类中,可采用哪些步骤?答:(1)从"类"菜单选择"新建属性"。(2)在"新建属性"对话框中键入属性的名称。(3)指定可视性:公共、保护或隐藏。
37、(4)选择"添加"。29 问:要在类中添加新方法程序,可采用哪些步骤?答:(1)从"类"菜单中选择"新方法程序"。(2)在"新方法程序"对话框中,键入方法程序的名称。(3)指定可视性:公共、保护或隐藏。30 问:要将类从一个类库复制到另一个类库,可采用哪些步骤?答:(1)确保两个类库都在项目中(不一定是同一个项目)。(2)在"项目管理器"中,选择"类"选项卡。(3)单击包含类的类库左边的加号。(4)将类从旧库中拖到新库中。31 问:要注册一个类库,可采用哪些步骤?答:(1)从
38、"工具"菜单中选择"选项"。(2)在"选项"对话框中,选择"控件"选项卡。(3)选择"可视类库"并选择"添加"按钮。第六章 数据库的建立与操作1、VFP数据库由哪几个层次组成?关系数据库中数据间联系是通过什么实现的?答:VFP的数据库是由4个层次组成的:数据库、表、记录和字段。在关系数据库中,字段是关系的属性,记录是关系的元组,表则是一关系,而数据库即为多个关系的集合。在关系数据库中,只存在"表"(关系)这一种逻辑数据存储形式。故关系数据库就是通过表来保存
39、数据和数据之间联系的。2、VFP中关键字的含义是什么?有哪几种常用的关键字?答:在VFP的表中,如果某个字段或多个字段的值可以唯一地标识一条记录,则该字段就称为关键字。如果一个关键字是用以区别每条记录的唯一性标志,并作为该表与其他表实现关联的,则称为主关键字或主码。除主关键字以外的其他关键字称候选关键字。当一个表的主关键字出现在另一个表中时,而对于后者来说,该关键字不是该表的主关键字,则称该关键字为外部关键字。3、VFP中最普遍的关系是哪一种?实现该关系对关键字有何要求?答:VFP中最普遍的关系是表与表间的一对多联系;实现该联系时需将父表中的主关键字放入子表当中,以实现两表间的有效关联。&qu
40、ot;一"方使用主索引关键字,"多"方使用普通索引关键字。4、数据库表与自由表有何区别?联系如何?有何特点?答:归属于某个数据库的表称为数据库表。独立存在、不与任何数据库相关联的表称为自由表。两种表是可以相互转化的。数据库表对于自由表来说具有更加强大的功能以及拥有自由表所没有的许多特性:长文件名、字段验证等。所以大多数应用需要建立数据库,并创建新表或添加自由表到数据库中,即成为数据库表。5、什么是关系数据库的完整性?包括几部分?如何实现?答:数据库的完整性是指数据库中的数据的有效性、一致性和兼容性。要实现数据库的完整性,必须在数据库的建立和操作过程中,遵循一定的完
41、整性规则,并随时检查是否满足完整性的约束。数据库的完整性包括以下三部分:(1)实体完整性。指一个表中主关键字的取值必须是确定的、唯一的,不允许空值。(2)用户自定义完整性。是由实际应用环境中的用户需求决定的。通常为某个字段的取值限制、多个字段间取值的条件等。(3)参照完整性。指在"子"表中实现关联的外部关键字的取值或为空值或为"父"表中实现相应关联的主关键字值的子集。 6、什么是数据字典与数据工作期?有何用途?答:数据字典是每一个VFP数据库所特有的一个数据集合,其中存放数据库表的各种特征信息,也称:存储数据库的数据库。数据工作期是多表操作的动
42、态工作环境。利用它可以打开关闭和浏览多个数据库表或自由表,并可设置表属性。7、数据库表间的关系有哪几种?有何用处?如何建立?答:在两个数据库表之间可以创建两和种关系类型:永久性关系和临时性关系。建立永久性关系的目的是:(1)为实现参照完整性提供依据。(2)在查询设计器、数据环境设计器中直接显示为表索引之间的连线,作为表单和报表间的默认关系。(3)在查询设计器、视图设计器中作为默认连接条件。建立临时性关系的目的是:让父表可以控制子表,使子表的记录指针随父表的记录指针的移动而产生联动。建立永久性关系可以通过"数据库设计器"或用命令方式。建立临时性关系可以通过"数据工作
43、期"窗口或命令方式。8、VFP中有哪几种有效性?包括哪些内容?答:VFP中有字段级和记录级有效性规则。字段级属性有:定义长字段名、设置字段标题、设置字段注解、建立输入掩码、设置字段的默认值以及设置字段级有效性规则。数据库表的其他属性有:长表名和表的记录级有效性规则(可以在同一条记录的多个字段间进行比较,完成有效性规则的约束)。9、VFP中的触发器的工作原理是什么?有哪几种触发器?对应记录的哪些操作?答:触发器是建立在表上的表达式,当表中的任何记录被指定的操作命令修改时,在执行了字段级、记录级、主关键字等有效性检查后,触发器就被激活。利用触发器可以完成特殊的数据检验、参照完整性实施及数
44、据库更新的维护操作等许多功能。触发器分插入触发器、更新触发器和删除触发器三种,分别对应数据库表记录的插入、更新和删除操作。10、工作区使用规则有哪些?答:如下所述:(1)在一个工作区内只能存在一个打开的表文件。(2)当前工作区只有一个,用户可对其中的表文件进行所有操作;但对非当前工作区中的非当前表文件进行操作时必须采取引用的方式:别名·字段名或别名字段名。(3)每个工作区中的表文件都有自己独立的记录指针。(4)一个表文件能在多个工作区中打开。(5)指定工作区可以使用数据工作期或命令。(6)由系统指定当前可用的最小号工作区使用:select 0 或 use <表文件> in
45、 011、建立多表表单应用的步骤有哪些?答:大致过程如下:(1)创建一个或多个数据库。(2)在数据库环境下创建相应的数据库。(3)建立表间联系。(4)建立参照完整性。(5)建立用户初始界面。(6)建立数据环境。(7)完善用户界面。(8)编写代码。12、怎样为备注型字段建索引答:Visual FoxPro3.0不支持长度变化的关键字,但如果所建索引的备注型字段的长度在建完索引后不再变化,那么建立备注型字段的索引还是可行的。但在建索引时必须注意:索引的表达式不能直接用备注型的字段名,还要略加变通,如用TRIM()函数把备注型字段括起来,就能顺利地为备注型字段建索引。第七章 查询、视图及菜单设计1、
46、如何粘贴VFP顶层表单?答:当你将表单设置为顶层表单并独立运行于Windows下时,会发现表单中复制粘贴功能失效,这给实际工作造成极大的不便,从而使编制的软件达不到专业水准。造成这一问题的原因是微软设计VFP时,只考虑了位于系统选单下的表单的复制和粘贴情况,即位于系统选单下的表单可使用复制及粘贴热键,而处于Windows下的表单完全脱离了系统选单的控制,因此复制及粘贴热键失效。解决的办法是可在表单的控件(本文举例为文本框)中,为KeyPress Event编写如下事件处理程序,该事件处理程序首先将选择内容复制到Windows剪贴板上,然后再将剪贴板上的内容添加到控件中。KeyPress Eve
47、ntLPARAMETERS nKeyCode, nShiftAltCtrlif nkeycode=3 CTRLC 复制cliptext=this.seltextendifif nkeycode=22 "CTRLV" 粘贴do casecase this.selstart=0this.value=cliptextthis.valuecase this.selstart=1 and this.selstart=len(this.value)this.value=subs(this.value,1,this.selstart)cliptextsubs(this.value,thi
48、s.selstart1)endcaseendifthisform.grid1.column1.setfocus()sele recetemif not eof()skipendifthisform.refresh2、如何在当前文档应用程序中使用我自己定制的菜单? 答:假定已经创建了自己定制的菜单,从ActiveDoc类中的Run Event来运行菜单程序。最好是在显示任何表单之前及执行READ EVENTS命令之前运行菜单程序。3、怎样改变菜单的字体大小?答:请参考:1、本来菜单生成器中是没有字体的选项的。2、利用菜单生成器的 选项中 跳过(K) 即SKIP FOR 中编写代码代码为
49、: .F. FONT '宋体',123、实际上,生成的代码为: skip for .f. FONT '宋体',12这样就达到了改变菜单子项字体的目的。但顶层菜单的字体是不会改变的。4、菜单生成后,您可以modi menu mymenu1.mpr5、如果想完全解决问题,可以利用API。在进入系统时改变分辨率,使用户操作环境与开发环境匹配。可以参考有关vb的文章。4、如何建立一个带有顶层菜单的顶层表单?答: 要建立一个顶层表单,请将表单的 ShowWindow 属性设置为 2- 作为顶层表单。要建立一个顶层菜单,请打开"菜单设计器"。从"
50、;显示"菜单中,选择"常规选项",然后设置"顶层表单"选项。要想将顶层菜单放入顶层表单中,请在表单的 Init 事件中添加如下代码:DO <menu name.mpr> with THIS5、当需查询或统计某一年龄段的人员资料时,由于年龄是随时间递增的,如果用手工或人工干预来增加年龄则是件非常麻烦的事,不知有何方法能让数据库中的年龄字段的年龄自行递增?答:库中不要把年龄作为字段,你只要登记人员的出生年份即可.显示时,人员的年龄为今年与出生年分之差。6、在开发环境中没问题,但编译并安装到另一台机上就出问题了,说找不到文件。而且弄不懂V
51、FP6中的视图对象的SQL藏在那里,没法象查询那样?答:视图对象的SQL保存在数据库文件中.你用use 数据库.dbc 就可看到view记录项.用视图前要先打开数据库。7、我做一个浏览功能的表单.(数据取自三个dbf),内有一表格,数据源来自一个查询的结果.现在的问题是:每运行一次表单,它先做查询,一定要把查询结果的窗口关掉以后才显示我所要的浏览窗口?答:将查询结果存放在一个dbfname.tmp文件上中,再在自定义方法中用代码把dbfname.tmp与表格联系起来。代码可以这样写:sele 字段 from 数据表名 where 条件 INTO CURSOR ABCthisform.grid1
52、.recordsource="ABC"thisform.grid1.recordsourcetype=28、用VFP建立适用不同分辨率的菜单?答:程序开发者开发的菜单一般仅适用于某些特定的分辨率,如果使用者的系统分辨率不同,将造成画面上菜单过长或过短,为解决此问题一般都开发几个分别适应不同分辨率下的菜单,但如此一来将造成一些不必要的麻烦,下面的程序将解决此问题。1.首先在640480分辨率下建立一新菜单2.将下列代码放在复合式物件的INIT METHOD中LOCAL OLDHEIGHT,OLDWIRTH,CHANGEHEIGHT,CHANGEWIDTHOLDHEIGHT=6
53、40OLDWIDTH=480CHANGEHEIGHT=0 新分辨率与640480分辨率之HEIGHT差CHANGEWIDTH=0 新分辨率与640480分辨率之WIDTH差SYSMETRIC(1) 得到目前分辨率HEIGHTSYSMETRIC(2) 得到目前分辨率WIDTHIF SYSTEMETRIC(1)!=OLDHEIGHTTHISFORM.LOCKSCREEN=.T.CHANGEHEIGHT=SYSMETRIC(1)/OLDHEIGHTCHANGEWIDTH=SYSMETRIC(2)/OLDWIDTH更改菜单外框IF THIS.BASECLASS="FORM"THIS
54、.HEIGHT=THIS.HEIGHTCHANGEHEIGHTTHIS.WIDTH =THIS.WIDTHCHANGEWIDTHTHIS.TOP =THIS.TOPCHANGEHEIGHTTHIS.LEFT =THIS.LEFTCHANGEWIDTHENDIF逐一更改CONTAINER内的控制项FOR I=1 TO THIS.CONTROLCOUNTWITH THIS.CONTROLS(I).HEIGHT=.HEIGHTCHANGEHEIGHT.WIDTH =.WIDTHCHANGEWIDTH.TOP =.TOPCHANGEHEIGHT.LEFT =.LEFTCHANGEWIDTHENDWIT
55、HENDFORTHISFORM.LOCKSCREEN=.F.ENDIFTHISFORM.REFRESH注:如果您预先设定最低分辨率为800600首先在800600分辨率下建立一新菜单把OLDHEIGHT=640改为OLDHEIGHT=800把OLDWIDTH=480改为OLDWIDTH=6009、创建不带有标题栏的顶层表单实例答:若要创建一个不带标题栏的表单,如果把它当作表单类的实例来创建,可能会有一定困难。通常,通过如下设置可创建一个不带标题的顶层表单:? 将 ShowWindow 属性设置为 2 (作为顶层表单)? 将 BorderStyle 属性设置为 2 (固定对话框)? 将 Capt
56、ion 属性设置为空字符串。? 将 MaxButton、MinButton、ControlBox 和 Movable 属性设置为"假"(.F.)。例如,用以下代码产生一个不带有标题栏的表单:PUBLIC myFormmyForm = CREATEOBJECT("blankForm")myForm.ShowRETURNDEFINE CLASS blankForm AS formShowWindow = 2BorderStyle = 2Caption = ""ControlBox = .F.MaxButton = .F.MinButton
57、 = .F.Movable = .F.ENDDEFINE然而,表单显示时带有一个空标题栏。为了解决此问题,并生成不带标题栏的表单,您可以先将 Caption 属性设置为一个字符串值,然后在表单的 Init 方法程序中将它重置为空字符串。以下代码对前例做了修改,可以正确显示表单:PUBLIC myFormmyForm = CREATEOBJECT("blankForm")myForm.ShowRETURNDEFINE CLASS blankForm AS formShowWindow = 2BorderStyle = 2Caption = "Testing form
58、"ControlBox = .F.MaxButton = .F.MinButton = .F.Movable = .F.PROCEDURE InitTHIS.Caption = ""ENDPROCENDDEFINE10、当我把VFP的主窗口隐藏,将主表单设置为顶层表单,为什么运行该表单后,单击其中的按钮打开其他表单时,没有反应?答:忘记把其他表单设置为在顶层表单中了。也就是将表单的ShowWindow的值设为1-在顶层表单中。11、查询设计器要以图表方式输出时,却无法选择图表按钮,为什么?如何解决?答:在VFP的WIZARDS目录下的WZGRAPH.APP就是查询
59、设计器图形向导的应用程序,安装VFP以后该应用程序即会安装在WIZARDS目录。如果图表按钮无法选择,可以在命令窗口执行?_GENGRAPH命令查看系统变量的值,必然是空字符串。解决方法是:首先检查在WIZARDS目录下是否有WZGRAPH.APP应用程序,如果有的话,在命令窗口中执行_GENGRATH="<VFP目录>wizardswzgraph.app"命令,返回查询设计器,图表按钮即可选择。12、菜单设计器的生成程序功能为何会失效?答:菜单设计器之所以能生成程序,是因为执行了VFP的应用程序GenMenu.Prg所提供的功能,因此,在进入菜单设计器以后,如
60、果发现系统菜单菜单的生成选项无法选择,此时在命令窗口里执行?_GenMenu命令查看系统变量的值,必然是空字符串;或者点选系统菜单工具的选项,进入选项窗口的文件位置标签页,可以发现菜单生成器(M):右方的文本框也是空的,所以才无法启动生成器,解决方式可以在选项窗口,设置菜单生成器(M):的应用程序为VFP目录内的GenMenu.Prg,并点选设定为默认值按钮永久设置,也可以在命令窗口中执行_GenMenu="<VFP目录>GenMenu.Prg"命令。第八章 报表与标签的建立及设计1、怎样快速地建立Grid表格答:在程序中使用过Grid表格的程序员都觉得这种表格
61、的建立方法有些麻烦,特别是当表格的个数及表格项很多的时候,甚至会产生"恐惧感"。其实,只要能灵活地利用VFP的"表单生成器",就能大大提高Grid表格的制作效率。这里假设需要以TTT.DBF为处理对象建立一个Grid表格,因为字段很多,Grid表格的表格项数也相应的多,所以只能采用"变通"的方法,步骤如下:建立一个只有两个字段的自由表aa.dbf,并使其中的一个字段能与TTT.DBF中的某个字段相关;启动"表单生成器",选择"向导方式"中的"一对多表单向导";在"一对多表单向导"的操作引导下,以aa.dbf为父表、TTT.DBF为子
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度河北省护师类之外科护理主管护师押题练习试题A卷含答案
- 2024年度河北省护师类之儿科护理主管护师通关考试题库带答案解析
- 代驾公司城市拓展服务合作协议书
- 餐饮企业员工劳动合同签订与员工绩效考核协议
- 住宅小区拆除补偿及安置合同
- 财务会计顾问团队合作合同范本
- 水暖管道拆装搬运与改造服务合同
- 2026届新高考语文热点复习:古代诗歌鉴赏
- 制造企业安全管理制度
- 剧场票务人员管理制度
- 2004浙S1、S2、S3砌砖化粪池
- GB 5009.88-2023食品安全国家标准食品中膳食纤维的测定
- 骨髓穿刺术培训教案
- 《供应链管理》期末考试复习题库(含答案)
- 易制毒化学品安全管理培训
- Unit6 Presenting ideas-Project 课件-高中英语外研版必修第一册
- 北京市朝阳区招聘社区工作者考试试卷真题及答案2022
- 技术营销培训
- 气瓶的使用操作规程
- 江苏南京市北京东路小学四年级数学下册期末复习试卷(二)及答案
- 金属非金属矿山安全标准化讲义
评论
0/150
提交评论