文档库 最新最全的文档下载
当前位置:文档库 › 徐红波vfp(4-5章)doc

徐红波vfp(4-5章)doc

徐红波vfp(4-5章)doc
徐红波vfp(4-5章)doc

第4章查询与视图

在软件开发中经常用到数据的查询,如学生成绩管理,人事档案,图书检索等软件,查询的准确、速度直接影响软件的质量、效率、应用及维护,VFP开发工具用三个途径解决查询问题。第一个途径就是运用SQL语句查询,第二个途径就是用查询设计器建立快速查询,第三个途径是用视图设计器建立视图,实现快速查询。

4.1 查询的一般概念

4.1.1 查询

VFP中的查询使用查询设计器,从数据库表或自由表中获取有用数据,经过对查询条件、查询要求的设置,形成一个*.QPR文件,通过DO命令来执行。4.1.2 视图

VFP中的视图是用视图设计器从数据库表中获取有用数据,与查询一样经过查询条件、查询要求的设置形成视图。视图是以视图名的形式存在数据库中。视图中数据的更新可以使源表相应数据更新。视图的执行要在数据库中执行。

4.1.3 SQL查询

SQL是关系数据库的国际标准语言。为此,世界上许多语言开发商都将SQL 语言作为数据库对数据存取的共同标准接口。有的已将SQL语言嵌入到语言开发工具中,使得人们在软件开发时运用数据库是极为方便。之所以SQL能成为国际标准语言,主要原因它是结构化的查询语言。它的综合统一体现在它集数据定义语言、数据操纵语言、数据控制语言的功能为一体。再就是它高度的非过程化,无需一步步地告诉计算机如何做,只要指名怎么做系统就可以自动完成。SQL 语言简单便于掌握,特别是在查询复杂可视化工具无法解决时,SQL可以解决。

4.2 SQL语句

4.2.1 SELECT查询语句

1.基本语句

格式:SELECT <行列限制表达式> [INTO DBF | TABLE<新表名>] FROM <表名列表> [WHERE <条件>]

功能:从表名列表的表中查找符合条件的,按<行列限制表达式>的形式显示。若选[INTO DBF | TABLE<新表名>]子句,查询结果存入新表。

说明:<行列限制表达式>格式:

