admin管理员组

文章数量:1530518

2023年12月17日发(作者:)

第一章 Visual FoxPro基础知识

1、 什么叫数据库,数据库管理系统、数据库系统?

数据库,是存储在外存中有结构的相关数据的集合,是一种有结构的数据文件,是数据库管理系统管理的对象。数据库系统,是一个引入数据库以后的计算机系统,他由计算机硬件及相关软件、数据库、数据库管理系统及用户组成。数据库管理系统,是在操作系统支持下管理数据的软件,实现数据库的建立、使用和维护,是数据库系统的核心。

2、 简述数据库的3种模型,关系数据库的主要特点及操作。

数据库的数据模型有三种:层次模型,网状模型,关系模型。Visual FoxPro是一个关系型数据库管理系统。关系数据库的主要特点:关系中每一个属性都是不能再分的基本元素;各元组的县同列具有相同的数据类型;每个属性列被指定一个不同的属性名,在一个关系中,属性名不能重复;行、列顺序可任意变动,不影响表格信息;每个元组的内容是不相同的,不允许重复。有选择、投影、连接三种基本操作。

3、 简述Visal FoxPro的常量和变量概念。

常量是以直观的数据形态和意义直接出现的数据,在整个程序的执行过程中,常量的值是固定不变的。类型有:数值性,字符性,逻辑型,日期型,货币型等。变量是在程序执行过程中可以变化的数据项;变量实际上是用标示符命名的存放数据项的计算机内存单元。变量有变量名、变量值、变量类型、长度、变量作用域等属性。

4、 简述Visal FoxPro变量的类型,系统变量的概念及作用,内存变量的建立、现实、删除。

存盘和恢复方法。

Visual FoxPro的变量可分为字段变量和内存变量,内存变量又可分为一般内存变量、系统内存变量和数组变量。系统内存变量是Visual FoxPro自动创建并维护的内置内存变量。是用来保持固定信息。内存变量操作如下:1)显示:DISPLAY MEMORY或LIST MEMORY.。2)清除:RELEASE或RELEASE ALL。3)保存和恢复:SAVE TO<内存变量文件名>、RESTORE FROM<内存变量文件名>。

5、 简述Visal FoxPro的表达式类型,它们之间的运算规则。

Visual FoxPro的表达式可分为:数值型表达式,字符型表达式,日期型表达式,关系型表达式,逻辑型表达式。各种运算符的优先级为:数值运算符高于关系运算符,关系运算符高于逻辑运算符。所有同一级命令都是从左到右进行的,括号内的运算优先执行,嵌在最内层括号内的运算首先进行,然后依此由内向外执行。

6、 什么是函数?说明随机函数的概念和作用,宏代换函数的概念和作用。

函数是系统为实现一些特定功能而设置的内部程序,作为系统的一部分供用户使用。随机函数(RAND())作用是返回一个0-1.0之间的随机数。宏代换函数(&)作用是用字符型内存变量的"值"代替内存变量的"名"。

7、 简述名表达式的概念和作用。说明名表达式、宏代换函数、EVALUATE()函数三者的区

别及使用方法。

名表达式就是用一对括号将名称括起来,以实现替换功能。例如:X="学生.DBF" USE(X),后边的USE(X)相当于USE 学生.DBF 能用名表达式代替&时,尽量用名表达式,因为名表达式比&快得多,但应注意,只有在进行名称转换时才能使用名表达式,如果是处理表达式的读取,则不能使用名表达式取代&。

8、 简述Visual FoxPro的启动和退出方法。

启动:单击"开始"菜单上的"程序"选项,打开"程序"层叠菜单;移动标到Microsoft Visual

FoxPro,打开Visual FoxPro 5.0;单击图标,即可启动VFP5.0

退出:方法很多,最常用的是单击窗口右上角的关闭按扭。

第二章 表的建立与操作

1、 计表文件结构时如何确定字段明、字段类型和字段宽度?

对表结构的建立主要是确定表结构的字段名、字段类型、字段宽度。

字段名又称字段变量,最长为10个字符,允许由字母、汉字、数字和下划线组成,但必须以字母或汉字开头,中间不能有空格。字段类型有13种,它们是:字符型、数值型、逻辑型、日期型、备注型、通用型、整型、双精度型、浮点型、日期时间型、货币型、二进制字符型、二进制备注型。字段宽度:逻辑型,1;备注型,4;通用型,4;整型,4;日期型,8;货币型,8。

2、 LIST与DISPLAY命令有什么区别?

LIST显示当前记录的内容和表达式的结果。如果有更多的信息需要显示,而在窗口中显示不完,就滚动显示。LIST也可用来显示表达式的结果,它可以包括字母和数字的组合、内存变量、数组元素、字段和备注字段。DISPLAY显示当前表记录的内容和表达式的结果。如果有更多信息需要显示,而在窗口中显示不完,就显示第一屏信息,然后暂停。按任意键继续显示下一屏的信息。不带所有选项时,DISPLAY的默认范围是当前记录。

3、 FIND 与SEEK命令在使用上有何区别?

FIND与SEEK命令都是索引查找命令。由于索引查找速度快,又称快速查找。FIND命令可用于字符型和数值型数据的快速查找,可以查找字符型和数值型常量,但不能查找变量和表达式。用于查找的字符串呆以加定界符,也可以不加定界符。若使用字符型变量,必须加"&"。SEEK命令查找的对象是表达式,即可以是常量、变量或表达式,字符型常驻量必须加定界符,字符型变量前不需加"-"。SEEK命令的功能远强于FIND命令,所以在Visual

FoxPro中很少使用FIND命令,而用SEEK命令取而代之。

4、 什么是排序和索引?两者有何区别?

1)、概念不同:排序是按关键字的顺序建立一个新的、与原文件同样大小、结构相同的物理文件,改变了物理顺序;索引只是在原表的基础上建一个按逻辑顺序排列的索引表,原表的物理顺序并无改变。

2)占存储空间大小不同:排序后的文件与原文件大小相同,占存储空间大,且在排序时还要有临时转换空间,需有原表3倍大小的空间;索引文件只是一张相当于两个字段的表格,占存储空间小。

3)查找速度不同:排序文件中的查询依然按记录的物理顺序,查找速度慢;索引文件中的查找是按逻辑顺序进行的,查找速度快。

4)使用方法不同;

5)建立所需时间不同。

5、 删除表记录与删除表文件的命令各是什么?两者有何区别?

删除表记录的命令是DELETE和PACK或ZAP

DELETE是对表中要删除的记录加上删除标记,然后使用PACK真正删除记录。

ZAP是将表文件中的所有记录完全删除,它相当于DELETE ALL 后用PACK。

删除表文件的命令是ERASE或DELETE FILE

删除表记录后表文件还存在,还存在表结构。而删除表文件后,表记录和表结构都被删除。

6、 REPLACE命令与STORE命令、"="运算符有何区别?

REPLACE 命令是用来修改字段的值,例如我们可以用REPLACE来修改学生表中的姓名字段:REPLACE 奖学金 WITH 100 FOR 姓名="李平"

