第5章 查询和视图
DESCRIPTION
第5章 查询和视图. 第5章 查询和视图. 5.1 查询 5.2 视图 5.3 SQL 语言. 5.1 查询. 查询和视图是检索和操作数据库的两个基本手段。 两者都可以从一个或多个相关联的数据表中提取有用的信息。 查询可以根据表或视图定义,它不依赖于数据库而独立存在,可以显示但不能更新由查询检索到的数据(查询结果是只读的)。 视图兼有表和查询的特点,它可以更改数据源中的数据,但不能独立 存在,必须依赖于某一个数据库。. 5.1.1 查询的概念. - PowerPoint PPT PresentationTRANSCRIPT
长沙民政学院电子系
第 5 章 查询和视图第 5 章 查询和视图
长沙民政学院电子系
目录
重点
难点
上页
下页
第 5 章 查询和视图第 5 章 查询和视图
• 5.1 查询• 5.2 视图•5.3 SQL 语
言
长沙民政学院电子系
目录
重点
难点
上页
下页
5.1 查询 5.1 查询• 查询和视图是检索和操作数据库的两个基本手段
。
• 两者都可以从一个或多个相关联的数据表中提取有用的信息。
• 查询可以根据表或视图定义,它不依赖于数据库而独立存在,可以显示但不能更新由查询检索到的数据(查询结果是只读的)。
• 视图兼有表和查询的特点,它可以更改数据源中的数据,但不能独立存在,必须依赖于某一个数据库。
长沙民政学院电子系
目录
重点
难点
上页
下页
5.1.1 查询的概念5.1.1 查询的概念• 通过查询可以对几个相关联的表或视图中的数据,按指定的条件和内容进行检索,得到需要的信息并能对原始数据进行某些统计计算。• 利用查询设计器可以在交互环境下建立查询文件( .QPR ),运行该文件即可获取检索信息。方法是:•( 1 )选择查询的数据源(包括自由表、数据库表和视图);•( 2)选择要检索的字段;•( 3 )设置查询条件来查找满足用户要求的记录;•( 4)设置排序或分组来组织查询结果;•( 5)选择查询去向。•( 6)运行查询,获得查询结果。
长沙民政学院电子系
目录
重点
难点
上页
下页
5.1.2 创建查询5.1.2 创建查询
•1. 启动查询设计器
•( 1)项目管理器:选择 “查询”数据项,单击“新建”按钮,出现“新建查询”对话框,选择“新建查询”命令,打开查询设计器。
•( 2 )菜单:选择“文件 | 新建”命令,在“新建”对话框中选择“查询”文件类型,然后单击“新建文件”按钮。
•( 3)命令: CREATE QUERY <查询文件名 >
•2 .查询设计器的使用 设计器窗口分上下两部分:上部是数据源,下部有字段、联接、筛选、排序依据、分组依据和杂项 6个选项卡。
长沙民政学院电子系
目录
重点
难点
上页
下页
查询设计器
5.1.2 创建查询5.1.2 创建查询
数据源
设置参数
长沙民政学院电子系
目录
重点
难点
上页
下页
5.1.2 创建查询5.1.2 创建查询
•( 1)选择数据源:启动查询设计器后,出现
“添加表或视图”对话框。单击“添加”按钮
,可将表或视图加入设计器中。
从列表框中选择数据库表或视图
单击此按钮添加自由表
长沙民政学院电子系
目录
重点
难点
上页
下页
5.1.2 创建查询5.1.2 创建查询
• ( 2)选择查询字段: 在“字段”选项卡中可以指定查询要输出的字段、函数或表达式。
在列表框中选择要查询的字段
输出字段
单击此按钮
长沙民政学院电子系
目录
重点
难点
上页
下页
5.1.2 创建查询5.1.2 创建查询• (3)建立数据表间的联接:当查询是基于多个表时,这
些表之间必须有联系,根据联接条件来提取表中相关的数据信息。
• 数据表间的联接条件可以在“联接”选项卡中指定。如果表间已建立了永久关系,则会自动反映在“联接”选项卡中。
• 内部联接:检索两个表中同时满足条件的记录
• 左联接:检索左表中所有记录以及右表中满足条件的记录(右表中不满足条件的记录所对应的字段值为 NULL)
• 右联接:检索右表中所有记录以及左表中满足条件的记录
• 完全联接:检索两个表中的所有记录
长沙民政学院电子系
目录
重点
难点
上页
下页
5.1.2 创建查询5.1.2 创建查询
建立数据表间的联接
两表间的联接关系线
联接类型 联接条件
长沙民政学院电子系
目录
重点
难点
上页
下页
5.1.2 创建查询5.1.2 创建查询
•( 4)指定查询条件:在“筛选”选项卡中建立筛选表达式,选择满足查询条件的记录。•
长沙民政学院电子系
目录
重点
难点
上页
下页
5.1.2 创建查询5.1.2 创建查询
• ( 5)组织查询结果:按某个字段顺序排列查询结果或分组排列。
• ① 设置数据排序 在“排序依据”选项卡中指定排序的依据。
先按成绩字段降序排列,成绩相同的再按学号升序排列
长沙民政学院电子系
目录
重点
难点
上页
下页
5.1.2 创建查询5.1.2 创建查询• ② 设置分组排序 在“分组依据”选项卡中指定分组的依据。• 分组排序与求和( SUM)、计数( COUNT)、求平均值( AVG)等统计计算一起使用,可以完成一组记录的计算。
长沙民政学院电子系
目录
重点
难点
上页
下页
5.1.2 创建查询5.1.2 创建查询
• ( 6)杂项选择:在“杂项”选项卡中选择要输出的记录范围,默认将查询得到的结果全部输出。
长沙民政学院电子系
目录
重点
难点
上页
下页
5.1.2 创建查询5.1.2 创建查询
•3 .选择查询去向 打开查询设计器,选择“查询 |查询去向”命令,在 “查询去向”对话框中选择输出去向。
长沙民政学院电子系
目录
重点
难点
上页
下页
5.1.2 创建查询5.1.2 创建查询
• ( 1)浏览 :查询结果输出到浏览窗口(默认)。
• ( 2)临时表:查询结果存入一个临时的只读数据表中。关闭此数据表时,查询结果将丢失。
• ( 3)表:查询结果存入表文件,可以作为一个自由表使用。
• ( 4)图形:查询结果以图形方式输出。
• ( 5)屏幕:查询结果输出主窗口。
• ( 6)报表:查询结果输出到一个报表文件中。
• ( 7)标签:查询结果输出到一个标签文件中。
长沙民政学院电子系
目录
重点
难点
上页
下页
5.1.2 创建查询5.1.2 创建查询•4.保存查询文件 选择“文件|另存为”命令。•5.运行查询 查询文件保存了建立查询时的各种设置信息,通过运行查询文件,可以按指定的查询去向输出查询结果。•(1)项目管理器:选定要运行的查询,然后单击“运行”按钮。•(2)菜单:选择“查询|运行查询”命令,或单击工具栏中的运行按钮“!” 。•(3)命令: DO <查询文件名 .QPR>
• 6.修改查询 重新打开查询设计器修改各项设置•(1)项目管理器: 选中要修改的查询文件,单击“修改”按钮。•(2)命令: MODIFY QUERY <查询文件名>
长沙民政学院电子系
目录
重点
难点
上页
下页
5.1.3 查看查询文件5.1.3 查看查询文件
• 利用查询设计器得到的查询文件是一个文本文件,用户可以查看其内容。• 打开查询设计器,选择“查询 |查看SQL”命令,打开一个只读窗口,其中显示了一条 SQL语句,它包含了用户创建这个查询的所有信息。
长沙民政学院电子系
目录
重点
难点
上页
下页
5.2.1 视图的概念5.2.1 视图的概念
• 通过视图不仅可以从多个表中提取数据,还可以在改变视图数据后,把更新结果送回到数据源表中。• 视图不能以自由表文件的形式单独存在,它必须依赖于某个数据库,并且只有在打开相关的数据库之后,才能创建和使用视图,视图是数据库中的一个特有功能。 • 依据数据来源可以将视图分为两类:•( 1)本地视图:使用本地表或视图•( 2)远程视图:使用 ODBC远程数据源• 如果要保存检索结果,应当使用查询;如果要提取可更新的数据,应当使用视图。
长沙民政学院电子系
目录
重点
难点
上页
下页
5.2.2 创建视图5.2.2 创建视图
• 利用视图设计器可以在交互环境下创建视图。•1 .启动视图设计器•( 1)项目管理器: 选择数据库中的“本地视图”项,然后单击“新建”按钮,出现“新建本地视图”对话框,选择“新建视图”命令,打开视图设计器窗口。•( 2)命令: CREATE VIEW
•2.视图设计器的使用 与查询设计器相比,视图设计器中只多了一个“更新条件”选项卡,其它都相同。• 通过在“更新条件”选项卡中设置更新属性,可以把对视图数据的修改回送到数据源表中。
长沙民政学院电子系
目录
重点
难点
上页
下页
5.2.2 创建视图5.2.2 创建视图
可更新的字段关键字段
选中此项可以将视图的修改结果回送到数据源表
长沙民政学院电子系
目录
重点
难点
上页
下页
5.2.3 使用视图5.2.3 使用视图
• 视图建立之后,就可以象数据表一样使用。• 视图在使用时,作为临时表在自己的工作区中打开,如果该视图基于本地表,则系统将同时在另一个工作区中打开源表。• 视图的操作:•(1)使用 USE <视图名> 命令打开视图。•(2)使用 USE 命令关闭视图。•(3)在“浏览”窗口中显示或修改视图数据。•(4)使用 SQL语句操作视图。•(5)在文本框、表格控件、表单或报表中使用视图作为数据源。
长沙民政学院电子系
目录
重点
难点
上页
下页
5.3.1 SQL 语言概述5.3.1 SQL 语言概述• SQL语言是数据库的标准语言,几乎所有的关系数据库管理系统都支持 SQL标准。 SQL语言的主要特点是:•(1)高度集成化 SQL语言集数据定义、数据操纵、数据查询和数据控制功能于一体。•(2)非过程化 SQL是一种非过程化的语言。•(3)简洁易学 SQL语言完成数据定义(CREATE、 DROP、 ALTER)数据操纵( INSERT、 UPDATE、 DELETE)、数据控制( GRANT、 REVOKE)和数据查询( SELECT)等核心功能只用了 9个命令动词;而且语法也接近英语自然语法。•(4)用法灵活 SQL语言既能够以人机交互方式来使用,也可以嵌入到程序设计语言中以程序方式使用。
长沙民政学院电子系
目录
重点
难点
上页
下页
5.3.2 数据定义5.3.2 数据定义
• 标准 SQL的数据定义功能非常广泛,包括数据库、表、视图、存储过程、规则及索引的定义等。数据定义语言由 3个命令组成。
•( 1)定义表: CREATE Table
•( 2)修改表结构: ALTER Table
•( 3)删除表: DROP Table
长沙民政学院电子系
目录
重点
难点
上页
下页
1. 表的定义1. 表的定义•格式:•CREATE TABLE|DBF <表名 >(字段名 类型 ( 宽度 ,小数位数 ))[NULL] CHECK <字段有效性规则 > ERROR <错误信息 > DEFAULT <默认值 > PRIMARY KEY|UNIQUE && 主索引 |候选索引
•例如,定义一个名为“学生 1.DBF”的数据库表:• CREATE TABLE 学生 1(学号 C(8) PRIMARY,; && 学号为主索引– 姓名 C(8),性别 C(2) DEFUALT “男” ,; && 性别的默认值为“男”– 出生日期 D,系别 C(10),贷款否 L,简历 M,照片 G NULL)
长沙民政学院电子系
目录
重点
难点
上页
下页
2. 表结构的修改2. 表结构的修改–(1)格式1:添加或修改字段 ALTER TABLE <表名> ADD|ALTER <字段名><类型>(宽度,小数位数)
• CHECK <字段有效性规则> ERROR <出错信息>• PRIMARY KEY | UNIQUE
•例如,• 在“成绩 1”表中添加一个字段:平时成绩 N(5)• ALTER TABLE 成绩 1 ADD 平时成绩 N(5)• 将平时成绩字段修改为 N(5,1)• ALTER TABLE 成绩 1 ALTER 平时成绩 N(5,1)
长沙民政学院电子系
目录
重点
难点
上页
下页
2. 表结构的修改2. 表结构的修改•(2) 格式2:修改或删除默认值、字段有效性规则ALTER TABLE <表名> ALTER <字段名> [SET DEFAULT <默认值>] [DROP DEFAULT] [SET CHECK <有效性规则>] [DROP CHECK]•例如,
• 删除“成绩 1”表中平时成绩字段的有效性规则:
• ALTER TABLE 成绩 1 ALTER 平时成绩 DROP CHECK• 将平时成绩字段的默认值设置为 80:
• ALTER TABLE 成绩 1 ALTER 平时成绩 SET DEFAULT 80•
长沙民政学院电子系
目录
重点
难点
上页
下页
2. 表结构的修改2. 表结构的修改• (3)格式3:删除字段、更改字段名、设置记录有效性规则等• ALTER TABLE <表名> DROP <字段名> && 删除字段
ENAME COLUMN <原字段名> TO <新字段名> && 更改字段名SET CHECK <记录有效性规则> ERROR <出错信息> [ DROP CHECK ] && 设置或删除记录有效性规则ADD PRIMARY KEY <复合索引表达式> TAG <索引标识 >[ DROP PRIMARY KEY ] && 设置或删除主复合索引表达式 ADD UNIQUE <复合索引表达式> TAG <索引标识 >[ DROP UNIQUE ] && 设置或删除候选复合索引表达式
• 例:将“学生 1”表中的“学号”字段更名为“学生证编号“• ALTER TABLE 学生 1 RENAME COLUMN 学号 TO 学生证编号• 对“学生 1”表中的“姓名”和“出生日期”字段建立主索引• ALTER TABLE 学生 1
ADD PRIMARY KEY 姓名 +DTOC(出生日期) TAG 姓名 _生日
长沙民政学院电子系
目录
重点
难点
上页
下页
3. 表的删除3. 表的删除
• ( 3)删除表: DROP TABLE <表名 > • 例如,删除“学生 1”表
• DROP TABLE 学生 1
长沙民政学院电子系
目录
重点
难点
上页
下页
5.3.3 数据操纵5.3.3 数据操纵• ( 1)插入记录• 格式1:在表的尾部尾添加一条新记录
– INSERT INTO <表名> (字段1,字段2,……) VALUES (值1,值2,……)
• 说明:插入所有字段值时,可省略<字段名表>• 例如,向“学生 1”表中添加两条记录:• INSERT INTO 学生 1 VALUES(“01020314”,”张红” ,“男” ,;• {^1982/07/01},”计算机” ,.T.,”张红是北京人” ,null)• INSERT INTO 学生 1(学号,姓名 ) VALUES(“01020315”,”李兰” )• 格式2:记录值来自数组或同名的内存变量
– INSERT INTO <表文件> FROM ARRAY <数组>|FROM MEMVAR
长沙民政学院电子系
目录
重点
难点
上页
下页
5.3.3 数据操纵5.3.3 数据操纵• (2)删除记录• 格式: DELETE FROM <表名 > WHERE <条件 >• 说明:该命令执行的是逻辑删除操作。• 例如,将“学生 1”表中所有男生的记录逻辑删除:• DELETE FOR 学生 1 WHERE 性别 = “男”• (3) 更新记录• 格式: UPDATE <表名 > SET <字段名> = <表达式
> WHERE <条件 >• 例如,将“学生 1”表中所有男生的“贷款否”字段
改为“ .T.”
• UPDATE 学生 1 SET 贷款否 = .T. WHERE 性别 = “男”
长沙民政学院电子系
目录
重点
难点
上页
下页
5.3.4 数据查询5.3.4 数据查询
• 数据查询是 SQL语言的核心,也称作
SQL-SELECT命令。使用 SQL-SELECT命令,
可以对数据源进行各种组合,有效地筛选记录
、管理数据、并对结果排序及指定输出去向等
,无论查询多么复杂,其内容只有一条
SELECT语句。
• SQL-SELECT 命令可以进行多个查询块
的嵌套查询,以完成更复杂的查询任务。
长沙民政学院电子系
目录
重点
难点
上页
下页
5.3.4 数据查询5.3.4 数据查询• 格式: SELECT [DISTINCT] [TOP<数值> [PERCENT]]
[<别名1>.]<选项1> AS <列名1>, [<别名2>.]<选项2> AS <列名2>,…… FROM <表1> [AS <别名1>],<表2>[AS <别名2>],…… [[INNER|LEFT|RIGHT|FULL] JOIN <表2> ON <联接条件>] [INTO <目标>]|TO FILE <文件名>|TO PRINT [WHERE <筛选条件> [AND <联接条件>]]
• [GROUP BY <分组项>] [HAVING <筛选条件>] [ORDER BY <排序项1>, <排序项2>]
• [UNION SELECT <命令>]
长沙民政学院电子系
目录
重点
难点
上页
下页
5.3.4 数据查询5.3.4 数据查询•1. 基本查询: SELECT…FROM…WHERE • 例如,从“学生”表中查询所有男生的学号、姓名和出生日期:• SELECT 学号 ,姓名 ,出生日期 FROM 学生 WHERE 性别 =“男”•2. 带特殊运算符的条件查询:在 WHERE 子句所带的筛选条件表达式中可以使用一些特殊运算符,如 IN 、 BETWEEN…AND… 、 LIKE 。• 例如,查询成绩良好( 75~ 85 分)的学生和课程信息:• SELECT * FROM 成绩 WHERE 成绩 BETWEEN 75 AND 85 •3. 排序查询:使用 ORDER BY 子句,可以对查询结果按升序( ASC)或降序( DESC)排列。 • 例如,按课程号输出学生的各科成绩,同一门课按成绩降序排列:• SELECT * FROM 成绩 ORDER BY 课程号 , 成绩 DESC
长沙民政学院电子系
目录
重点
难点
上页
下页
5.3.4 数据查询5.3.4 数据查询• 4. 计算与分组查询:使用 GROUP BY 子句可以实现分组查询,通常与计算查询(如计数、求和、求平均值等)结合使用,先按指定的数据项分组,再对各组汇总计算。• 例如,查询各门课程的平均成绩:• SELECT 课程号 ,AVG(成绩 ) AS 平均成绩 FROM 成绩 GROUP BY 课程号•5. 多表查询:多表查询时,表和表之间必须有联接关系,在 WHERE子句中可以指定表间的联接关系。其格式为:• <表名 1>.<字段名 1> = <表名 2>.<字段名 2> 或• < 别名 1>.<字段名 1> = < 别名 2>.<字段名 2>•例如,查询各门课程的平均成绩,要求输出课程名和成绩信息:• SELECT 课程名 ,AVG(成绩 ) AS 平均成绩 FROM 课程 KC,成绩 CJ;• WHERE KC.课程号 = CJ.课程号 GROUP BY CJ.课程号
长沙民政学院电子系
目录
重点
难点
上页
下页
5.3.4 数据查询5.3.4 数据查询•6. 联接查询:利用 FROM…ON 子句建立两表之间的联接。• 格式: FROM <表名1> INNER | LEFT | RIGHT | FULL JION <表名2> ON <联接条件>• 说明: INNER JOIN(内部联接 )、 LEFT JOIN(左联接 )、 RIGHT
JOIN(右联接)、 FULL JOIN(全联接)的含义与 4.1.2 节中相同• 例如,• 查询各门课程的平均成绩,要求输出课程名和成绩信息:• SELECT 课程名 ,AVG(成绩) AS 平均成绩 FROM 课程 KC ;
• INNER JOIN 成绩 CJ;• ON KC.课程号 = CJ.课程号 ;• GROUP BY CJ.课程号
长沙民政学院电子系
目录
重点
难点
上页
下页
5.3.4 数据查询5.3.4 数据查询
•7. 嵌套查询:在一个 SELECT 命令的 WHERE 子句中出现另一个 SELECT 命令 (即子查询)。• 子查询的结果必须是确定的值。• 例如,查询李华同学所学课程的课程名和成绩:• SELECT 课程名 , 成绩 FROM 课程 KC, 成绩 CJ;• WHERE KC.课程号 = CJ.课程号 ;• AND CJ.学号 = (SELECT 学号 FROM 学生 WHERE 姓名 =“李华” )
• 子查询WHERE 子句中同时包
含联接条件和筛选条件
长沙民政学院电子系
目录
重点
难点
上页
下页
5.3.4 数据查询5.3.4 数据查询• 8. 查询输出:查询结果默认显示在浏览窗
口中,通过 INTO 子句或 TO 子句可以对输出重定向。
• 格式:• INTO ARRAY <数组 > | CURSOR <临时
表 > | && 保存到内存 DBF <表文件 > | TABLE <表文件 > && 保存到表文件– TO FILE <文本文件 > && 保存到
文本文件– TO PRINT && 打印– 例如,查询各门课程的平均成绩,结果保存在
“平均成绩”表中。– SELECT 课程号 ,AVG(成绩 ) AS 平均成绩
FROM 成绩 ;– GROUP BY 课程号 INTO TABLE 平均
成绩
长沙民政学院电子系
第 6 章 结构化程序设计 第 6 章 结构化程序设计
长沙民政学院电子系
目录
重点
难点
上页
下页
6.1.1 基本概念6.1.1 基本概念•1 .程序 能够完成特定任务的命令序列,存储在命令文件( .PRG)中。运行该文件可自动执行一系列操作。•2 .结构化程序设计 用结构化编程语句来编写程序。•3 .程序的基本结构•( 1)说明部分:一般是一组注释语句。•( 2)初始化部分:设置程序运行时的系统状态和参量初值。•( 3)程序主体部分:包括数据输入、处理和输出 3个模块。•( 4)还原部分:将当前的工作环境恢复到执行该程序前的状态。•( 5)程序的退出:程序运行完毕,返回 VFP 应用程序窗口或退出 VFP,返回操作系统。
长沙民政学院电子系
目录
重点
难点
上页
下页
6.1.2 程序文件的建立6.1.2 程序文件的建立
•1 .项目管理器 :选择 “程序”项,单击“新建”
按钮,打开代码编辑窗口,输入程序内容。然后选择
“文件 |保存”命令将编写的代码存入磁盘。
•2. 菜单:选择“文件 |新建”,在“新建”对话框
中选择“程序”文件类型,单击“新建文件”按钮,
进入代码编辑窗口。
•3. 命令: MODIFY COMMAND <程序文件名 >
• 输入命令语句时,必须一条命令占一行,一
行写不下时,在行尾加续行符( ;),换行后接着书
写该命令语句。
长沙民政学院电子系
目录
重点
难点
上页
下页
6.1.2 程序文件的建立6.1.2 程序文件的建立
代码编辑窗口
命令序列
注释语句
长沙民政学院电子系
目录
重点
难点
上页
下页
6.1.3 程序文件的修改6.1.3 程序文件的修改
• 对已建立的程序文件可以重新进入代码编辑
窗口修改内容。
• 1 .项目管理器:选中要修改的程序文件,单击
“修改”按钮,重新打开代码编辑窗口。修改
后,选择“文件 |保存”命令,保存程序。
• 2 .菜单:选择“文件 |打开”命令,将要修改
的程序文件调入代码编辑窗口。
• 3 .命令: MODIFY COMMAND <程序文件名 >
长沙民政学院电子系
目录
重点
难点
上页
下页
6.1.4 程序文件的执行6.1.4 程序文件的执行
• 1. 项目管理器:选中要执行的程序文件,单击“运行”按钮。
• 2. 菜单:选择“程序 |运行”命令。
• 3. 命令: DO <程序文件名 >
长沙民政学院电子系
目录
重点
难点
上页
下页
6.2.1 基本命令6.2.1 基本命令•l.注释命令 非执行语句,用于提高程序的可读性。• NOTE、 *(行首注释)、 &&(行尾注释)•2. 环境设置命令 set 命令。•3. 清除命令: CLEAR(清屏)• CLEAR ALL(关闭所有文件、清除所有内存变量)•4. 关闭文件命令: CLOAE ALL (关闭所有文件)• CLOSE < 文件类型> (关闭指定类型的文件)•5. 运行中断和结束命令• Cancel 终止程序运行,返回命令窗口。 • RETURN 结束当前程序的执行,返回到调用它的上级程序。• QUIT 关闭所有文件,退出 VFP 系统,返回操作系统环境。
长沙民政学院电子系
目录
重点
难点
上页
下页
6.2.2 输入 / 输出命令6.2.2 输入 / 输出命令•1.基本输出命令: ?|?? <表达式1>[,<表达式2>…]•2. 单字符输入命令: WAIT
•3.字符串输入命令: ACCEPT TO <内存变量 >•4.表达式输入命令: INPUT TO <内存变量 >•5.格式输入输出命令• 格式1: @ <行号,列号 > SAY <表达式> • 功能:在主窗口指定的位置处显示表达式的值• 格式2: @ <行号,列号 > SAY <表达式> GET <变量 > • READ• 功能:在窗口指定位置处分别显示表达式和变量的值。若使用 READ 语句,则可以对变量进行修改。
长沙民政学院电子系
目录
重点
难点
上页
下页
6.3 程序的基本控制结构6.3 程序的基本控制结构•1.顺序结构:按程序中语句的书写顺序逐条执行。•2.分支结构(选择结构):根据逻辑条件的结果执行不同的命令序列。•(1)单分支结构: IF...ENDIF•( 1)双分支结构: IF...ELSE...ENDIF•( 2)多分支结构: DO CASE...ENDCASE•3. 循环结构:按规定的条件重复执行一段命令序列。•(1 ) DO WHILE...ENDDO•( 2) FOR ... ENDFOR•( 3) SCAN …ENDSCAN 对数据表的循环操作。•说明:分支结构或循环结构可以嵌套,但分支与分支之间或循环与 循环之间不能交叉。
长沙民政学院电子系
目录
重点
难点
上页
下页
条件
语句列
ENDIF 后面语句
Y
N
单分支结构流程图
条件
语句列 2
ENDIF 后面语句
Y N
语句列 1
双分支结构流程图
6.3 程序的基本控制结构6.3 程序的基本控制结构
长沙民政学院电子系
目录
重点
难点
上页
下页
多分支结构流程图
条件 1
ENDCASE 后面语句
N
Y
条件 2
条件 n
OTHERWISE
N
N
无
语句列 1
语句列 2
语句列 n
其它语句列有
6.3 程序的基本控制结构6.3 程序的基本控制结构
长沙民政学院电子系
目录
重点
难点
上页
下页
循环结构
条件
循环体
ENDDO 后面语句
Y
N
含有 LOOP 或 EXIT 的循环结构
条件
ENDDO 后面语句
Y
N
LOOP
EXIT
循环体
6.3 程序的基本控制结构6.3 程序的基本控制结构
长沙民政学院电子系
目录
重点
难点
上页
下页
6.4.1 过程与过程文件6.4.1 过程与过程文件
• 过程也叫子程序,是一个相对独立的程序段 , 可以被其他程序调用。调用子程序的程序称为主程序。
•1. 过程的建立与调用
•( 1)过程的建立:一个过程就是一个具有特定功能的命令文件( .PRG ),它的建立、运行与一般程序相同。但是,一个过程中至少要有一条 RETURN 返回语句。
•(2)过程的调用:在上级程序中设置一条 DO 命令即可调用一个过程。
• 命令: DO <过程名> [IN <文件名>] [WITH <参数表>]
长沙民政学院电子系
目录
重点
难点
上页
下页
...DO SUB1
.. .
...
CANCEL
主程序MAIN.PRG
...DO SUB2
.. .
...
RETURN
子程序SUB1.PRG . . . .
. . . . . .
RETURN . . . . . .
RETURN TO MASTER
子程序SUB2.PRG
过程调用示意图
6.4.1 过程与过程文件6.4.1 过程与过程文件
长沙民政学院电子系
目录
重点
难点
上页
下页
6.4.1 过程与过程文件6.4.1 过程与过程文件•2.过程文件 将多个过程存放在一个文件中形成过程文件。过程文件中的过程不能作为一个命令文件单独存盘或独立运行。•(1)过程文件的建立• 命令: MODIFY COMMAND <过程文件名>• 过程文件的基本结构:• PROCEDURE <过程名>• <命令序列>• [RETURN [TO MASTER]]• ENDPROC
•( 2)过程文件的打开与关闭 • 命令: SET PROCEDURE TO <过程文件>
长沙民政学院电子系
目录
重点
难点
上页
下页
6.4.1 过程与过程文件6.4.1 过程与过程文件•3.带参数的过程调用 将不同的参数分别传递给同一过程,执行同一功能的操作后返回不同的结果,可以大大提高程序模块的灵活性。
•(1)定义带参数的过程:
• PROCEDURE <过程名>
• PARAMETERS <参数表>
• <命令序列>
• RETURN
• ENDPROC
•( 2)调用带参数的过程:
• 命令: DO <过程名> WITH <参数表> 定义过程时所用的参数为形式参数,调用子程序时所用的参数为实际参数。使用时是将实参来代替子程序中的形参。
长沙民政学院电子系
目录
重点
难点
上页
下页
6.4.2 自定义函数6.4.2 自定义函数
• 自定义函数的建立和使用方法与过程相同。函数除了完成某种特定操作外,还返回一个值。
•1. 定义函数
• FUNCTION <函数名 >( [< 参数表 >])
• <命令序列 >
• [RETURN <表达式 >]
• ENDFUNC
•2. 调用函数
• 格式: <函数名 >(< 参数表 >)
长沙民政学院电子系
目录
重点
难点
上页
下页
6.4.3 变量的作用域6.4.3 变量的作用域•1.全局变量 使用 PUBLIC 关键字定义的变量(也称公共变量),可以是全局内存变量或数组。 • 格式: PUBLIC <内存变量表> | [数组 ]•2.局部变量 使用 LOCAL 关键字定义的变量。• 格式: LOCAL <内存变量表> | [数组 ]•3.私有变量 没有通过 PUBLIC 或 LOCAL 关键字定义而在程序中直接使用(即由系统自动隐含建立)的变量。• 私有变量在建立它的程序及其下属的子程序中有效,一旦建立它的程序运行结束,这些私有变量就自动清除。• 当子程序中的变量与上级程序中的变量同名时,可以在当前子程序中使用 PRIVATE 关键字对该同名变量进行隐藏说明,使其在当前子程序中暂时无效。• 格式: PRIVATE <内存变量表>
长沙民政学院电子系
目录
重点
难点
上页
下页
6.5 程序的调试6.5 程序的调试
• 调试程序就是在调试窗口动态监测程序的执行情况,对于语法错误,系统可以给出出错信息并指出出错的位置;对于编程中的算法错误(或逻辑错误),系统是无法确定的,只能由用户自己根据程序运行的结果来检查。
•1. 调试器窗口:选择“工具|调试器”命令,打开调试器窗口。在该窗口中通过“窗口”菜单,可打开跟踪、监视、局部、调用堆栈和输出5个子窗口,它们分工合作、协调一致地完成程序的调试任务。
•2. 调试菜单:包含了程序调试过程中使用的各种命令。
长沙民政学院电子系
目录
重点
难点
上页
下页
6.5 程序的调试6.5 程序的调试
断点跟踪窗口
监视窗口
调用堆栈窗口
局部窗口
调试输出窗口
当前行
调试菜单