[ALL | DISTINCT] [TOP <数值表达式> [PERCENT]] [别名.] [列名[AS 栏目名]][, [别名.] [列名AS [栏目名]…]

(1)[ALL | DISTINCT]子句:ALL输出结果有重复记录,是子句默认值。DISTINCT输出结果无重复记录。

(2)[TOP <数值表达式> [PERCENT]]子句:此子句TOP <数值表达式>是符合条件的内容中取前<数值表达式>个记录。PERCENT是取前面分之<数值表达式>个记录。

(3)[别名.] [列名[AS 栏目名]] [, [别名.] [列名AS [栏目名]…]子句:列名可以是字段、含字段的表达式或表达式。指定输出结果中的字段,此子句也可用*代替此时显示表中所有字段。

例4.1 SELECT 基本语句应用

USE 学生1

SELECT * FROM 学生1

OPEN DATABASE 学生&&打开学生数据库

SELECT * FROM 学生INTO TABLE 学生y &&显示学生表中所有内容SELECT 姓名,入学成绩FROM 学生WHERE 入学成绩>=500

SELECT DISTINCT 姓名,入学成绩FROM 学生WHERE 入学成绩>=500 SELECT 学生.学号,学生.姓名,学生成绩.数学FROM 学生,学生成绩WHERE 学生.性别=’女' AND 学生成绩.数学>=60 AND 学生.学号=学生成绩.学号

SELECT TOP 2 * FROM 学生ORDER BY 学号

CLOSE DATABASE ALL

2.SELECT中常用的系统函数

在实际应用中经常在查询结果进行统计、求平均值、汇总等基本要求。SQL 提供了一些常用的系统函数。如表4.1所示。

表4.1 常用系统函数

说明:DISTINCT在计算时去掉重复值,ALL在计算所有值是默认值,表达式可为*、字段名、数学函数、常量、函数或表达式。

3.SELECT分组子句

格式:[GROUP BY <表达式1>[, <表达式2>[, …] [HA VING <筛选条件>] 功能:对查询结果进行分组。[HA VING <筛选条件>]为指定分组必须满足的条件。

例4.2分组查询应用。

OPEN DATABASE 学生

SELECT A VG(入学成绩) FROM 学生

SELECT COUNT(*) FROM 学生

SELECT SUM(入学成绩) FROM 学生GROUP BY 性别

SELECT COUNT(*) AS '学生人数' FROM 学生GROUP BY 性别HA VING (入学成绩)>460

SELECT 学生.学号,A VG(学生.入学成绩),学生成绩.VFP FROM 学生,学生成绩GROUP BY 性别HA VING (入学成绩)>=500 WHERE 学生.学号=学生成绩.学号

4.排序子句

格式:[ORDER BY <关键字表达式> [ASC | DESC] [, <关键字表达式> [ASC |

DESC]…]]

功能:查询结果按关键字排序,ASC升序为默认值,DESC为降序。

例4.3查询排序应用

OPEN DATABASE 学生

SELECT 学号,姓名,入学成绩FROM 学生ORDER BY 入学成绩DESC SELECT 学生.学号,学生.姓名,学生成绩.英语FROM 学生,学生成绩WHERE 学生.学号=学生成绩.学号GROUP BY 学生.学号ORDER BY 学生成绩.英语

SELECT A VG(入学成绩) AS "入学成绩平均分" FROM 学生GROUP BY 性别ORDER BY 入学成绩DESC

CLOSE DATABASE ALL

5.嵌套查询

嵌套查询就是在SELECT语句中套有SELECT语句,被套在内的SELECT 子句通常称为子查询。

(1)IN等谓词及比较运算符结合使用。

例4.4 IN与NOT IN在嵌套查询中的应用

OPEN DATABASE 学生

SELECT * FROM 学生WHERE 学号IN(SELECT 学号FROM 学生成绩WHERE 英语>=90)

SELECT * FROM 学生WHERE 学号NOT IN(SELECT 学号FROM 学生成绩WHERE 英语<90)

CLOSE DATABASE ALL

例4.5比较运算符在嵌套查询中的应用。

OPEN DATABASE 学生

SELECT * FROM 学生a1 WHERE 入学成绩=(SELECT 入学成绩FROM 学生a2 WHERE a1.学号=a2.学号AND 入学成绩>=500)

CLOSE DATABASE ALL

(2)使用量词和谓词的嵌套查询

格式:<表达式> <比较表达式> [ANY | ALL | SOME] (子查询) [NOT] EXIST(子查询)

说明:ANY、ALL、SOME为量词,ANY与SOME是同义词,在查询时,只要子查询中有一行能使结果为.T.,则结果就为.T.。ALL要求子查询中所有行结果为.T.时,结果才能为.T.。EXIST或NOT EXIST是检查在子查询中是否有结果返回。EXIST为有结果返回为真否则为假。NOT EXIST 刚好与EXIST 相反。

例4.6查询数学成绩高于90分的学生的学号,姓名。

OPEN DATABASE 学生

SELECT 学号,姓名FROM 学生WHERE EXIST(SELECT * FROM 学生成绩WHERE 学号=学生.学号AND 数学>=90)

例4.7 查找所有入学成绩大于等于500分年龄都小的学生。

OPEN DATABASE 学生

SELECT * FROM 学生WHERE 出生>ALL (SELECT 出生FROM 学生WHERE 入学成绩<500)

CLOSE DATABASE ALL

6.几个特殊运算符

(1)BETWEEN …AND…运算符

格式:BETWEEN <表达式1> AND <表达式2>

说明:表示在…的范围。

例4.8查询入学成绩480-600分的学生情况,与不在500-600之间的学生。

OPEN DATABASE 学生

SELECT * FROM 学生WHERE 入学成绩BETWEEN 490 AND 600

SELECT * FROM 学生WHERE 入学成绩NOT BETWEEN 500 AND 600 CLOSE DATABASE ALL

(2)LIKE 运算符

说明:LIKE 后含有%或_通配符的字符型表达式。%表示0个或多个字符,_表示一个字符。

例4.9查询姓王的所有学生情况,查询姓名前两个字为王丽的学生情况。

OPEN DATABASE 学生

SELECT * FROM 学生WHERE 姓名LIKE "王%"

SELECT * FROM 学生WHERE 姓名LIKE "王丽_"

CLOSE DATABASE ALL

7.连接查询

格式:<表名1> [INNER | LEFT [OUTER] | RIGHT [OUTER] | FULL [OUTER] JOIN ON <连接条件> <表名2>]

说明:

(1)INNER为内联接。内连接是指按连接条件合并两个表,只要满足条件的记录出现在结果中,内联接可以省略INNER。

例4.10 查找学生专业库中,学生情况及选修课成绩情况

OPEN DATABASE 学生专业

SELECT * FROM 学生专业INNER JOIN 选修ON 学生专业.学号=选修.学号

CLOSE DATABASE ALL

(2)LEFT JOIN为左连接,在满足连接条件的记录出现在结果中基础上,第一个表不满足条件的记录也出现在结果中。若加OUTER只是除了同以上连接为外连接,OUTER表示强调,OUTER通常省略。

例4.11用左联接查找学生情况与选修课情况。

OPEN DATABASE 学生专业

SELECT * FROM 学生专业LEFT JOIN 选修ON 学生专业.学号=选修.学号

CLOSE DATABASE ALL

(3)RIGHT JOIN为右连接,在满足连接条件的记录出现在结果中基础上,第二个表不满足条件的记录也出现在结果中。

例4.12用右连接查找学生情况与选修课情况

OPEN DATABASE 学生专业

SELECT * FROM 学生专业RIGHT JOIN 选修ON 学生专业.学号=选修.学号

CLOSE DATABASE ALL

(4)FULL JOIN为全连接。即满足连接条件的记录出现在结果上,两表不满足连接条件的记录也出现在结果上。

例4.13用全连接查找学生情况与选修课情况

OPEN DATABASE 学生专业

SELECT * FROM 学生专业FULL JOIN 选修ON 学生专业.学号=选修.学号

CLOSE DATABASE ALL

8.UNION子句

也称集合并运算,用此子句可以将多个表的查询结果,合并成一个结果,要求查询结果具有相同字段与个数,且对应字段类型要兼容。

例4.14建立三个表,计算机应用、计算机软件、计算机硬件它们的结构为专业C(3),学号C(9),姓名C(6),数学C(N, 3),英语C(N, 3),C语言C(N, 3)然后建立一个数据库,计算机并将三个表添入库中,然后用UNION查看所有内容。3个表内容如表4.2所示

INDEX ON 学号TAG t1

CREATE 计算机软件

INDEX ON 学号TAG t2

CREATE 计算机硬件

INDEX ON 学号TAG t3

CREATE DATABASE 计算机

ADD TABLE 计算机应用

ADD TABLE 计算机软件

ADD TABLE 计算机硬件

SELECT * FROM 计算机应用UNION ALL;

SELECT * FROM 计算机软件UNION ALL;

SELECT * FROM 计算机硬件

CLOSE DATABASE ALL

9.关于查询结果的存放

(1)用INTO [DBF | TABLE]<表名>可将查询结果存放表中。

(2)用INTO ARRAY <数组名>将查询结果存入数组。

(3)用INTO CURSOR <临时表名>将查询结果存入临时表。

(4)用TO FILE <文件名> [ADDTIVE]将结果存入文本文件,用ADDITIVE 将结果追加到由<文件名>指定的文本文件尾部。否则将覆盖原有文件。

(5)用TO PRINT [PROMPT]将查询结果输出到打印机,若选PROMPT 选项在打印前打开打印机设置对话框。

例4.15关于结果存放的应用。

OPEN DATABASE 学生

SELECT * FROM 学生INTO TABLE 新学生

SELECT * FROM 学生INTO ARRAY a

SELECT * FROM 学生INTO CURSOR 临时学生

SELECT * FROM 学生TO FILE 学生文本

CLOSE DATABASE ALL

10.SELECT 完整语句格式

格式:SELECT [ALL | DISTINCT] [TOP <数值表达式> [PERCENT]] [别名.] 列名[AS 栏目名] [, [别名.] 列名[AS 栏目名]…]

[FROM [FORCE] [数据库名!] <表名> [[AS] <本地名>]

[INNER | LEFT [OUTER] | RIGHT [OUTER] | FULL [OUTER] JOIN <数据库>!] <表名> [[AS] <本地名>] [ON <连接条件>…]

[[INTO <目标> | TO FILE <文件名> [ADDITIVE] | TO PRINT [PROMPT] | TO SCREEN]]

[PREFERENCE 参数名] [NOCONSOLE] [PLAIN] [NOWAIT]

[WHERE <联接条件> [AND <联接条件>…] [AND | OR <筛选条件>…]]

[GROUP BY <表达式1> [, <表达式2>…]]

[HA VING <筛选条件>]

[UNION [ALL] SELECT 命令]

[ORDER BY <关键字表达式> [ASC | DESC] [,<关键字表达式> [ASC | DESC]…]]

从以上SELECT 格式看很长也很复杂,但在前面已将常用的重要的部分介绍过了。下面对不常用的子句的作用、形式作一介绍。

说明:

(1)FORCE用来在按连接条件来连接表查询时,VFP 不进行优化。

(2)PREFERENCE<参数名>子句:用于记载浏览窗口的配置参数,再次使用该子句时可用参数名引用此配置参数。

(3)[NOCONSOLE]子句:禁止将查询结果在屏幕显示,若选INTO子句忽略它的设置。

(4)[PLAIN]子句:输出时省略字段名,若选用INTO子句忽略它的设置。

(5)[NO WAIT]子句:显示结果后,程序继续执行。

(6)<数据库>!表名是指非当前数据库的表。

4.2.2操作功能(插入、更新、删除)

1.插入

格式1:INSERT INTO <表名> [字段名1[, 字段名2, …]] V ALUES (表达式1[, 表达式2…])

格式2:INSERT INTO <表名> FROM ARRAY 数组名| MEMV AR

功能:在表尾添加一个指定字段的记录。

说明:

(1)格式1中字段名1,字段名2,…是用于指定添加记录的字段名,若省略,说明所有字段,表达式1,表达式2,…是添加字段1,字段2,…的具体值。

(2)格式2 ARRAY 数组名是从指定的数组中添加记录的值,MEMV AR 是从与字段同名的内存变量中添加记录的值。

例4.16插入应用。

OPEN DATABASE 学生

COPY FILES 学生成绩.* TO 学生成绩1.*

USE 学生成绩1

LIST

INSERT INTO 学生成绩1 V ALUE ("10501012",90,80,72)

LIST

GO 1

SCATTER MEMV AR &&将当前记录读到内存变量

INSERT INTO 学生成绩1 FROM MEMV AR

GO 2

SCATTER TO a &&将当前记录读到a数组

INSERT INTO 学生成绩1 FROM ARRAY a

USE

2.更新

格式:UPDATE <表名> SET 字段名1=<表达式1> [, 字段名2=<表达式2>…] [WHERE <条件>]

功能:更新满足条件的记录的值,若省略WHERE,更新全部记录的值。

例4.17更新应用。

Use 学生成绩1

UPDATE 学生成绩1 SET 数学=数学+10 WHERE 数学<80

UPDATE 学生成绩1 SET 英语=英语+10

USE

3.删除

格式:DELETE FROM <表名>[WHERE <条件>]

功能:删除符合条件的记录,若省略WHERE将删除全部记录。

例4.18删除应用。

USE 学生成绩1

DELETE FROM 学生成绩1 WHERE 英语>100

USE

4.2.3定义功能

SQL语句也可以定义表、视图。现在简单加以介绍。

1.定义表

在2.1.2中用命令创建表,此格式为SQL创建表的基本语句,现给出它的完整形式。

格式:CREATE TABLE|DBF <表名1>(<字段名1>, 类型, (<宽度>) [NULL | NOT NULL]

[CHECK <逻辑表达式1> [ERROR <出错信息>]] [DEFAULT <表达式1>]

[PRIMARY KEY | UNIQUE] [REFERENCE <表名2> [TAG <索引标识符名1>]] [NOCPTRANS][, <字段名2>…] | [FROM ARRAY <数组名>]

[, PRIMARY KEY <表达式2> TAG <索引标识符名2>

[, UNIQUE <表达式3> TAG <索引标识符3>]

[, FOREIGN KEY <表达式4> TAG <索引标识符名4>[NODUP]

REFERNCES <表名3> [TAG <索引标识符名5>]]

[, CHECK <逻辑表达式> [ERROR <出错信息2>]]]

说明:

(1)[NULL | NOT NULL]子句说明字段是否可取空值(NULL)。

(2)[CHECK <逻辑表达式> [ERROR <出错信息>]子句用于说明字段的有效性规则。<逻辑表达式>是有效性规则,<出错信息>是为字段有效性规则检查出错时给出的提示信息。

(3)[DEFAULT <表达式1>]子句使用表达式值给出字段的默认值。

(4)[PRIMARY KEY|UNIQUE]子句是以该字段创建索引,取PRIMARY KEY 创建的是主索引,取UNIQUE创建的是候选索引。

(5)[REFERENCE <表名2>][TAG <索引标识名>]子句用于指定与建立永久关系的父表名。<表名2>为父表名,若省略[TAG <索引标识符名>]就在父表已存在的索引标识上建立联系。

(6)[NOCPTRANS]子句用于指定C或M型。主字段不进行代码页转换。只能用于C、M型字段。

(7)PRIMARY KEY <表达式2> TAG <索引标识符2>子句指定要创建的主索引。<表达式2>为表中字段组合。一个表只能有一个主索引,如已建立主索引就不可以用此子句。

(8)UNIQUE <表达式3> TAG <索引标识符名3>创建候选索引。<表达式3>为表中字段组合。

(9)[FOREIGN KEY <表达式4> TAG <索引标识符名4>[NODUP]子句,用于建立普通索引。并与父表建立联系。

(10)[CHECK <逻辑表达式>[ERROR <出错信息2>]]子句,与2的意义相同。

(11)[REFERNCES <表名3>[TAG <索引标识符名5>]]子句与5含义同。

(12)[FROM ARRAY <数组名>]子句用于从一个已存在数组中取出字段名、类型、宽度。

例4.19建表应用。

OPEN DATABASE 学生

CREATE TABLE 学生成绩x(学号C(9) PRIMARY KEY ,编译N(3) CHECK (编译>=0 AND 编译<=100) ERROR "编译成绩再0-100之间" DEFAULT 0, FOREIGN KEY 学号tag 学号REFERENCES 学号)

CLOSE DATABASE ALL

2.定义视图

格式:CREATE VIEW 视图名AS SELECT 语句

功能:建立视图。用SELECT语句限定视图数据。

例4.20建立视图

OPEN DATABASE 学生

CREATE VIEW 学生视图AS SELECT * FROM 学生WHERE 入学成绩>=500

CLOSE DATABASE ALL

3.删除视图

格式:DROP VIEW 视图名

功能:删除视图。

例4.21视图的删除。

OPEN DATABASE 学生

DROP VIEW 学生视图

CLOSE DATABASE ALL

4.3查询

在4.2节中介绍了SELECT语句,它适合于复杂条件的查询。VFP提供了用查询设计器进行查询,它的每一个查询都对应一个SELECT语句。由于已学完SELECT 语句,现在再学查询设计器,就会感到它的方便简单。它很形象,可以将查询结果用浏览器、报表、表、图形等来表示出来。

4.3.1建立查询

1.用向导建立查询

(1)建立

文件菜单→新建或常用工具栏新建按钮,选文件类型为查询→向导,打开向导选取对话框(见图4.1),选择查询向导→确定,打开向导对话框步骤1—字段选取(见图4.2)→3个点按钮,打开打开对话框,文件类型选数据库,选学生库→确定,在数据库和表列表框中选学生表→将可用字段中字段选入选定字段中,再在数据库和表列表框中选学生成绩表→将可用字段中字段选入选定字段中→下一步,进入查询向导步骤2—为表建立关系(见图4.3)。添加→下一步进入查询向导步骤2a→字段选取(见图4.4)→下一步进入查询向导步骤3—筛选记录(见图4.5)→下一步进入查询向导步骤4—排序记录(见图4.6),选学生.学号→添加→下一步,进入查询向导步骤4a—限制记录对话框(见图4.7)→下一步进入步骤5—完成对话框(见图4.8)→预览→完成。打开另存为对话框,在文件名文本框输入查询学生→保存。在查询设计器打开下,通过查询菜单,查询SQL选项可查看对应的SQL SELECT 语句。

图4.1 向导选取对话框

图4.2 查询向导步骤1对话框

图4.3 查询向导步骤2对话框

图4.4 查询向导步骤2a

图4.5 查询向导步骤3—筛选记录

图4.6 查询向导步骤4—排序记录

图4.7 查询向导步骤4a—限制记录

图4.8 查询向导步骤5—完成对话框

2.用查询设计器建立查询

文件→新建或常用工具栏的新建按钮,打开新建对话框,选查询→新建文件按钮,打开打开对话框,选学生表→确定(见图4.9)。在添加表或视图对话框中选学生表→添加,选学生成绩表→添加→关闭。进入如图4.10所示查询设计器中。

图4.9 添加表或视图对话框

图4.10 查询设计器

在查询设计器中有几个选项卡,含义为:

(1)字段选项卡,对应于SELECT 中的输出结果字段。

(2)联接选项卡,对应于SELECT 中的JOIN子句。

(3)筛选选项卡,对应于SELECT 中WHERE子句。

(4)分组选项卡,对应于SELECT 中GROUP 与HA VING 子句。

(5)排序选项卡,对应于SELECT 中ORDER BY子句。

(6)杂项选项卡,对应于SELECT 中[ALL|DISTINCT]子句与[TOP …]子句。

在字段选项卡中函数和表达式,3点按钮用于在可用字段中设函数和表达式。→全部添加→联接选项卡、取默认内联接在类型内容左边有一个水平向外双向箭头按钮,若单击此按钮打开联接条件对话框,显示联接条件的一些信息。若单击类型下面的列表框,显示所有可选的连接类型。→筛选选项卡→字段名下拉表框选学生.学号→条件为=,单击条件下拉列表框,显示所有可选条件。→在实例文本框中输入学生成绩.学号→排序选项卡,在字段列表框框中选学生.学号→添加→分组选项卡→在可用字段列表框中选学生.性别→添加→杂项取默认全部→常用工具栏中的执行按钮或程序菜单中→运行,显示查询对话框→查询中关闭按钮→查询设计器中关闭组,打开确认对话框→是,打开另存对话框,在保存文件名中输入查询学生1→保存。

3.定向输出查询结果

在查询设计器打开基础上:查询菜单→查询去向,打开查询去向对话框(见图4.11),默认为浏览即屏幕输出。

图4.11 查询去向

可根据需要选择临时表、表、图形、屏幕、报表、标签,→确定即可。这些选择的说明如表4.3所示。

表4.3 查询输出去向类型说明

4.3.2执行查询

1.文件→打开,再打开对话框中选文件类型为查询,选文件名为查询学生1→确定。

程序→运行或单击常用工具栏中的运行按钮。

2.在命令窗口中输入DO查询学生1.qpr。

4.3.3查询设计器的局限性

用查询设计器建立的查询,简单,易学,但在应用中有一定的局限性,它实用于比较规范的查询,而对于较复杂的查询是无法实现的,下面来看一个用SELECT查询的例子。

例4.22查询入学成绩

建一个查询X.qpr程序文件

OPEN DATABASE 学生

SELECT a1.学号, a1.姓名, a1.入学成绩FROM 学生AS a1;

WHERE 入学成绩=(SELECT MAX(入学成绩) FROM 学生AS b1

WHERE a1.学号=b1.学号)

这个例子用查询分析器是无法完成查询的,若用查询设计器修改常出现如图4.12所示的对话框。

图4.12 提示信息对话框

4.4视图查询

数据库中只存放视图的定义,视图的定义被保存在数据库中,数据库不存放视图的对应数据,这些数据仍然存放在表中。

视图与查询一样都是要从表中获取数据,它查询的基础实质上都是SELECT

语句,它们的创建步骤也是相似的。视图与查询的区别主要是:视图是一个虚表,而查询是以*.qpr文件形式存放在磁盘中,更新视图的数据同时也就更新了表的数据,这一点与查询是完全不同的。视图从获取数据来源可将它分为本地视图和远程视图两种。本地视图是指使用当前数据库中表建立的视图,远程视图是指使用非当前数据库的数据源中的表建立的视图。

4.4.1建立本地视图

1.用向导建立本地视图

在打开所需数据库的基础上,文件→新建或使用工具栏中的新建按钮,打开新建对话框→选文件类型视图→向导,然后按向导提示完成操作。

2.用视图设计器建立本地视图

在打开所需数据库的基础上,文件→新建或使用工具栏中的新建按钮→文件类型视图→新建文件按钮,打开添加表或视图对话框→在数据库的下拉列表框中选择所需数据库→在数据库的列表框中选表→添加,若需多表可反复选表单击“添加”按钮→关闭,打开如图4.13所示的视图设计器,它与查询设计器几乎一样,就多一个更新条件选项卡,以后步骤除更新条件选项卡外都与查询设计器在建立查询时一样的步骤。

图4.13 视图设计器

最后关闭视图设计器,打开确认对话框→是,打开保存对话输入视图名→确认。

3.远程视图与连接

(1)建立连接

文件→新建或使用工具栏中的新建按钮,打开新建对话框→文件类型选连接→新建文件按钮,打开连接设计器如图4.14所示。→新建数据源,打开ODBC Data Source Administrator 对话框,如图4.15所示。→User Data Source卡,如图4.16所示→add→打开如图4.17所示。→Microsoft Visual Foxpro driver 对话框→完成→打开如图4.18所示。在Data Source None文本框中输入数据源名qqq→打开如图4.19的select DataSource 对话框→选所需数据库→打开→ok→确定→在数据源下拉列表框中选qqq→验证连接,显示连接设计器连接成功对话框→确定→关闭,打开Microsoft Visual Foxpro对话框→打开保存对话框→在连接文本框中输入连接名→确定。

图4.14

图4.15

图4.17

图4.18

图4.19

(2)建立远程试图

1)用向导:

在数据库打开的基础上,文件→新建或使用工具栏中的新建按钮,打开新建对话框→在文件类型选远程试图→向导→打开如图4.20所示远程向导步骤数据源选取对话框→在不用数据源列表框选数据源qqq→下一步→步骤2→字段选取对话框如图4.21所示→在列表框中选表→在可用字段列表框中选字段,若为多表,可重复选表与选字段操作→下一步,进入步骤3→为表建立关系,如图4.22所示→添加→下一步,步骤3→字段选取如图4.23所示→下一步,进入步骤4排列记录,如图4.24选字段→下一步进入步骤5→筛选记录如图4.25所示→下一步进入步骤6完成如图4.26→完成打开视图对话框,如图4.27→在远程视图各文本框中输入视图→确定。

图4.20

图4.21

图4.22

图4.23

图4.24

图4.25

图4.26

图4.27

2)用视图设计器建立远程视图

文件→新建或使用工具栏中的新建按钮,打开新建对话框→如图4.28在文件类型中选远程视图→新键文件按钮,打开选择按钮或数据源对话框,在数据库的连接列表框中选一个需要的连接→确定,打开对话框如图4.29所示→选表→添加,多表时可重复选表与添加操作→关闭进入视图设计器;以后步骤与本地视图步骤一样。

图4.28

VFP 6.0数据库基本操作

实验七、VFP 6.0数据库基本操作 一、实验目的及要求 a) 掌握VFP 6.0数据库系统的启动与退出 b) 掌握VFP 6.0数据库系统菜单的基本操作与使用 c) 掌握操作VFP 6.0命令窗口方法,以及基本命令使用。 d) 掌握常量和变量的命名与使用 e) 掌握表达式的分类与各表达式的运用。 二、实验内容及步骤 a) 在Windows“开始”菜单中的程序组中选择“VFP 6.0 for windows”菜单即可。要退出VFP 6.0系统,可在命令窗口中输入QUIT命令,也可在文件菜单中选择退出选项。 b) VFP 6.0数据库系统菜单的操作类似于Windows菜单的操作。 c) 数据库中,常量分为字符型常量、数值型常量、逻辑型常量、日期型常量,注意它们的格式,变量有字段变量和内存变量 i. 给内存变量赋值的简单命令: 格式1:store <表达式> to <内存变量表> 格式2:<内存变量>=<表达式> 练习:? store 32 to x ,y ,z ?? store .t. to yn,dd ?? a=3*3+5/2 ? store “小芳”to xm 理解其含义。 例1:建立4个变量,分别打印各种计算结果。 任务数据库的命令计算结果 ①建立aa1=12.5 Aa1=12.5 ②建立aa2=15 aa2=15 ③建立aa3="ABCD" aa3="ABCD" ④建立aa4=.t.aa4=.t . ⑤输出aa1是否大于aa2的结果 ? aa1>aa2 .F. ⑥输出是否aa1小于aa2和aa4的结果? aa1=20 .or. zc<>“讲师” ? gl>=20 .and. zc<>“讲师” ? gl>=25 .or. .not.gz<=100 .and. zc=“讲师” ? gl>=25 .or.gz<=100 .and..not. zc=“讲师” ? (gl>25 .or. gz<=100).and..not.zc=“讲师” 三、注意事项 a) 给变量命名时,我们一定要遵循命名规则:变量可以是字母、汉字、数字、以及下划线组成,