STORE和=命令是用来为内存变量赋值:STORE 30 TO M或M=30,M是内存变量。REPLACE与STORE和=的处理对象不同。

7、 VISUAL FOXPRO有几种类型的索引?如何用表设计建立索引?

Visual FoxPro有种类型的索引文件:一种是传统的.IDX文件,这种索引文件只有一个索引表达式,称为单项索引文件。另一种是复合索引文件,其扩展名是.CDX,复合索引文件包含多个索引表达式,这些索引表达式称为索引标识。在表设计器中建立索引的方法是:打开要建立索引的表的表设计器,单击索引标识卡,出现其对话框;然后在索引名文本框中输入该索引标识的名字,索引名框右边按钮决定升序或降序;用鼠标可以改变索引表示列出的顺序;类型下拉表中可选择索引类型。

8、 什么是主索引?如何建立主索引?什么是SET ORDER TO〈数值表达式〉的规则?

主索引文件或主控标识决定了表文件的逻辑顺序,在使用打开索引文件或用SET ORDER

TO命令重新确定主索引文件或主控标识时,都会遇到索引序号这一概念。所谓索引序号就是众多打开的索引文件或索引标识的排序。首先是打开的单项索引文件在打开<索引文件名表>中的次序编号;然后是结构复合索引文件,按其生成顺序记数的索引标识的冷编号;最后是独立复合索引文件,按其生成顺序记数的索引标识的冷编号。SET ORDER TO就是确定主索引的命令,其后跟索引序号。

9、 VFP中导出数据的几种方法:

当VFP处理好数据后,这时你可以用多种方法将这些数据导出,以便被其它应用程序(如Excel等)所用。下面向你简单介绍几种导出数据的方法:

1.用"导出数据"对话框。你可以从VFP主菜单中选择"文件/导出…"打开"导出"对话框,在该对话框中的"来源"框中输入表名(c:),在"类型"中指定要导出数据的类型(Microsoft Excel),在"到"框中输入导出的路径和文件名(C:),然后按"确定"即可。这时你如果查看command窗口,可发现以下代码:

COPY TO C: TYPE XL5

2.用COPY TO命令。COPY TO命令的工作对象是VFP中的表,它要依据"TYPE"项才知道要产生哪一类导出文件。对于上面的导出过程,可用以下方法实现:

USE students

COPY TO C: TYPE XL5

3.用SET ALTERNATE TO写入ASCⅡ文件。用该命令可以把屏幕上的内容导出,导向一个文件,下面例子可以将系统状态输入到文件中:

SET ALTERNATE TO

SET ALTERNATE ON

SET CONSOLE OFF

?"系统状态"+DTOC(DATE())+"@"+TIME()

LIST STATUS

SET ALTERNATE OFF

SET CONSOLE ON

4.用SET PRINTER TO命令。用该命令可把打印输出到文本文件中:

SET PRINTER TO

SET PRINT ON

???CHR(27)+"广大计算机爱好者"

??"你们好!"

?"祝你们新年快乐"

SET PRINT OFF

5.用REPORT FORM TO FILE命令。运行报表的REPORT命令有许多选项,把报表输出保存到文件中的方法为:REPORT FORM(报表名)TO FILE(文件名)

10、什么是表结构文件?如何用表结构文件建立和修改表结构?

表结构文件就是存储表的结构的文件,它也是一个表,但是它是以表的字段为记录的。我们可以用表结构文件来建立新表。格式为:CREATE<表文件名>FROM<表结构文件名>。利用<表结构文件名>中说明的结构创建新表<表文件名>。

第三章 程序设计基础

1、 结化程序设计具在几种基本控制结构?哪几种?

顺序结构是指程序的执行按其中的命令从上到下顺序执行。选择分支结构是根据条件的测试结果执行不同的操作。依次判断某一条件后来执行某一段固定程序,直到条件不满足。

2、 什么叫算法?如何表示算法?请用生活中的例子说明。

算法就是解决问题的方法及步骤。表示算法的形式很多,如自然语言、传统流程图、N-S图和伪代码等。无论哪种表示方法都可以达到清晰描述算法过程,整理解决问题思路的目的。例如:做一道菜,我们得先洗菜,然后用刀进行加工,加工好了后,点火,开始烧菜。当然如果中间的步骤不同,做出来的菜的味道也就不同。这一过程就是生活中做一道菜的"算法"。

3、 程序文件一般包括几部分?哪几部分?

程序文件主要包括三部分:数据输入、数据处理和数据输出。输入语句包括表达式接收语句INPUT;字符串接收语句ACCEPT;单字符接收语句WAIT。输出语句包括换行输出语句?和同行输出语句??。

4、 什么叫死循环?如何预防死循环的出现?

死循环是在循环语句中没有退出循环语句,或有退出循环语句而永远达不到退出循环的条件。所以在编写程序时要预防死循环的出现,方法是要使条件判断变量在循环过程中变化,并且最终满足条件退出循环。举例如下:

死循环:A=1

DO WHILE A>0

A=A+1

ENDDO

非死循环:A=1

DO WHILE A>0

A=A+1

IF A>99

EXIT

ENDIF

ENDDO

5、 请说明过程和过程文件的区别?

过程是一个由PROCEDURE<过程名>开头,ENDPROC结尾了子程序段,其所处的文件称为过程文件,即过程文件是由若干个过程构成的,而过程必须存放在一个过程文件中。过程文件的扩展名为.PRG。过程的存在格式为:PROCEDURE<过程名>程序最后有ENDPROC。过程是为完成某个操作而编写的代码,可以将过程放在单独的程序文件中,也可以放在一般程序的结尾。

6、 程序之间参数传递有几种方法?请说明每种方法的优缺点。

有两种:利用内存变量的作用域属性;利用DO<文件名>WITH<参数表达式列表>。

利用不同属性的内存变量的作用域,可以实现程序之间参数和互传。Visual FoxProK 内存变量有4种作用域属性:自然属性、公用属性、私有属性和本地属性。利用内存变量的属性,可以实现主程序与子程序之间的参数传递,但使用的变量必须同名。如果不想爱变量名的限制,又想达到传递参数的目的,就得利用DO<文件名>WITH<参数表达式列表>命令了。

7、 请说明内存变量的自然属性、私有属性和本地属性三者的异同点。

自然属性:

1)定义格示:STORE/=、DIMENSION、DECLARE、INPUT、SUM等。

2)作用范围:该程序及其调用的下属子程序。

3)传递方向:单向(由主程序到子程序)。

4)变量寿命:所在程序运行结束后,该变量被自动删除。

私有属性:1)格示定义:PRIVATE<内存变量列表>

2)作用范围:该程序及其下属子程序,同自然属性。

3)传递方向:单向(由主程序到子程序),同自然属性。

4)变量寿命:程序运行结束后,该变量被自动删除。

5)特殊作用:可隐藏上级程序中与当前程序同名的变量,即对当前程序中变量的操作,不影响上级程序中与当前程序同名的变量值。