VFP的基本运算

VFP的基本数据运算 本节内容简介 VFP程序设计或数据库操作中经常要进行数据的运算。本节介绍VFP的算术、 字符、日期、关系及逻辑运算符,各种运算符的优先级。利用常量、变量、函数通过运算符组成的各种表达式的运算。 学习目标: 1、学会各种运算符的意义、运算规则 2、掌握运算符的优先级顺序 3、理解判断表达式的合法性及运算结果 4、会将一般的数学表达式转换成VFP表达式 学习重点与难点: 1、运算符的优先级 2、表达式的运算 运算符及优先级 VFP提供了五类运算符,在运算符两边参加运算的对象,必须有相同的类型。各种运算符都有不同的优先级,与普通的数学一样,可以通过“( )”来改变优先级顺序。 (1)数值运算符: 经数值运算后的结果仍为数值

举例:?14/7+3^2-abs(-5) && 显示6.00 ?(4-3)*(12/exp(2)) && 显示1.6240 ?15%4+1 && 显示4 (2)字符运算符 字符运算符有如下3种: + :字符串完全连接。将两个字符串首尾相接连成一个新字符串。 - :字符串不完全连接。将运算符前的字符串尾部空格移到运算符后的字符串尾部,再连成一个新的字符串。 $ :字符串包含运算。若运算符前的字符串包含在运算符后的字符串中,运算结果为逻辑真;否则,运算结果为逻辑假。(注意其运算结果为逻辑值,而不是字符串) $运算的优先级在字符运算中最高,+运算与-运算同级。 (3)关系运算符 进行关系运算时,参与比较的数据类型必须相同。数值型数据按其数值大小进行比较;字符型数据按字符的ASCII码值或汉字机内码进行比较;日期和时间型数据按日期时间的前(小)后(大)进行比较。 ==与=两种运算符在用于字符串比较时是有区别的,==要求参与比较的两个字符串必须完全相同,才返回.T.,否则返回.F.;而=则不然,它以右边的字符串为基准,从第一个字符起进行比较,只要左边前几个字符与比较符右边的字符串相同,就返回.T.。所以,=通常称为模糊比较;而==称为精确比较。