本地属性:1)定义格示:LOCAL<内存变量列表>。

2)作用范围:该程序本身。

3)传递方向:无。

4)变量寿命:程序运行结束后,该变量被自动删除。

5)特殊作用:可屏蔽上级程序中与当前程序同名的变量,即对当前程序中变量的操作,不影响上级程序中与当前程序同名的变量值。同时也不受下属子程序中同名内存变量值的影响。

8、 请说明调用过程和调用自定义函数方法的异同点。

调用过程是用DO语句,DO<过程名>,而自定义函数虽然是一个子程序,但是不能用DO命令来调用而只能象内部函数那样出现在表达式中,自定义函数名(<参数表达式列表>)。

9、 一般一个VFP就用程序由几部分组成?

通常一个VFP程序由以下几个部分:一个或多个数据库、设置应用程序系统环境的主程序以及用户界面。此外,还可以包括查询和报表,允许用户检索或输出自己的数据。因此,无论多简单的问题,也应该包括数据源、交互界面和数据输出。

10、 面向过程的程序方法是什么?

通常是将应用程序目标系统的整体功能进行分解,自顶向下不断的把复杂的处理分解为子处理,这样一层一层地分解下去,直到仅剩下若干个容易处理的子处理为止。

第四章 面向对象程序设计基础

1. 问:什么是面向对象程序设计方法(OOP)?

答:在面向对象程序设计方法中,客观世界中的问题被看作客观世界中的实体与实体之间的关系及其相互作用。每一个实体就是一个对象,其中包含有关数据和一组对这些数据的操作,是一个相当于微型程序的软件"零件"。面向对象程序设计就是要将这些"零件"进行严密而有效的连接组装,形成能解决客观问题的软件"机器"。

2. 问:面向过程程序设计方法与面向对象程序设计方法的区别是什么?

答:面向过程程序设计方法与面向对象程序设计方法的区别有以下几点:

① 前者在程序设计时将数据和算法完全的分开,后者将数据和算法看作是不可分割的实体,称为对象;

② 前者在程序设计过程中以算法为中心,围绕着实现系统功能的过程来构造系统,后者以数据为中心,所有的操作都围绕着数据而展开;

③ 前者是一句接一句地编写程序,后者主要是适当地创建对象、修改对象属性和编写对象的方法程序。

3. 问:利用面向对象程序设计方法进行程序设计的步骤是什么?

答:面向对象程序设计方法要在应用程序的统筹规划和设计之后作以下步骤:

① 创建对象或选用合适的对象

② 设置对象的属性

③ 选择并设计适当的对象事件及操作

④ 在过程代码中调用对象以实现对象之间的通信

4. 问:什么是对象的封装性?

答:封装是指将对象的方法程序和属性代码包装在一起,对象的属性数据也可称为对象的内部数据。外界用户(包括应用程序用户和其他对象实体)不能跨越对象的方法直接操作对象的内部数据。

5. 问:面向对象程序设计中,如何利用对象类的继承性实现代码的可重用性?

答:继承是指子类自动地共享其父类中定义的所有数据和方法的机制。这样对于某一对象类的多个子类或多重子类而言,我们就不用重复地设计其中的一些基本数据和方法,从而实现了代码的可重用性。

6. 多态性是指什么?

答:子类继承了父类的方法,但是在定义其中的过程时,可以根据子类的不同需求改变或修改父类中原有方法的实现算法,新的实现算法在子类中屏蔽父类的实现算法,这就是继承中的屏蔽性。由于继承屏蔽性的存在,同一方法名在不同的类层次中或同一层次的不同子类中可能具有不同的实现算法,这就是多态性。

7. 问:如何向对象发送消息?消息的格式是怎样的?

答:向对象发送消息就是对该对象的某一个固有操作(方法或事件)的调用。消息的格式如下:

对象名.方法名/事件名([<参数列表>])

8. 问:消息与方法的区别和联系分别是什么?

答:消息时要求某个对象执行某个操作的常规命令;方法是对象内部的一段能完成特定操作的程序代码。消息是调用方法的命令;方法是相应消息的算法实现程序。

9. 问:在VFP中,对象的方法程序与事件有什么区别和联系?

答:在VFP中,对象的方法程序分成两种:第一种方法程序与对象的事件相关联,其中的代码当事件发生时执行,这种方法程序往往由程序设计人员自行设计算法;第二种方法程序是独立于事件存在的,其中的代码由消息来调用,这种方法程序一般是系统所固有的。

10. 问:容器和控件分别是什么?它们之间有何联系?

答:容器类对象可以包含其他对象;控件类对象是一个单一而独立的部件,其中不能包含其他对象。它们之间是包含与被包含关系,这种关系可以不断的嵌套,从而形成容器层次。

11. 问:表单的Refresh方法和Release方法有何区别?

答:Refresh方法的功能是根据对表单的最新修改重新画出表单,并刷新其中的所有值。除表单以外,Refresh方法还可应用于文本框、命令按钮等各类控件。Release方法的功能是从内存中释放表单,它还可用于表单集。

12. 问:按钮组的Click事件和组中某一按钮的Click事件的区别是什么?

答:按钮组中按钮的Click事件是针对于该按钮而设置的,与组中其他按钮无关,也就是说,当别的按钮被单击时,该Click事件中的程序代码不会执行。这类Click事件的编写相对较为简单。按钮组的Click事件是对于整个按钮组而设置的,对组中的所有按钮都起作用。因此,该Click事件必须知道用户单击的是哪个按钮,我们要用按钮组的Value属性来确定这一点,并由此确定不同的程序执行代码,这可以用DO CASE … ENDCASE语句实现。所以按钮组的Click 事件的编写比较复杂。两种Click事件能够实现同样的操作,用户可以根据习惯和需求选择编写。

13. 问:在容器层次中,引用对象的格式是什么?

答:在容器层次中,引用对象的格式有两种:

绝对引用对象: 表单集名.表单名.容器名1.….容器名n.控件名

例如,3

相对引用对象:例如,1

d3等

14. 问:修改属性值的两种方式是什么?

答:第一种方式是在程序设计的交互界面上修改属性值。这种方式常用于一些一直保持不变的属性值或属性的初值。第二种方式是在程序运行过程中修改属性值,这种修改是由写在各个方法程序中的语句来实现的。这种方式用于随着程序运行不停变化的属性值。

15. 问:如何运用容器对象的"编辑"命令?

答:当要在某一容器对象的内部增加、删除、修改对象时,我们就要用到容器对象的"编辑"命令。使用方法:右击容器对象的任意位置,在弹出的快捷菜单中选取"编辑"菜单命令即可。

第五章 表单的建立与操作

16. 问:可以采用哪几种方法创建表单?

答:(1)在"项目管理器"中选择"文档"选项卡,然后选择"表单",选择"新建"再选择"表单向导"。

(2)通过在"工具"菜单上选择"向导"选项并选中"表单"。