VFP函数大全

VFP函数大全 %运算符用于计算并返回两个数值表达式相除之后的余数 $(包含)运算符用于进行字符表达式之间的包含关系运算,如果一个字符表达式包含在另一个字符表达式之中,则函数返回真 ABS() 计算并返回指定数值表达式的绝对值 ACLASS() 用于将一个对象的父类名放置于一个内存数组中 ACOPY() 把一个数组的元素拷贝到另一个数组中 ACOS() 计算并返回一个指定数值表达式的余弦值 ADATABASES() 用于将所有打开的数据库名和它的路径存入一个内在变量数组中ADBOBJECTS() 用于把当前数据库中的连接、表或SQL视图的名存入内存变量数组中ADEL() 用于从一维数据中删除一个元素,或从二维数组中删除一行或者一列元素 ADIR() 将文件的有关信息存入指定的数组中,然后返回文件数 AELEMENT() 通过元素的下标,返回元素号 AFIELDS 将当前的结构信息存入数组中,然后返回表中的字段数 AFONT() 将可用字体的信息存入数组中 AERROR() 用于创建包含VFP或ODBC错误信息的内存变量 AINS() 在一维数组中插入一个元素或在二维数组中插入一行或一列元素 AINSTANCE() 用于将类的所有实例存入内存变量数组中,然后返回数组中存放的实例数ALEN() 返回数组中元素、行或者列数 ALIAS() 返回当前工作区或指定工作区内表的别名 ALLTRIM() 从指定字符表达式的首尾两端删除前导和尾随的空格字符,然后返回截去空格后的字符串 AMEMBERS() 用于将对象的属性、过程和成员对象存入内存变量数组中 ANSITOOEM() 将指定字符表达式中的每个字符转换为MS-DOS(OEM)字符集中对应字符APRINTERS() 将Print Manager中安装的当前打印机名存入内存变量数组中 ASC() 用于返回指定字符表达式中最左字符的ASCII码值 ASCAN() 搜索一个指定的数组,寻找一个与表达式中数据和数据类型相同的数组元素ASELOBJ() 将活动的Form设计器当前控件的对象引用存储到内存变量数组中 ASIN() 计算并返回指定数值表达式反正弦值 ASORT() 按升序或降序排列数组中的元素 ASUBSCRIPT() 计算并返回指定元素号的行或者列坐标 AT() 寻找字符串或备注字段在另一字符串或备注字段中的第一次出现,并返回位置 ATAN() 计算并返回指定数值表达式的反正切值 ATC() 寻找字符串或备注字段中的第一次出现,并返回位置,将不考虑表达式中字母的大小写 ATCLINE() 寻找并返回一个字符串表达式或备注字段在另一字符表达式或备注字段中第一次出现的行号。不区分字符大小写 ATLINE() 寻找并返回一个字符表达式或备注字段在另一字符表达式或备注字段中第一次出现的行号 ATN2() 根据指定的值返回所有4个像限内的反正切值 AUSED() 用于将一次会话期间的所有表别名和工作区存入变量数组之中 BAR() 从用DEFINE POPUP命令定义的菜单中返回最近所选择的菜单项的编号,或返回一个

《VFP数据库》试题及答案

****学院学年学期期末考试试题 (考试时间:120分钟) 1、请使用钢笔或圆珠笔进行答题,字迹要清楚,工整(有特殊要求需要用其他笔答题的试卷例外); 2、请在答卷前将密封线内的项目用正楷填写清楚,如所填写的信息不全造成无法登分,则后果自负; 3、客观题的答题要求写在指定的空处,主观题的答题须写在成教院统一印制的答题纸上,其他纸 一、选择(每小题2分,共70分) 1.VFP是一种________ 模型的数据库管理系统。 选择:A. 层次_ B. 网络_C. 对象_ D. 关系答案:D 2.目前三种基本的数据模型是________ 。 选择:A. 层次模型、网络模型、关系模型_ B. 对象模型、网络模型、关系模型_C. 网络模型、对象模型、层次模型_ D. 层次模型、关系模型、对象模型答案:A 3.VFP系统中,表的结构取决于___________ 。 选择:A. 字段的个数、名称、类型和长度_ B. 字段的个数、名称、顺序_C. 记录的个数、顺序_ D. 记录和字段的个数、顺序答案:A 4.数据库管理系统是________ 。 选择:A. 教学软件_ B. 应用软件C. 计算机辅助设计软件_ D. 系统软件答案:D 5.在定义表结构时,以下__________ 数据类型的字段宽度都是定长的。

选择:A. 字符型、货币型、数值型_ B. 字符型、货币型、整型_C. 备注型、逻辑型、数值型_ D. 日期型、备注型、逻辑型答案:D 6.下列说法中正确的是_____。 A.数据库打开时,该库中的表将自动打开 B.当打开数据库中的某个表时,该表所在的数据库将自动打开 C.如果数据库以独占的方式打开,则库中的表只能以独占方式打开 D.如果数据库中的某个表以独占方式打开,则库中的其它表也只能以独占方式答案:B 7.VFP系统中,使用查询设计器生成的查询文件中保存的是_______。 A. 查询的命令 B. 与查询有关的基表 C. 查询的结果 D. 查询的条件答案:A 8.对于创建新类,VFP提供的工具有:_____。 选择:A. 类设计器和报表设计器_ B. 类设计器和查询设计器_C. 类设计器和表单设计器D. 类设计器答案:C 9.VFP的循环语句有_____。 选择:A. DO WHILE,FOR和SCAN _ B. DO WHILE ,FOR 和LOOP _C. FOR,SCAN和LOOP _ D. DO CASE 和DO WHILE _ 答案:A 10.彻底删除记录数据可以分两步来实现,这两步是______。 选择:A. PACK和ZAP B. PACK和RECALL_C. DELETE和PACK D. DELE和 RECALL _ 答案:C 11.表之间的"临时性关系",是在两个打开的表之间建立的关系,如果两个表有一个关闭 后,则该"临时性关系" ______。 选择:A. 转化为永久关系B. 永久保留C. 临时保留D. 消失答案:D 12.下列控件均为容器类的是_____。

VFP函数

SCAN … ENDSCAN:对当前所打开数据表的扫描 ALLTRIM() 函数:删除指定字符表达式的前后空格符,并返回删除空格后的字符串 SubStr(证券代码,5,2):提取子串,SubStr(字符串,开始位置,长度) Left(证券代码,4):取字串左边的几位 thisform.grid1.recordsourcetype=1中的1是什么意思? 1 表示别名。以指定方式处理记录源。是默认值 0 表示表。自动打开RecordSource 属性中指定的表。 2 表示提示。运行时提示用户选择记录源。如果有某个数据库打开,用户可以选择其中一张表,它的内容作为记录源。 3 表示查询(.qpr)。用RecordSource 属性指定一个.qpr 文件。 4 表示SQL 语句。在RecordSource 属性中指定的SQL 语句(select * from * 形式)。注:recordsourcetype指定如何打开填充 Grid 控件的数据源。设计时可用,运行时可读/写。应用于grid控件中。 VFP 6.0 中的Transform 函数的用法: 从任意数据类型得到格式化的串. tran(777.37) && 其值为"777.37" tran(0004.00) && 其值为"4" tran({01/01/1998}) && 其值为"01/01/1998" tran(12.34, '$$$$.99') && 其值为"$12.34" tran(" test ","@T!") && 其值为"TEST" 而不是用upper(alltrim(" test ")) tran(.t.) && 其值为".t." 一.表达式:表达式是vfp命令和函数的重要组成部分,是由常量、变量、函数用运算符连接而成的有意义的式子 二.运算符: 1.算术运算符:算术运算符用于进行算术运算,连接起来的表达式称为算术表达式,结果是一个数值.如下表: 运算符功能 +,-正负号 **,^幂 *,/,%乘,除,取余 +,-加,减 优先级从高到低为:**,^→*,/,%→+,- 例:将(55+9×5)÷2写成vfp算术表达式. 我们在命令窗口输入并执行下列: ?(55+9*5)/2 &&结果可以口算,是50 2.字符运算符:用于字符串连接运算,结果是一个新的字符串,如下表: 运算符功能 +将+号前后字符串连接起来组成一个新的字符串 -删除-号前面字符串的尾部空格后再与右侧的字符串组成新的字符串 例:在命令窗口输入执行以下: a="abc " &&abc后面有两个空格 b="def " &&def后面有两个空格 c="ghi"

VFP第三章表

第三章表的创建和使用 对于关系型数据库来说,数据均以二维表的形式被保存在表中。在VFP中表分为两种类型:数据库表和自由表,数据库表是指从属于某个数据库的表(简称―库表‖),而自由表是指不从属于任何数据库的表。与自由表相比,数据库表具有自由表的所有特性外,还具有数据库管理的其他功能。 3.1 表结构 表(Table)是指存储放在磁盘文件中的二维表,一张表保存为一个表文件(.DBF)。表文件的文件名必须遵守Windows系统对文件名的约定,并且不可用A~J中的单个字母作文件名。 表中的列称为字段(Field)。字段规定了数据的特征。例如,学生表中学号、姓名、性别和系名就是字段。每张表最多

可以有255个字段。 表的行叫做记录(Record),每条记录表示一个实体。记录是多个字段的集合。同一张表的每一个记录都有相同的字段。 3.1.3 表结构的创建 表创建后,系统以扩展名.dbf保存表文件。如果表中有备注字段或通用字段,则自动地产生与表名相同但扩展名为.fpt的备注文件 2. CREATE TABLE-SQL CREATE TABLE-SQL命令的一般格式是:CREATE TABLE 表文件名(字段名1 字段类型[(字段宽度[,小数位数])][NULL|NOT NULL] [,字段名2 字段类型[(字段宽度[,小数位数])]]……) 说明:本书中命令的表示约定如下:垂直分隔符―|‖分隔的项,表示多项中只能选

择一个。斜体字是占位符,在实际使用中要用具体的信息代替。方括号[ ]所括的表示是可选项,[ ]本身不是命令的一部分。省略号―……‖表示参数可以有任意多项。 CREATE TABLE-SQL 其中字段类型必须要用字母表示。例如,学生表结构的创建可以使用以下命令:CREATE TABLE XS2 (xh C(6),xm C(8),xb C(2),zydh C(6),ximing C(18)) 则XS2表的结构与XS表一模一样。这个命令主要用在程序代码中。 创建JS表:CREATE TABLE JS (GH C(5), XM C(8),XB L,XDH C(2),GZRQ D, CSRQ D, JBGZ N(7,2),JL M) 3. 使用Null 值 在建立新表时,可以指定表字段是否接受null 值。在―表设计器‖的―字段‖选项卡中选定或清除字段的Null 列。当Null 列被选定时,该字段接受null 值。

vfp数据库知识点