(3)通过在"文件"菜单上选择"新建",在"新建"窗口中,选择"表单"再选中"向导"按钮。

(4)通过在主窗口上的工具栏中选择"新建"按钮,在"新建"窗口中选择"表单"再选中"向导"按钮。

17. 问:可以采用哪几种方法进入表单设计器?

答:(1)通过"项目管理器"。

(2)通过"文件"菜单。

(3)通过在主窗口上的工具栏中选择"新建"按钮。

(4)通过命令:CREAT FORM [<表单名>]。

18. 问:可以采用哪几种方法设置Tab键次序?

答:(1)以交互方式设置Tab键次序。

(2)用列表方式设置Tab键次序。

19. 问:可以将哪些类型的对象添加到表单中?

答:(1)数据环境。

(2)控件。

(3)容器。

(4)用户自定义类和OLE对象。

20. 问:什么是容器对象的收集属性和记数属性?

答:Visual FoxPro中的所有容器对象都有与它们相关联的收集属性和记数属性。

收集属性是引用其每个被包含对象的数组,其得到的值的类型为对象型。

记数属性是指示其包含的对象数的数值属性,其得到的值的类型为数值型。

21. 问:表单中的控件可分为哪几类?

答:表单中的控件可以分两类:与表中数据绑定的控件(绑定型控件又称为数据型控件)和没有与数据绑定的控件(非绑定型控件)。

22. 问:编辑事件或方法程序代码可采用的步骤有哪些?

答:(1)从"显示"菜单中选择"代码"选项。

(2)在"过程"框中选择事件或方法程序。

(3)在编辑窗口中键入代码,编辑方法与程序文件方法相似。

23. 问:如何设置表单或控件的前景或背景颜色?

答:(1)从"显示"菜单中,选择"工具栏"并选择"调色板"。

(2)选择"前景颜色"按钮或"背景颜色"按钮。

(3)选定想改变的控件或表单。

(4)在"调色板"工具栏中选择想使用的颜色。

24. 问:如何创建自定义颜色?

答:(1)在"调色板"工具栏中,选择"其他颜色"。

(2)在"颜色"对话框中,选择"规定自定义颜色"显示"自选颜色选择器"。

(3)选择"自定义颜色"框,然后在"自选颜色选择器"中单击,选择所需的自定义颜色。

(4)选择"添加到自定义颜色",把新颜色添加到调色板中。

(5)选择"确定"。

25. 问:要将参数传递到在表单设计器中创建的表单,可用哪些步骤来实现?

答:(1)创建容纳参数的表单属性,也就是向表单中添加新属性,属性名根据问题的需要随意命名。

(2)在表单的Init事件代码中,包含语句:PARAMETERS〈参数列表〉。

(3)在表单的Init事件代码中,将参数分配给属性。

(4)当运行表单时,在 DO FORM命令中包括一个 WITH子句。

26. 问:若要从表单返回值,可采用哪些步骤来实现?

答:(1)将表单的WindowsType属性设置为1,使表单成为模式表单。

(2)在与表单的Unload事件相关代码中,包含一个带返回值的RETURN命令。

(3)在运行表单的程序或方法程序中,在DO FORM命令中包含TO关键字。

27. 问:要指定默认的表单模板,可采用哪些步骤?

答:(1)从"工具"菜单选择"选项"命令。

(2)在"选项"对话框中,选择"表单"选项卡。

(3)在"模板类"区,选中"表单"复选框。

(4)如果没有选定表单模板,会打开"打开"对话框,这样我们可以选择一个表单类。如果己选定表单模板,可以选择对话按钮来选择其他的类。

(5)如果想在以后的 Visual FoxPro工作期中使用这个模板,选择"设置为默认值"按钮。

(6)选择"确定"按钮

28. 问:要将新属性添加到类中,可采用哪些步骤?

答:(1)从"类"菜单选择"新建属性"。

(2)在"新建属性"对话框中键入属性的名称。

(3)指定可视性:公共、保护或隐藏。

(4)选择"添加"。

29. 问:要在类中添加新方法程序,可采用哪些步骤?

答:(1)从"类"菜单中选择"新方法程序"。

(2)在"新方法程序"对话框中,键入方法程序的名称。

(3)指定可视性:公共、保护或隐藏。

30. 问:要将类从一个类库复制到另一个类库,可采用哪些步骤?

答:(1)确保两个类库都在项目中(不一定是同一个项目)。

(2)在"项目管理器"中,选择"类"选项卡。

(3)单击包含类的类库左边的加号。

(4)将类从旧库中拖到新库中。

31. 问:要注册一个类库,可采用哪些步骤?

答:(1)从"工具"菜单中选择"选项"。

(2)在"选项"对话框中,选择"控件"选项卡。

(3)选择"可视类库"并选择"添加"按钮。

第六章 数据库的建立与操作

1、VFP数据库由哪几个层次组成?关系数据库中数据间联系是通过什么实现的?

答:VFP的数据库是由4个层次组成的:数据库、表、记录和字段。

在关系数据库中,字段是关系的属性,记录是关系的元组,表则是一关系,而数据库即为多个关系的集合。

在关系数据库中,只存在"表"(关系)这一种逻辑数据存储形式。故关系数据库就是通过表来保存数据和数据之间联系的。

2、VFP中关键字的含义是什么?有哪几种常用的关键字?

答:在VFP的表中,如果某个字段或多个字段的值可以唯一地标识一条记录,则该字段就称

为关键字。

如果一个关键字是用以区别每条记录的唯一性标志,并作为该表与其他表实现关联的,则称为主关键字或主码。

除主关键字以外的其他关键字称候选关键字。

当一个表的主关键字出现在另一个表中时,而对于后者来说,该关键字不是该表的主关键字,则称该关键字为外部关键字。

3、VFP中最普遍的关系是哪一种?实现该关系对关键字有何要求?

答:VFP中最普遍的关系是表与表间的一对多联系;实现该联系时需将父表中的主关键字放入子表当中,以实现两表间的有效关联。"一"方使用主索引关键字,"多"方使用普通索引关键字。

4、数据库表与自由表有何区别?联系如何?有何特点?

答:归属于某个数据库的表称为数据库表。

独立存在、不与任何数据库相关联的表称为自由表。

两种表是可以相互转化的。

数据库表对于自由表来说具有更加强大的功能以及拥有自由表所没有的许多特性:长文件名、字段验证等。所以大多数应用需要建立数据库,并创建新表或添加自由表到数据库中,即成为数据库表。

5、什么是关系数据库的完整性?包括几部分?如何实现?

答:数据库的完整性是指数据库中的数据的有效性、一致性和兼容性。

要实现数据库的完整性,必须在数据库的建立和操作过程中,遵循一定的完整性规则,并随时检查是否满足完整性的约束。

数据库的完整性包括以下三部分:

(1)实体完整性。指一个表中主关键字的取值必须是确定的、唯一的,不允许空值。

(2)用户自定义完整性。是由实际应用环境中的用户需求决定的。通常为某个字段的取值限

制、多个字段间取值的条件等。

(3)参照完整性。指在"子"表中实现关联的外部关键字的取值或为空值或为"父"表中实

现相应关联的主关键字值的子集。

6、什么是数据字典与数据工作期?有何用途?

答:数据字典是每一个VFP数据库所特有的一个数据集合,其中存放数据库表的各种特征

信息,也称:存储数据库的数据库。

数据工作期是多表操作的动态工作环境。利用它可以打开关闭和浏览多个数据库表或自由表,并可设置表属性。

7、数据库表间的关系有哪几种?有何用处?如何建立?

答:在两个数据库表之间可以创建两和种关系类型:永久性关系和临时性关系。

建立永久性关系的目的是:

(1)为实现参照完整性提供依据。

(2)在查询设计器、数据环境设计器中直接显示为表索引之间的连线,作为表单和报表

间的默认关系。

(3)在查询设计器、视图设计器中作为默认连接条件。

建立临时性关系的目的是:

让父表可以控制子表,使子表的记录指针随父表的记录指针的移动而产生联动。

建立永久性关系可以通过"数据库设计器"或用命令方式。

建立临时性关系可以通过"数据工作期"窗口或命令方式。

8、VFP中有哪几种有效性?包括哪些内容?

答:VFP中有字段级和记录级有效性规则。

字段级属性有:定义长字段名、设置字段标题、设置字段注解、建立输入掩码、设置字段的默认值以及设置字段级有效性规则。

数据库表的其他属性有:长表名和表的记录级有效性规则(可以在同一条记录的多个字段间进行比较,完成有效性规则的约束)。

9、VFP中的触发器的工作原理是什么?有哪几种触发器?对应记录的哪些操作?

答:触发器是建立在表上的表达式,当表中的任何记录被指定的操作命令修改时,在执行了字段级、记录级、主关键字等有效性检查后,触发器就被激活。利用触发器可以完成特殊的数据检验、参照完整性实施及数据库更新的维护操作等许多功能。

触发器分插入触发器、更新触发器和删除触发器三种,分别对应数据库表记录的插入、更新和删除操作。

10、工作区使用规则有哪些?

答:如下所述:

(1)在一个工作区内只能存在一个打开的表文件。

(2)当前工作区只有一个,用户可对其中的表文件进行所有操作;但对非当前工作区中

的非当前表文件进行操作时必须采取引用的方式:别名·字段名或别名->字段名。

(3)每个工作区中的表文件都有自己独立的记录指针。

(4)一个表文件能在多个工作区中打开。

(5)指定工作区可以使用数据工作期或命令。

(6)由系统指定当前可用的最小号工作区使用:select 0 或 use <表文件> in 0

11、建立多表表单应用的步骤有哪些?

答:大致过程如下:

(1)创建一个或多个数据库。

(2)在数据库环境下创建相应的数据库。

(3)建立表间联系。

(4)建立参照完整性。

(5)建立用户初始界面。

(6)建立数据环境。

(7)完善用户界面。

(8)编写代码。

12、怎样为备注型字段建索引

答:Visual FoxPro3.0不支持长度变化的关键字,但如果所建索引的备注型字段的长度在建完索引后不再变化,那么建立备注型字段的索引还是可行的。但在建索引时必须注意:索引的表达式不能直接用备注型的字段名,还要略加变通,如用TRIM()函数把备注型字段括起来,就能顺利地为备注型字段建索引。

第七章 查询、视图及菜单设计

1、如何粘贴VFP顶层表单?

答:当你将表单设置为顶层表单并独立运行于Windows下时,会发现表单中复制粘贴功能失效,这给实际工作造成极大的不便,从而使编制的软件达不到专业水准。

造成这一问题的原因是微软设计VFP时,只考虑了位于系统选单下的表单的复制和粘贴情况,即位于系统选单下的表单可使用复制及粘贴热键,而处于Windows下的表单完全脱离了系统选单的控制,因此复制及粘贴热键失效。解决的办法是可在表单的控件(本文举例为文本框)中,为KeyPress Event编写如下事件处理程序,该事件处理程序首先将选择内容复制到Windows剪贴板上,然后再将剪贴板上的内容添加到控件中。

KeyPress Event

LPARAMETERS nKeyCode, nShiftAltCtrl

if nkeycode=3

&& CTRL+C 复制

-cliptext=t

endif

if nkeycode=22

&& "CTRL+V" 粘贴

do case

case rt=0

=-cliptext+

case rt〉=1 and rt〈=len()

=subs(,1,rt)+

-cliptext+subs(,rt+1)

endcase

endif

us()

sele recetem

if not eof()

skip

endif

h

2、如何在当前文档应用程序中使用我自己定制的菜单?

答:假定已经创建了自己定制的菜单,从ActiveDoc类中的Run Event来运行菜单程序。最好是在显示任何表单之前及执行READ EVENTS命令之前运行菜单程序。

3、怎样改变菜单的字体大小?

答:请参考:

1、本来菜单生成器中是没有字体的选项的。

2、利用菜单生成器的 选项中 跳过(K) 即SKIP FOR 中编写代码

代码为: .F. FONT '宋体',12

3、实际上,生成的代码为: skip for .f. FONT '宋体',12

这样就达到了改变菜单子项字体的目的。

但顶层菜单的字体是不会改变的。

4、菜单生成后,您可以modi menu

5、如果想完全解决问题,可以利用API。

在进入系统时改变分辨率,使用户操作环境与开发环境匹配。

可以参考有关vb的文章。

4、如何建立一个带有顶层菜单的顶层表单?

答: 要建立一个顶层表单,请将表单的 ShowWindow 属性设置为 2- 作为顶层表单。要建立一个顶层菜单,请打开"菜单设计器"。从"显示"菜单中,选择"常规选项",然后设置"顶层表单"选项。要想将顶层菜单放入顶层表单中,请在表单的 Init 事件中添加如下代码:

DO

with THIS

5、当需查询或统计某一年龄段的人员资料时,由于年龄是随时间递增的,如果用手工或人工干预来增加年龄则是件非常麻烦的事,不知有何方法能让数据库中的年龄字段的年龄自行递增?

答:库中不要把年龄作为字段,你只要登记人员的出生年份即可.显示时,人员的年龄为

今年与出生年分之差。

6、在开发环境中没问题,但编译并安装到另一台机上就出问题了,说找不到文件。而且弄不懂VFP6中的视图对象的SQL藏在那里,没法象查询那样?

答:视图对象的SQL保存在数据库文件中.你用use 数据库.dbc 就可看到view记录项.用视图前要先打开数据库。

7、我做一个浏览功能的表单.(数据取自三个dbf),内有一表格,数据源来自一个查询的结果.现在的问题是:每运行一次表单,它先做查询,一定要把查询结果的窗口关掉以后才显示我所要的浏览窗口?

答:将查询结果存放在一个文件上中,再在自定义方法中用代码把dbfnam

与表格联系起来。

代码可以这样写:

sele 字段 from 数据表名 where 条件 INTO CURSOR ABC