试题结构:选择30题,每题1分;填空每空一分,共20分;判断10题,每题1分;程序改错10个错,每个1分;表单程序综合填空共10个空,每空1分。 1.创建表单、数据库、项目、报表、标签、菜单等对象会生成哪些文件? 2.二维表中主关键字、候选关键字、外部关键字是何含义? 3.数据库中常用数据模型有哪几种,各有何特点? 4.专门的关系运算有哪几种,是何含义? 5.Select 0 与select(0)各有何功能? 6.输出日期型数据时,可以使用哪些命令设置日期的格式? 7.日期运算符有哪些,各有什么限制? 8.常用函数的使用(数值型、日期型、字符型、数据转换类)。 9.表中创建索引时,如果索引设计多个字段时,索引表达式如何表示。 10. 索引有哪些类型,各有何特点? 11. 索引文件有哪些类型,各有何特点? 12. 概念模型中实体集之间关系的类型有哪几种,如何区分? 13. 数学表达式如何转换为VFP中的算术表达式?(运算符的表示、函 数的使用) 14. 字符常量、日期常量、日期时间型常量、逻辑型常量的定界符是 什么? 15. 参照完整性规则有哪几种,每一种规则的选项有哪几种? 16. 数据库表与自由表的联系与区别/ 17. 各种类型常量的表示。 18. 为使定义的变量具有不同的作用域,分别使用哪些命令来说明变 量。 19. 对象的属性、事件、方法如何理解。 20. Select语句中简单查询,分组查询的使用,聚集函数的使用 (count,sum,max,min) 21. Update ,insert into及delete from语句的使用。 22. 常用容器类的集合属性与计数属性分别是什么? 23. 报表中带区有哪些类型? 24. 常量有哪些类型,如何表示? 25. 变量赋值的方法有哪几种。 26. 数据库中可以包含哪些类型的对象 27. 记录定位方式有哪几种,分别用什么命令实现?

vfp第三章项目管理器

第三章项目管理器 一、选择题 1、打开Visual FoxPro "项目管理器" 的"文档"(Docs)选项卡,其中包含。 A)表单(Form)文件 B)报表(Report)文件 C)标签(Label)文件 D)以上三种文件 2、打开“项目管理器”的“数据”选项卡,其中包括。 A)数据库 B)自由表 C)查询 D)以上都有 3、下面关于项目管理器的叙述中,不正确的是。 A)项目管理器包含有10种功能按钮,并在不同的环境中出现不同的按钮 B)Create Project将打开项目管理器,并创建一个新的项目 C)项目管理器中移去文件时将直接删除此文件 D)项目管理器中的“数据”、“文档”选项卡是比较常用的选项卡 4、项目管理器中的“数据”选项卡中包含有。 A)数据库表、自由表和表单 B)数据库、自由表和查询 C)数据库表、自由表、查询和视图 D)数据库、报表、查询和视图 5、下列组文件扩展名不全是Visual FoxPro 6.0系统常见的扩展名。 A)dbf、fmt、lbt B)h、exe、avi C)vcx、vct、win D)mnt、scx、prg 6、下面定制项目管理器的叙述,不正确的是。 A)用户可以改变项目管理器的大小和位置 B)用户可以折叠和拆分项目管理器 C)必须折叠项目管理器后,才能停放项目管理器 D)用户可以停放和顶层显示项目管理器 7、打开一个已存在项目的命令是。 A)Modify Command B)Modify C)Modify Project D)Create Command 8、把一个项目编译成一个应用程序时,下面的叙述正确的是______。 A)所有的项目文件将组合为一个单一的应用程序文件 B)所有项目的包含文件将组合为一个单一的应用程序文件 C)所有项目排除的文件将组合为一个单一的应用程序文件 D)由用户选定的项目文件将组合为一个单一的应用程序文件 9、在“选项”对话框的“文件位置”选项卡中可以设置______。 A)表单的默认大小 B)默认目录 C)日期和时间的显示格式 D)程序代码的颜色 10、将项目文件中的数据库移出后,该数据库被______。 A)移出项目 B)逻辑删除 C)放入回收站 D)物理删除 11、在Visual FoxPro中,为项目添加数据库或自由表,应选择选项卡。 A)数据 B)信息 C)报表 D)窗体 12、对于Visual FoxPro,以下说法正确的是。 A)项目管理是一个大文件夹,里面有若干个小文件 B)项目管理是管理开发应用程序的各种文件、数据和对象的工具 C)项目管理只能管理项目不能管理数据 D)项目管理不可以使用向导打开 13、要删除项目管理器包含的文件,需要使用项目管理器的按钮。 A)连编 B)删除 C)添加 D)移去 14、项目管理器可以有效地管理表、表单、数据库、菜单、类、程序和其他文件,并且可以将它们编译成。

VFP数据库试卷(带答案)

《VFP数据库》试卷 1.下列表达式的结果为真的是()。 A.'中国'<='' B.'电脑'$'电脑报' C.2*4.2<=11%6 D.'电脑报'=='电脑' 2.视图不能单独存在,它必须依赖于()。 A.视图B.查询C.数据表D.数据库 3.有如下SQL select语句: select * from 成绩where 数学between 80 and 100 与该语句等价的SQL语句是()。 A.select * from 成绩where 数学<100 and 数学>80 B.select * from 成绩where 数学>=100 and 数学<=80 C.select * from 成绩where 数学>100 and 数学<80 D.select * from 成绩where 数学<=100 and 数学>=80 4.SQL语句中修改表结构的命令是()。 A.alter table B.modify table C.alter structure D.modify structure 5.SQL中,select语句的功能是()。 A.定义B.查询C.修改D.控制 6.只有数据表中有而自由表中没有的索引类型是()。 A.普通索引B.唯一索引C.主索引D.候选索引7.要将当前数据库的“照片”字段删除,应使用()命令。 A.delete B.zap C.modify structure D.pack 8.一个工作区最多可以打开()个表。 A.32767 B.1 C.2 D.3 9.查询设计器的“筛选”选项卡,对应SQL语句的子句是()。 A.join on子句B.where子句 C.group by子句D.having子句 10.字符串长度函数len("学英语从ABC开始")的结果是()。 A.9 B.18 C.15 D.16.6 11.要为“成绩”表的所有学生的语文成绩增加10分,正确的SQL命令是()。 A.replace 成绩set 语文=语文+10 B.update 成绩set 语文=语文+10 C.edit 成绩set 语文=语文+10 D.change 成绩set 语文=语文+10

《VFP》第一章知识点整理

《VFP》第一章知识点整理 1.1VFP的工作环境 一、VFP的特点 1.发展历史:dbase-Foxbase-foxpro-visualFoxPro 2.特点:①基本功能简单易学②用户界面友好美观③运行速度快 ④编程工具直观易用⑤具有真翻译功能 3.VFP是可运行于Windows平台上的32位关系型数据库管理系统。 二、VFP的窗口: 1.默认两个窗口:主窗口和命令窗口(当前窗口) 2.窗口的组成:窗口控制图标,标题栏,窗口控制按钮,菜单栏,“常用”工具栏,窗口工作区,状态栏 3.命令窗口:打开:Ctrl+F2 关闭:Ctrl+F4 二、VFP的运行环境 1.软件环境:Windows95/98,WindowsNT4.0或更高级的Windows操作系统。 2.硬件环境: ①CPU为intel489/66MHZ ②16MB内存③至少有85MB可用磁盘空间 ④VGB或更高分辨率的显示器⑤鼠标 3.安装:关闭杀毒软件 四、启动与退出VFP 1.启动:①使用Windows“开始”菜单启动②如果桌面上有快捷方式图标,需要双击 2.退出①鼠标单击主窗口上的“关闭”按钮②单击“文件”菜单,打开后再单击“退出” ③先在命令窗口新一行输入QUIT再按Enter键④Alt+F4 1.2数据库基础知识 一、数据和数据处理 1.数据:数据是指被计算机存储和处理、反应客观事物的符号 2.数据处理:3个阶段:①人工管理数据阶段②文件系统管理数据阶段③数据库系统管理数据阶段 二、数据库和数据库管理系统 1.数据库(DB) (1)概念:有组织的,可共享的相关数据的集合 (2)特点:①较小的冗余度②较高的独立性③可为多种用户共享 2.数据库管理系统(DBMS) (1)概念:管理数据库的软件系统 (2)功能:管理维护数据 (3)特点:完整性、唯一性、安全性、共享性 3.数据库系统(DBS) (1)概念:引进数据库技术中的计算机是以数据库为核心的信息处理系统

VFP数据库练习题4

VFP数据库(4) 一、填空题 1.在报表中通常用来获得当前页码的变量是。 2.表示空值的关键字是。 3.索引文件分为单索引和复合索引,其扩展名分别为idx和。 4.使用locate命令顺序查找,可用found()和函数测试是否找到。 5.打开数据库xs.dbc的命令是。 6.在查询设计器中设置查询条件,应在选项卡中进行。 7.分支语句有简单分支、选择分支和。 8.表单的组合框有两种类型、分别为下拉列表框和。 9.在VFP中,关闭系统菜单的命令是。 10.按变量的作用域可分为和局部变量。 二、单项选择题 1.在VFP命令中,各单词间的分隔符是() A.分号 B.空格 C.逗号 D.以上都不对 2.X和Y为日期型,H为数值型,不可以进行的运算是() A.X+Y B.X-H C.X-Y D.X+H 3.表达式mod(21,6)的值为() A.0 B. 1 C. 3 D.不确定 4.备注型字段的数据宽度是4字节,它用来存放()。 A.指向备注的具体内容 B.指向.fpt文件的文件名 C.指向.dbf文件的指针 D.指向.fpt中文字块的指针 5.建立查询时,以下不能作为排序字段的是() A.字符型 B.通用型 C.逻辑 D.日期型 6.下列不能作为查询输出目标的是()