source="ABC"

sourcetype=2

8、用VFP建立适用不同分辨率的菜单?

答:程序开发者开发的菜单一般仅适用于某些特定的分辨率,如果使用者的系统分辨率不同,将造成画面上菜单过长或过短,为解决此问题一般都开发几个分别适应不同分辨率下的菜单,但如此一来将造成一些不必要的麻烦,下面的程序将解决此问题。

1.首先在640*480分辨率下建立一新菜单

2.将下列代码放在复合式物件的INIT METHOD中

LOCAL OLDHEIGHT,OLDWIRTH,CHANGEHEIGHT,CHANGEWIDTH

OLDHEIGHT=640

OLDWIDTH=480

CHANGEHEIGHT=0 &&新分辨率与640*480分辨率之HEIGHT差

CHANGEWIDTH=0 &&新分辨率与640*480分辨率之WIDTH差

*SYSMETRIC(1) &&得到目前分辨率HEIGHT

*SYSMETRIC(2) &&得到目前分辨率WIDTH

IF SYSTEMETRIC(1)!=OLDHEIGHT

REEN=.T.

CHANGEHEIGHT=SYSMETRIC(1)/OLDHEIGHT

CHANGEWIDTH=SYSMETRIC(2)/OLDWIDTH

&&更改菜单外框

IF ASS="FORM"

=*CHANGEHEIGHT

=*CHANGEWIDTH

=*CHANGEHEIGHT

=*CHANGEWIDTH

ENDIF

&&逐一更改CONTAINER内的控制项

FOR I=1 TO LCOUNT

WITH LS(I)

.HEIGHT=.HEIGHT*CHANGEHEIGHT

.WIDTH =.WIDTH*CHANGEWIDTH

.TOP =.TOP*CHANGEHEIGHT

.LEFT =.LEFT*CHANGEWIDTH

ENDWITH

ENDFOR

REEN=.F.

ENDIF

H

注:如果您预先设定最低分辨率为800*600

首先在800*600分辨率下建立一新菜单

把OLDHEIGHT=640改为OLDHEIGHT=800

把OLDWIDTH=480改为OLDWIDTH=600

9、创建不带有标题栏的顶层表单实例

答:若要创建一个不带标题栏的表单,如果把它当作表单类的实例来创建,可能会有一定困难。通常,通过如下设置可创建一个不带标题的顶层表单:

? 将 ShowWindow 属性设置为 2 (作为顶层表单)

? 将 BorderStyle 属性设置为 2 (固定对话框)

? 将 Caption 属性设置为空字符串。

? 将 MaxButton、MinButton、ControlBox 和 Movable 属性设置为"假"(.F.)。

例如,用以下代码产生一个不带有标题栏的表单:

PUBLIC myForm

myForm = CREATEOBJECT("blankForm")

RETURN

DEFINE CLASS blankForm AS form

ShowWindow = 2

BorderStyle = 2

Caption = ""

ControlBox = .F.

MaxButton = .F.

MinButton = .F.

Movable = .F.

ENDDEFINE

然而,表单显示时带有一个空标题栏。为了解决此问题,并生成不带标题栏的表单,您可以先将 Caption 属性设置为一个字符串值,然后在表单的 Init 方法程序中将它重置为空字符串。以下代码对前例做了修改,可以正确显示表单:

PUBLIC myForm

myForm = CREATEOBJECT("blankForm")

RETURN

DEFINE CLASS blankForm AS form

ShowWindow = 2

BorderStyle = 2

Caption = "Testing form"

ControlBox = .F.

MaxButton = .F.

MinButton = .F.

Movable = .F.

PROCEDURE Init

n = ""

ENDPROC

ENDDEFINE

10、当我把VFP的主窗口隐藏,将主表单设置为顶层表单,为什么运行该表单后,单击其中的按钮打开其他表单时,没有反应?

答:忘记把其他表单设置为在顶层表单中了。也就是将表单的ShowWindow的值设为1-在顶层表单中。

11、查询设计器要以图表方式输出时,却无法选择图表按钮,为什么?如何解决?

答:在VFP的WIZARDS目录下的就是查询设计器图形向导的应用程序,安装VFP以后该应用程序即会安装在WIZARDS目录。如果图表按钮无法选择,可以在命令窗口执行?_GENGRAPH命令查看系统变量的值,必然是空字符串。解决方法是:首先检查在WIZARDS目录下是否有应用程序,如果有的话,在命令窗口中执行_GENGRATH=""命令,返回查询设计器,图表按钮即可选择。

12、菜单设计器的生成程序功能为何会失效?

答:菜单设计器之所以能生成程序,是因为执行了VFP的应用程序所提供的功能,因此,在进入[菜单设计器]以后,如果发现系统菜单[菜单]的[生成]选项无法选择,此时在命令窗口里执行?_GenMenu命令查看系统变量的值,必然是空字符串;或者点选系统菜单[工具]的[选项],进入[选项]窗口的[文件位置]标签页,可以发现[菜单生成器(M):]右方的文本框也是空的,所以才无法启动生成器,解决方式可以在[选项]窗口,设置[菜单生成器(M):]的应用程序为VFP目录内的,并点选[设定为默认值]按钮永久设置,也可以在命令窗口中执行_GenMenu=""命令。

第八章 报表与标签的建立及设计

1、怎样快速地建立Grid表格

答:在程序中使用过Grid表格的程序员都觉得这种表格的建立方法有些麻烦,特别是当表格的个数及表格项很多的时候,甚至会产生"恐惧感"。其实,只要能灵活地利用VFP的"表单生成器",就能大大提高Grid表格的制作效率。

这里假设需要以为处理对象建立一个Grid表格,因为字段很多,Grid表格的表格项数也相应的多,所以只能采用"变通"的方法,步骤如下:

建立一个只有两个字段的自由表,并使其中的一个字段能与中的某个字段相关;

启动"表单生成器",选择"向导方式"中的"一对多表单向导";

在"一对多表单向导"的操作引导下,以为父表、为子表的基本模式制作表单。在选择子表字段时,以未来Grid表格的需要来进行字段的选取。

打开由第③步制作的表单,剪切表单上的Grid表格,然后再退出该表单;

打开您程序中需要使用Grid表格的表单,把在第④步上剪切的Grid表格复制到当前表单上。

至此,一个符合程序要求的Grid表格即制作完毕。无论Grid表格多么大,用本方法都能在两分钟内做出一个符合要求的Grid表格。而用"手工"制作一个仅50个字段的Grid表格一般需要半个小时(而且还可能出错)。显然,Grid表格越大,本方法的效率就越高。

2、在报表设计器中,如何计算总页数?

答:在编打印程序时,一般都是将要打印的数据存入一临时表中(如),而

每页打印的记录数为lines_per_page.总页数计算:

sele tmp

total_pages=ceiling(recc()/lines_per_page)

3. 如何在程序中更改报表的标题(该标题由用户在表单中输入)?

答:使用变量,例如:

在标题中输入变量_TITLE

打印报表时:

PUBL _TITLE

_TITLE=

REPO FORM ...

4、使用报表打印时,如何控制打印页数及范围?

答:VFP中有这样的命令:REPORT FORM XXX RANGE nStartPage,nEndPage,nStartPage是打印的第一页,nEndPage是打印的最后一页,看到这里,大家可能明白,要设置打印范围,只需更改nStartPage及nEndPage的值即可,现举例如下:

REPORT FROM dlhome range 2,5 to printer &&打印第2~5页

REPORT FROM dlhome range 2,2 to printer &&打印第2页

5、VFP报表生成器使用技巧

答:VisualFoxPro5.0(VFP5.0)的报表生成器可以对单个数据库或多个数据库通过关联方式来产生报表。其数据来源可以是内存变量,也可以是数据库中的记录。报表的封面、表头、表体、表尾分别对应报表生成器的不同的带。一般在标题带制作封面,在表头带制作各种表头,在详细带制作表体,在页脚带制作表尾。

一、用报表生成器创建报表

(1)打开要创建表的各个相关的数据库,设置索引,设置数据库的关联。

(2)将当前工作区选择为主库工作区。

(3)单击文件菜单,选择"新建",在弹出的对话框中选择"报表",然后,单击右上边的"新文件"图标。选择系统菜单中的"报表"选项,在弹出的下拉菜单中选择"快速报表"选项,在弹出的对话框中点击"字段"可以选择要打印的字段;点击"标题"可以在表头带里打印或取消字段

名;点击"添加别名"可以在每个字段变量前加上当前工作区数据库的别名。确认后即可自动在报表各个带里摆放相应的字段和变量。建议不要加别名,否则当多个数据库共用一张表时,会出现找不到变量的错误。

用报表控制工具画出适当的表格线,用"格式"菜单中的"文本对齐方式"设置各个域的对齐方式,画出报表头和报表尾,一张表就基本制作完了。

二、创建报表的技巧

1.对象组的选取

在画表的过程中,经常要移动各个带里对象的存放位置,或者把一个带里的对象拷贝或移动到其它带里。把要移动的对象标记为一个对象组合,使对象移动或拷贝的操作更加方便,标记对象组的方法有如下几种:(1)当要标记一个带里的所有对象时,可以双击该带下端的分隔条,选取该带里的所有对象,然后选择"格式"菜单中的"分组"选项,把所有选取的对象标记为一个对象组,方便移动或拷贝。

(2)当要标记相邻的多个对象时,用鼠标拖曳出一矩形框,把要选取的对象圈入矩形框中,释放鼠标,则可同时选取多个对象。

(3)当要标记不相邻的多个对象时,按下Shift键的同时,用鼠标点击要选取的对象,选中后再组合为一个对象组。

当同时移动多个对象时,如果不把这些对象标记为一个对象组,则用光标多次移动对象位置时,系统会报告"内存不够"的错误信息。

2.对象的条件打印

创建报表时经常要控制在特定条件下打印特定的信息,这可以用对象的条件打印来实现,我们以页号的打印为例来讨论对象的条件打樱通常页号的打印直接利用系统变量_pageno来打印阿拉伯数字,现在我们页号变为中文一、二、三。利用文本输入工具,在报表中创建文本对象"一"、"二"、"三"等,鼠标双击"一",在弹出的对话框中选择"printwhen",在弹出的"打印条件设置"对话框中点击"printonlywhen"选择框,在表达式中填入_pageno-1,确认后退出。如上操作,对文本对象"二"设置其打印条件为_pageno-2;对文本对象"三"设置其打印条件_pageno-3。设置完成各个文本对象的打印控件后,把它们移动到要打印页号的位置,重叠放置。用预示功能查看,可看到页号已变成中文数字。

3.表格线对齐

通常表格线对齐是用鼠标拖曳线段的段点,往往不易做到一次就能对齐,经常需要反复调整。实际上,当需要按像素调整线段的长度时,可以采用如下的方法:如是水平线段,则用鼠标点击线段右端点,线段向右拉长一个像素,左段点位置不变。点击左端点,线段向右缩短一个像素,右段点位置不变,用这种方法,便于精确对齐。同样,对垂直线段,点击上端或下端,分别向下缩短或拉长一个像素。

6、建立新的标签文件时,曾经会先出现[新标签]的窗口,让使用者选择标签的制式规格,后来再也不出现了,为什么?如何解决?

答:VFP安装完成后,系统会将制式标签的规格数据存储在VFP目录内的资源文件(另一个必要文件为),而该文件如果不慎被删除,VFP会再自动生成,只是原先存储的制式标签规格数据不会自动复原,所以才会造成新建标签文件时,没有出现选择标签规格的窗口。这时只要执行VFP所带的应用程序即可将制式标签规格的数据重新写回资源文件。(注:VFP3.0的安装在VFP目录中;VPF5.0则安装在VPF目录下的ToolsAddLabel子目录内)

7、建立新的标签文件时,曾经会先出现[新标签]的窗口,让使用者选择标签的制式规格,后来再也不出现了,为什么?如何解决?

答:VFP安装完成后,系统会将制式标签的规格数据存储在VFP目录内的资源文件

(另一个必要文件为),而该文件如果不慎被删除,VFP会再自动生成,只是原先存储的制式标签规格数据不会自动复原,所以才会造成新建标签文件时,没有出现选择标签规格的窗口。这时只要执行VFP所带的应用程序即可将制式标签规格的数据重新写回资源文件。(注:VFP3.0的安装在VFP目录中;VPF5.0则安装在VPF目录下的ToolsAddLabel子目录内)

第九章 OLE应用及编译应用程序

1、 如何使自己编写的程序脱离VFP运行?

答:利用VFP 6.0创建的应用程序,被编译成可执行程序后,若要使其脱离VFP环境独立运行,除了我们所知道的在应用程序目录中需包含一个名为""的配置文件外,还必须包含""、""、""这三个动态链接库文件。这三个文件在"WindowsSystem"目录下,用户可直接将其复制到自己的应用程序目录中。最后再经过编译形成可执行程序,运行安装向导创建发布磁盘,我们开发的小应用程序就可以堂堂正正地在Win98下安装运行了。

2、用VPF做一个表单,生成.EXE文件,在VPF里运行很正常,可退出,在WIN下运行发现表单一闪而过,是什么原因?,

答:做一个主程序(如 ),内容为:

DO FROM

READ EVENT

在退出表单的代码最后加上:

CLEAR ENENT

在项目管理器中设置为主程序

连编为.EXE 文件即可。

3、 在使用VFP 6。0时将源程序连编成可执行文件,运行该文件总要出现工具栏。(在进行连编时,编程环境中已经取消了工具栏显示)?

答:将工具栏用鼠标拖放到另一位置,在右键单击工具栏,选择关闭,之后不但该程序的工具栏消失,而且所有VFP程序的工具栏也不会出现了。

4、 编译了一个程序,运行时主窗口没有占满整个屏幕,如何使主窗口一运行就最大化?