A.表 B.报表 C.视图 D.标签 7.逻辑删除rs表中,所有年龄大于50的SQL语句是() A.Select from rs for 年龄>50 B.Delete from rs where 年龄>50 C.Delete from rs where 年龄>50 D.Select 年龄from rs where 年龄>50 8.以下关于多分支语句do case…endcase的叙述,正确的是() A.当有多个表达式为真时,执行最后一个表达式值为真之后的程序段 B.当有多个表达式为真时,执行第一个表达式值为真之后的程序段 C.当有多个表达式为真时,执行多个表达式值为真之后的程序段 D.Do case…endcase语句,可以有多个程序段被执行 9.在表单控件中,即可用于接收数据,又可作为编辑现有数据的控件是() A.标签 B.文本框 C.编辑框 D.B、C均可 10.在表单运行中,如复选框变为选中状态,其value属性值是() A. 1 B. 2 C.0 D.不确定 11.下列不能用记事本编辑的文本是() A.abc.dbc B.abc.prg C.abc.qpr D.A、B均不能 12.下列()选项可以实现使当前的命令按钮不可用。 A.This.default=.F. B.This.default=.T. C.This.enabled=.F. D.This.enabled=.F.

VFP第三章表的创建和使用3.3记录的处理

3.3.1 记录的输入P71 ⒊使用INSERT-SQL命令追加记录 ⒋使用APPEND与APPEND FROM命令追加记录 APPEND BLANK,可以追加新记录。 ⒊使用INSERT-SQL命令追加记录 在程序中向一张表中追加记录,通常使用INSERT-SQL命令。命令格式如下。INSERT INTO TableName[(FieldName1 [,FieldName2, … …])\] VALUES (eExpression1[,eExpression2, … …]) 例如:可以用以下命令向XS表中插入一条新记录: INSERT INTO XS(xh,xm,xb,ximing) VALUES ("950106","高山","男","") ⒋使用APPEND与APPEND FROM命令追加记录 APPEND [BLANK] [IN nWorkArea| cTableAlias] 其中,BLANK用于说明向表中追加一条空记录,缺省时系统向表中追加一条空记