答:把编译了的程序在Windows是建立一个快捷键,然后修改其属性,选择"最大化"就可以了。若使用了系统窗口,可以这样做:STATE=2,若不使用系统窗口,可以上面的代码改为:主表单名.WINDOWSTATE=2即可。

5、 把vfp编译后的一exe文件拷入一在未装vfp的计算机不能运行,是否缺少动态链接文件?

答:从一个项目中,可以建立应用程序文件 (.app) 或者可执行文件(.exe)。如果用户有一个完整的 Visual FoxPro 副本,则可以运行一个 .app 文件。另外一个选择方案是建立一个可执行文件。该可执行文件需要和两个 Visual FoxPro 动态连接库 ( 和 )

连接,这两个库和应用程序一起构成了 Visual FoxPro 所需的完整运行环境。指定用于应用程序开发的地区版本。

6、 如何在程序中播放动画?

答:将GIF动画分解成各单独的静止的GIF或BMP图片,然后在VFP使用计时器让这些静止的图片轮流出现,就产生动画效果了。将GIF动画分解为静止图片的软件有很多,在网上很容易找到,如Animagic GIF 等。分解出来的图片我们分别以、……这样的形式保存。在表单中添加计时器TIMER1,TIMER1的Interval属性设为100,Enabled属性设为.T.,再添加Image1控件,其Backstyle属性设为0(透明),Stretch也设为0(裁剪)。

在FORM的LOAD过程中写代码:

Public I,N

I=0

N=5(静止图片的总共数目)

在TIMER1的TIMER过程中写代码:

Local j

i=mod (i+1,n)

j=alltrim(str(i))

e=″a″-j-″.bmp″

运行表单,我们就可以看到熟悉的GIF动画了。

7、 从VFP中导出数据的几种方法!

答:当VFP处理好数据后,这时你可以用多种方法将这些数据导出,以便被其它应

用程序(如Excel等)所用。下面向你简单介绍几种导出数据的方法:

1.用"导出数据"对话框。你可以从VFP主菜单中选择"文件/导出…"打开

"导出"对话框,在该对话框中的"来源"框中输入表名(c:

),在"类型"中指定要导出数据的类型(Microsoft Excel),在"到"框中输入

导出的路径和文件名(C:),然后按"确定"即可。这时你如果查看

command窗口,可发现以下代码:

COPY TO C: TYPE XL5

2.用COPY TO命令。COPY TO命令的工作对象是VFP中的表,它要依据"TYPE"

项才知道要产生哪一类导出文件。对于上面的导出过程,可用以下方法实现:

USE students

COPY TO C: TYPE XL5

3.用SET ALTERNATE TO写入ASCⅡ文件。用该命令可以把屏幕上的内容导出,

导向一个文件,下面例子可以将系统状态输入到文件中:

SET ALTERNATE TO

SET ALTERNATE ON

SET CONSOLE OFF

?"系统状态"+DTOC(DATE())+"@"+TIME()

LIST STATUS

SET ALTERNATE OFF

SET CONSOLE ON

4.用SET PRINTER TO命令。用该命令可把打印输出到文本文件中:

SET PRINTER TO

SET PRINT ON

???CHR(27)+"广大计算机爱好者"

??"你们好!"

?"祝你们新年快乐"

SET PRINT OFF

5.用REPORT FORM TO FILE命令。运行报表的REPORT命令有许多选项,把报表

输出保存到文件中的方法为:

REPORT FORM(报表名)TO FILE(文件名)

8、Visual FoxPro 3.0中背景音乐的实现

答:在使用Visual FoxPro 3.0编制应用程序时,我们可以利用OLE嵌套的方法很容易的为一个应用程序加入背景音乐。

进入Visual FoxPro 3.0系统环境,在命令行窗口中键入CREATE FORM或在'文件'菜单中选

择'新建'、'表单',即可建立一个新的表单。表单建立后可对表单进行一些设置,如表单屏幕大小、表单底图、表单上的按钮、表单上要显示的文字等,做出一个漂亮的屏幕界面。点击'表单控制'上的'OLE容器',并将其拖至FORM中任意位置。在'插入对象'窗口中选择'媒体剪辑',选中'以图标显示'栏(必须选中此栏,否则无法将其隐藏起来),按'确认'键退出。

在'媒体播放机'窗口中,选择'文件'、'打开',从文件列表中选择想要作为背景音乐的声音文件。作为背景音乐,必须是程序启动时开始播放,直到程序结束。由于音乐文件一般不是很长,所以要求循环播放,此时可选择'编辑'菜单中的'选项',在选项窗口中选中'重复播放'和去掉'重放的控制条'前的选中标记,确认后退出。

回到Visual FoxPro 3.0系统环境,按下鼠标右键,在弹出菜单中点击'属性'栏调出属性窗口。选择'Olecontrol1'对象,将它的'Visible'属性设为.F.,'Autosize'属性设为.F.。再按下鼠标右键,在弹出菜单中点击'代码'栏进入过程书写窗口,选择'Form1'对象的'Activate'过程,在过程栏中加入:(0)点击Form1窗体,按下鼠标右键,在弹出菜单中点击'运行',即可运行此程序。

9、应用系统编译成EXE文件执行后,桌面无法放大为全屏幕,如何解决?

答:(1)如果主程序为菜单文件,可以在[设置]或[清理]的程序中加上_State=2命令将窗口最大化。

(2)如果主程序为表单文件,可以在表单Load Event程序中加上_State=2命令将窗口最大化。

第十章 网络环境下数据共享操作

1、 在多用户环境下,人允许其他用户执行的操作来说,独占与加锁的区别是?

答:独占方式不允许其他用户读或写,加锁方式不允许其他用户写,但允许用户允许其他用户读。

2、 有两张表单处理同一数据库,由一个表单调用另一个表单,如何保持两表单同步刷新?

答:用一时钟控件,过一段时间就比较表单中的数据与数据库中的数据是否还同,如不同则重新写入。

3、 为什么我在FOXBASE中SET EXCLUSIVE OFF,但数据库却不能共享?

答:请参考: 1、改变 SET EXCLUSIVE 的设置并不改变已经打开表的状态。 例如,如果一个表是在 SET EXCLUSIVE 设置为 ON 时打开的, 当把 SET EXCLUSIVE 的设置改变为 OFF 时, 表仍然保持原来的独占状态。 2、susp观看set('excl')状态何时已经改变 3、use (mytable) share。

4、 如何在VFP中判断目前进入网络的使用者是谁?

答:请参考:运用VFP所提供的SYS(0)与ID()函数可完成此项工作,SYS(0)与ID()函数的作用是完全相同的,它们都是于网络环境中传回所属工作站的电脑名称与目前进入网络的使用者名称。现举例如下:设有一名为SLGD01的WIN95工作站以使用者名称A01进入网络,接着运行VFP,则在VFP中执行SYS(0)函数时将传回:SLGD01 #A01同样,ID()可得相同值。

本文标签: 表单对象方法文件选择