录,并打开浏览窗口以便用户输入该记录的数据。 当表处于浏览状态时,利用―表/追加记录‖,选中数据来源的文件后,即可追加数据。 常用的可追加的文件类型有表文件.dbf、文本文件.txt(DELIMIED)和Excel文件.xls。 使用APPEND FROM 命令从其他文件中导入数据。 APPEND FROM FileName [DLIMITED|XLS] 3.3.3 记录的定位 当用户向表中输入数据时,VFP为每个记录都按输入顺序指定了‖记录号―。第一个输入的记录,其记录号为1,依次类推。 ⒈`记录指针 当一个表文件被打开后,系统中自动生成三个控制标志:记录的开始标志、记录指针标志、记录的结束标志,如图。记

VFP数据库系统开发实例(附图)

VFP基本数据库系统开发实例(附图) 西南大学计信院 导学 在Visual Foxpro中开发一个应用系统应该包括需求分析、项目创建、模块设计、运行调试、保存发布到建立帮助等,下面介绍如何把各个模块集成起来,并创建一个应用程序。 11.1 系统需求分析 传统的学生成绩管理方法不仅浪效率低,而且由于管理不规范容易导致各种错误的发生。因此实现一个智能化、系统化的公共计算机成绩管理系统是十分必要和不可缺少的。它将大大减轻管理者的劳动强度,降低出错率,提高管理的效率。该系统可以实现如下功能: 1. 数据需求 通过调查,总结出该应用程序对数据的需求大致有如下这些: (1) 学生信息 包括学号,姓名,性别,出生日期,系科,备注,照片 (2) 管理员信息 包括用户名,密码,管理员姓名,权限,说明信息 (3) 学生成绩信息 主要包括学号, 课程编号,平时成绩,笔试成绩,上机成绩,总评成绩,审核否 (4) 课程信息 包括课程编号,课程名称 2. 功能需求 功能分析的任务是了解用户对数据的处理方法和输出格式。 (1) 基本数据录入 基本数据包括学生信息、管理员信息、学生成绩休息和课程信息等。要求系统能够录入这些数据,并且可以进行修改。在数据录入和修改过程中应保持数据的参照完整性。 (2) 查询 能够查询出学生成绩,和补考人员名单等。 (3) 学生和管理员信息的维护 要求能够根据需要对学生和管理员信息进行维护修改等。 (4)成绩的审核 根据学生的总评成绩审核学生的计算机成绩是否通过。 (5) 打印输出 打印学生成绩表和补考人员名单等。 11.2 系统设计 1. 程序总体结构设计 在开始程序设计之前,首先应该将程序的总体结构以层次图的形式表示出来,便于对程序分

简易计算器的制作(VFP)

简易计算器的制作(VFP) 第一步:建一个新的表单;自己规划出各个控件的布局,可以根据自己的喜好! 第二步:编写属性和过程 一是关于等号的过程编写和属性设置 Thisform.Text4.Value=https://www.wendangku.net/doc/bb18211300.html,mand15.caption If Thisform.Text3.Value=https://www.wendangku.net/doc/bb18211300.html,mand4.caption a=val(thisform.Text1.Value) b=val(thisform.Text2.Value) Thisform.Text2.Value=a+b Thisform.Text3.Value='' endif If Thisform.Text3.Value=https://www.wendangku.net/doc/bb18211300.html,mand8.caption a=val(thisform.Text1.Value) b=val(thisform.Text2.Value) Thisform.Text2.Value=a-b Thisform.Text3.Value='' endif If Thisform.Text3.Value=https://www.wendangku.net/doc/bb18211300.html,mand12.caption a=val(thisform.Text1.Value) b=val(thisform.Text2.Value) Thisform.Text2.Value=a*b Thisform.Text3.Value='' endif If Thisform.Text3.Value=https://www.wendangku.net/doc/bb18211300.html,mand16.caption a=val(thisform.Text1.Value) b=val(thisform.Text2.Value) Thisform.Text2.Value=a/b Thisform.Text3.Value='' Endif 属性可以不做更改因为只是更改控件的外观

VisualFoxPro数据库编程函数大全

大全 数据库函数大全 VisualFoxPro数据库函数 ADATABASES()将所有打开数据库的名称和路径放到内存变量数组中 ADBOBJECTS()把当前数据库中的命名连接名、关系名、表名或sQL视图名放到一个内存变量数组中AFIELDS()把当前表的结构信息存放在一个数组中,并且返回表的字段数 ALIAS()返回当前表或指定工作区衰的别名 ASESSIONS()创建一个已存在的数据工作期ID数组 ATAGINFO()创建一个包含索引和键表达式的名字、数量和类型信息的数组 AUSED()将一个数据工作期中的表别名和工作区存入内存变量数组 BOF()确定当前记录指针是否在表头 CANDIDATE()判断索引是否为候选索引 CDX()根据指定的索引位置编号,返回打开的复合索引(.CDX)文件名称 CPDBP()返回一个打开表所使用的代码页 CREATEOFFLINE()由已存在的视图创建一个游离视图 CURSORGETPROP()返回VisualFoxPro表或临时表的当前属性设置 CURSORSETPROP()指定VisualFoxPro表或临时表的属性设置 CURSORTOXML()转换VisualFoxPro临时表为XML文本 CURVAL()从磁盘上的表或远程数据源中直接返回字段值 DBC()返回当前数据库的名称和路径 DBF()返回指定工作区中打开的表名,或根据表别名返回表名 DBSETPROP()给当前数据库或当前数据库中的字段、命名连接、表或视图设置一个属性 DELETED()返回一个表明当前记录是否标有删除标记的逻辑值 DESCENDING()是否用DESCENDING关键字创建了一个索引标识 DROPOFFLINE()放弃对游离视图的所有修改,并把游离视图放回到数据库中 EOF()确定记录指针位置是否超出当前表或指定表中的最后一个记录 FCOUNT()返回衰中的字段数目 FIELD()根据编号返回表中的字段名 FILTER()返回SETFILTER命令中指定的表筛选表达式 FLDLIST()对于SETmELDS命令指定的字段列表,返回其中的字段和计算结果字段表达式 FLOCK()尝试锁定当前表或指定表 FOR()返回一个己打开的单项索引文件或索引标识的索引筛选表达式 FOUND()如果CONTINUE、FIND、LOCATE或SEEK命令执行成功,函数的返回值为"真" FSIZE()以字节为单位,返回指定字段或文件的大小 GETFLDSTATE()返回一个数值,标明表或临时表中的字段是否已被编辑,或是否有追加的记录,或者记录的删除状态是否已更改 GETNEXTMODIFIED()返回一个记录号,对应于缓冲表或临时表中下一个被修改的记录 HEADER()返回当前或指定表文件的表头所占的字节数 IDXCOLLATE()返回索引或索引标识的排序序列 INDBC()如果指定的数据库对象在当前数据库中,则返回"真"(.T.) INDEXSEEK()在一个索引表中搜索第一次出现的某个记录 ISEXCLUSIVE()判断一个表或数据库是以独占方式打开的 ISFLOCKED()返回表的锁定状态 ISREADONLY()判断是否以只读方式打开表 ISRLOCKED()返回记录的锁定状态 KEY()返回索引标识或索引文件的索引关键字表达式 KEYMATCH()在索引标识或索引文件中搜索一个索引关键字 LOOKUP()在表中搜索字段值与指定表达式匹配的第一个记录 LUPDATE()返回一个表最近一次更新的日期

计算机的基础知识等级考试指导

第一部分实用理论总结 1、求字符ASCII码的方法: Excel中使用CODE( )函数,或VFP中使用的ASC( )函数。 2、Windows文件、文件夹名命名规则如下: (1)文件名最多可以包含255个字符(半角字符); (2)允许使用多分隔符(即小数点),最后一个点后的部分为扩展名。 (3)文件名中可以使用空格。 (4)文件名不区分大、小写。 (5) 文件名中不能包含的字符有:? * \/"<>:| 3、有关网络的一些名词 E-mail(电子邮件)、WWW(环球信息网,也称万维网)、HTML(超文本置标语言)、URL(统一资源定位符)、HTTP(超文本传输协议)、FTP(文件传输协议)、Telnet(远程登录)、ISP(因特网服务提供商)、DNS(域名服务)、FAQ(经常问及的问题)、BBS(电子公告牌)、Internet(因特网)、internet(互联网)、Intranet(企业内联网)、Extranet(企业外联网) 4、IP地址 IP地址由网络号和主机号两部分组成。常用的有A、B、C等3类。网络号用来区分Internet上互联的网络,主机号用来区分同一网络上的不同计算机(即主机)。IP地址是用“.”隔开的四个十进制整数,每个数字取值为:0~255。 确定是否为一个正确的IP地址的三个条件:①是否为四组十进制数组成; ②四组十进制数是否由3个小圆点“.”隔开;③每组数值是否在0~255之间。 确定一个IP地址属哪一类地址,是根据第一个数字的范围,具体规则如下:A类:0—127 如:121.33.55.66 B类:128—191 如:130.133.55.166 C类:192—223 如:200.128.155.216 5、存储器访问速度的比较: CACHE > RAM > ROM > 硬盘> U盘> 光盘> 软盘> 磁带

VFP数据库系统开发实例(附图)

11.1 系统需求分析 传统的学生成绩管理方法不仅浪效率低,而且由于管理不规范容易导致各种错误的发生。因此实现一个智能化、系统化的公共计算机成绩管理系统是十分必要和不可缺少的。它将大大减轻管理者的劳动强度,降低出错率,提高管理的效率。该系统可以实现如下功能: 1. 数据需求 通过调查,总结出该应用程序对数据的需求大致有如下这些: (1) 学生信息 包括学号,姓名,性别,出生日期等 (2) 学生成绩信息 主要包括学号, 课程编号,平时成绩 (3) 课程信息 包括课程编号,课程名称 2. 功能需求 功能分析的任务是了解用户对数据的处理方法和输出格式。 (1) 基本数据录入 基本数据包括学生信息、管理员信息、学生成绩休息和课程信息等。要求系统能够录入这些数据,并且可以进行修改。在数据录入和修改过程中应保持数据的参照完整性。 (2) 学生和管理员信息的维护 要求能够根据需要对学生和管理员信息进行维护修改等。 (3) 打印输出 打印学生信息表。 11.2 系统设计 1. 程序总体结构设计 在开始程序设计之前,首先应该将程序的总体结构以层次图的形式表示出来,便于对程序分层设计和实现。图1所示为公共计算机成绩管理系统的功能模块图。

图1公共计算机成绩管理系统功能模块 2. 数据库逻辑设计 进行数据库设计的依据有三个:第一是在进行系统调查时由成绩管理员提供的各种处理数据;第二是功能设计结果;第三是数据库设计规范化理论。数据库设计是系统设计的一项基本工作,其效果的好坏,对后续设计、调试、使用、维护等工作关系极大,因此,一定要高度重视这一部分工作。当然,我们不能简单地将数据库设计理解为在计算机上用可视化的方法建立表的过程,其主要工作是建立一种完整、规范的数据模型以支持整个应用系统对数据的要求。 根据对实际情况进行分析建立关系模型 1) 学生信息表(学号,姓名,性别,出生日期) 2) 学生成绩表(学号, 课程编号,平时成绩) 3 课程表(课程编号,课程名称) 11.3 创建项目 Visual Foxpro推荐在项目管理器中开发应用程序,因为项目管理器会为开发工作带来很多方便。在项目管理器中创建一个项目后,应用程序就具备了一个开发框架,然后在这个框架中,再利用项目管理器所提供的强大功能,按照需求来实现应用程序的设计。 用户可以启动Visual Foxpro,选择【文件】|【新建】命令,在打开的对话框中,选择“项目”单选按钮,然后单击“新建文件”按钮,接着在“创建”对话框中,输入项目文件名并确定项目路径(本例使用的路径为D:\公共计算机成绩管理系统),然后单击“保存”按钮,即可启动项目管理器。一个完整的应用程序,即使规模不大,也会涉及到多种类型文件,如dbc数据库、dbf表以及菜单、表单、报表、位图等。为了以后的修改、维护工作方便进行,就需要把这些文件放在不同的文件夹中便于管理维护。 11.4数据库的物理设计 a) 数据库名为公共计算机成绩管理.dbc b) 数据表 i. 学生信息表.dbf 学号/C/10,姓名/C/10,性别/L/1,出生日期/D/8,系科/C/30,备注/M/4,照片/G/4 ii. 学生成绩表. dbf学号/C/10, 课程编号/C/2,平时成绩/N/6/2 iii. 课程表 课程编号/C/2,课程名称/C/14

如何使用VFP制作一个简易的计算器

如何使用VFP(Microsoft Visual FoxPro)设计一个简易计算器? 胡伟 本文内容主要介绍如何使用VFP设计如下图所示的一个简易的计算器。 一、创建项目文件jsq.pjx 创建jsq文件夹:c:\jsq (以下文件均以此为存储目录) 在c:\jsq下创建项目文件:c:\jsq.pjx 二、创建表单jsq.scx (一)创建表单jsq,并设置属性:设AutoCenter为“.T.”、ShowWindow为“作为顶层表单”

(二)在表单jsq内创建各对象 1、创建(菜单部分在后面创建) 单击“表单控件”工具栏上的“文本框”按钮,在表单上的适当位置单击。并设置属性Alignment为“1-右” 2、创建容器控件 设置属性SpecialEffect为“凹下” 3、创建命令控件

更改属性Caption “Command1”为“Backspace”,属性ForeColor “0,0,0”为“255,0,0” 4、如同创建,创建其它控件。 单击表面空白部分,更改属性Caption “Form1”为“计算器”。 5、编辑各控件的命令代码 新建属性 ls 并改其属性“.F.”为“0”;新建属性 mm 并改其属性“.F.”为“0”。(1)Backspace 双击Backspace控件,在打开的Command1.klick中编写如下代码: thisform.text1.value=substr(alltrim(thisform.text1.value),1,len(alltrim(thisform.text1.value))-1)

(2)CE 的代码为: thisform.text1.value='' (3)C 的代码为: thisform.text1.value='' thisform.ls=0 thisform.tag='' (4)MC 的代码为: thisform.mm=0 (5)MR 的代码为: thisform.text1.value=alltrim(str(thisform.mm)) (6)MS 的代码为: thisform.mm=val(alltrim(thisform.text1.value)) (7)M+ 的代码为: thisform.mm=thisform.mm+val(alltrim(thisform.text1.value)) (8)0 的代码为: thisform.text1.value=thisform.text1.value+'0' if alltrim(thisform.text1.value)='00' thisform.text1.value='0' endif 同理编写1、2、3、4、5、6、7、8、9 的代码。 (9)+ 的代码为: thisform.ls=val(thisform.text1.value)

相关文档