1 / 41

上篇 —— 语言基础

上篇 —— 语言基础. 1. 初识 Visual FoxPro 2. 表的基本操作 3. 查询与统计. 本篇描述了“以界面操作为主、命令方式为辅的” VFP 交互操作方式。第 1 章概述了设计器、项目管理器等辅助工具,展示了 VFP 的环境特色;第 2 章侧重介绍表的建立与维护;第 3 章主要讨论对表数据的查询与统计。 VFP 支持交互操作与程序执行两类工作方式,前者是后者的基础。学好本篇的内容,对初学者有重要意义。. 第 1 章 初识 Visual FoxPro. Visual FoxPro 的发展与特点 Visual FoxPro 的产生

eagan
Télécharger la présentation

上篇 —— 语言基础

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 上篇——语言基础 1.初识Visual FoxPro 2.表的基本操作 3.查询与统计

  2. 本篇描述了“以界面操作为主、命令方式为辅的”VFP交互操作方式。第1章概述了设计器、项目管理器等辅助工具,展示了VFP的环境特色;第2章侧重介绍表的建立与维护;第3章主要讨论对表数据的查询与统计。本篇描述了“以界面操作为主、命令方式为辅的”VFP交互操作方式。第1章概述了设计器、项目管理器等辅助工具,展示了VFP的环境特色;第2章侧重介绍表的建立与维护;第3章主要讨论对表数据的查询与统计。 VFP支持交互操作与程序执行两类工作方式,前者是后者的基础。学好本篇的内容,对初学者有重要意义。

  3. 第1章 初识Visual FoxPro • Visual FoxPro的发展与特点 • Visual FoxPro的产生 • Visual FoxPro的新版本 • Visual FoxPro的特点 • 功能强大的自含型命令式开发语言 • 支持面向对象的程序设计 • 通过COM组件实现应用集成 • 支持网络应用 • 大量使用可视化的辅助设计工具

  4. 1.2~ 1.3 VFP的界面组成、命令与工作方式 • VFP的窗口 • 程序窗口 • 命令窗口 • 工具窗口 • 窗口中的图标 • 菜单 • 对话框 • 命令格式 • use SB && 打开名称为SB(设备)的表文件 • list && 列表显示当前表(即SB)的所有记录 • list for 价格<10000 && 只显示价格低于1万元的设备 • 交互操作方式与程序执行方式

  5. 1.4 Visual FoxPro的设计与管理工具 • 向导 • 表向导 • 报表向导 • 设计器 • 表设计器 • 表单设计器 • 生成器 • 表单生成器 • 文本框生成器 • 项目管理器

  6. 项目管理器:VFP的控制中心 集中管理项目中的数据、对象 • 目录树结构 • 多种功能按钮 • 支持项目建立数据词典

  7. 第2章 表的基本操作2.1 表的建立与修改 设备表 设备表的结构 • 有关命令 • 创建设备表 create sb • 打开设备表 Use sb • 浏览、修改记录 browse • 修改结构 Modify structure • 关闭当前表 use

  8. 2.2 表达式 • 常量 • 数值型常量 例如10,-100,2.81828, • 字符型常量 例如"微机",'PC机',"3.14159" • 日期型和日期时间型常量 例如{06/30/1999}, {9/15/99 8:45},{^2001/08/30} • 设置通常的日期格式,命令SET STRICTDATE TO 0, • 设置严格的日期格式,命令SET STRICTDATE TO 1 • 逻辑型常量 真和假两种值, .T. . F . • 变量 • 内存变量 s='VFP' STORE 2*4 TO n1,n2,n3 ? 'S=',s && 显示S= VFP DIMENSION x(3),a(2,3) &&定义数组 a(1,3) =5 &&数组元素赋值 • 字段变量 USE sb ?名称 && SB.DBF打开后记录指针指向第1个记录,显示车床 GO 5 && 将记录指针指向第5个记录(GO命令参阅2.3.1节) ?名称 • 系统变量

  9. 表2.6 VFP算术、关系、逻辑运算符

  10. 表2.8字符处理函数

  11. 2.3 VFP命令的常用子句 命令格式: LIST|DISPLAY [[FIELDS] <表达式表>][<范围>][FOR <条件>][WHILE <条件>] [OFF][ TO PRINT [PROMPT]|TO FILE <文件>] 范围子句 : ALL 所有记录 NEXT <N> 从当前记录起的N个记录 RECORD <N> 第N个记录 REST 从当前记录起到最后一个记录止的所有记录 例: USE sb GO 2 && 记录指针指向第2个记录 LIST NEXT 5 FOR 价格>10000 && 显示第2,3,6等3个记录 LIST RECORD 5 FIELDS 编号,名称,价格 USE sb LIST NEXT 3 && (1) LIST 部门,编号,名称,备注 FOR 部门="21" && (2) LIST 编号,名称,价格*0.9,启用日期 FOR YEAR(启用日期)<1995 OFF && (3)

  12. 2.4 表的维护命令 1. 表的复制 COPY FILE <文件名1> TO <文件名2> COPY TO <文件名> [<范围>][FOR <条件>][WHILE <条件>] [FIELDS <字段名表>| FIELDS LIKE <通配字段名> | FIELDS EXCEPT <通配字段名>] [[TYPE][SDF|XLS|DELIMITED[WITH <定界符>|WITH BLANK|WITH TAB]]] COPY STRUCTURE TO <文件名> [FIELDS <字段名表>] 例: USE && 若SB.DBF是打开的,则须关闭它 COPY FILE SB.DBF TO SB1.DBF && 复制得SB1.DBF COPY FILE SB.FPT TO SB1.FPT && 复制得SB1.FPT USE sb COPY TO a1 && 对sb.dbf原样复制,同时生成A1.DBF与A1.FPT COPY TO a2 FIELDS 名称,编号 FOR LEFT(部门,1)=“2” LIST && 显示SB.DBF的记录数据 USE a2 LIST && 显示A2.DBF的记录数据 USE sb COPY TO b1 NEXT 3 SDF && 以系统数据格式复制,产生文本文件B1.TXT COPY STRUCTURE TO sb2 FIELDS 名称,价格,编号,备注

  13. 2. 表数据的替换 • REPLACE <字段名1> WITH <表达式1> [ADDITIVE][,<字段名2> WITH <表达式2> [ADDITIVE]] ...[<范围>][FOR <条件>][WHILE <条件>] • SCATTER [FIELDS <字段名表>|FIELDS LIKE <通配字段名>|FIELDS EXCEPT <通配字段名>] [MEMO] TO <数组名> [BLANK] | MEMVAR [BLANK] • GATHER FROM <数组名>|MEMVAR [FIELDS <字段名表>|FIELDS LIKE <通配字段名>|FIELDS EXCEPT <通配字段名>][MEMO] • COPY TO ARRAY <数组名> [FIELDS <字段名表>][<范围>][FOR<条件>][WHILE<条件>] • APPEND FROM ARRAY <数组名> [FOR<条件>] [FIELDS<字段名表>]

  14. 3. 逻辑表的设置 • 过滤器 SET FILTER TO [<条件>] • 字段表 SET FIELDS TO [[<字段名1>[,<字段名2>...]] |ALL[LIKE <通配字段名>|EXCEPT <通配字段名>]] SET FIELDS ON|OFF

  15. 4. 建立或修改表结构的命令 • 命令: • CREATE TABLE <表名> • (<字段名1> <字段类型>[(<字段宽度> [, <小数位数>])][,<字段名2>...]) • ALTER TABLE <表名> • ADD | ALTER [COLUMN] <字段名> <字段类型> [(<字段宽度> [, <小数位数>])] • ALTER TABLE <表名> DROP [COLUMN] <字段名1>|RENAME COLUMN <字段名2> TO <字段名3> • 例: • CREATE TABLE dx(编号 c(5),年月 c(4),费用 n(6,1)) • LIST STRUCTURE && 主屏幕显示DX.DBF的结构 • INSERT INTO dx VALUES("016-1","8911",2763.5) • INSERT INTO dx VALUES("016-1","9112",3520.0) • INSERT INTO dx VALUES("037-2","9206",6204.4) • INSERT INTO dx VALUES("038-1","8911",2850.0) • LIST OFF && 主屏幕显示所有记录 • 主屏幕所显示DX.DBF的记录数据如下: • 编号 年月 费用 • 016-1 8911 2763.5 • 016-1 9112 3520.0 • 037-2 9206 6204.4 • 038-1 8911 2850.0 • ALTER TABLE dx ADD 摘要 m(4) • ALTER TABLE dx DROP 摘要

  16. 2.5 记录的维护命令 • 记录的定位与移位 例:USE SB && 当前记录为第1个记录 ?RECNO() && 显示:1 GO BOTTOM && 记录指针指向第7个记录,当前记录为第7个记录 ?RECNO() && 显示:7 GO 4 && 当前记录为第4个记录 SKIP -1 && 当前记录为第3个记录 • 记录的插入与追加 INSERT [BLANK] [BEFORE] INSERT INTO 表名[(字段名1 [,字段名2, ...])] VALUES(表达式1 [, 表达式, ...]) APPEND [BLANK] • 记录的删除与恢复 DELETE [<范围>] [FOR <条件>] [WHILE <条件>] PACK RECALL [<范围>] [FOR <条件>] [WHILE <条件>] ZAP

  17. 第3章 查询与统计3.1 排序与索引 排序: USE sb SORT TO bmx ON 部门/D,价格 FOR 主要设备 USE bmx LIST && 主窗口显示如下 记录号 编号 名称 启用日期 价格 部门 主要设备 备注 商标 1 037-2 磨床 07/21/90 241292.12 22 .T. memo gen 2 016-2 车床 01/15/92 27132.73 21 .T. memo gen 3 016-1 车床 03/05/90 62044.61 21 .T. Memo gen 4 100-1 微机 08/12/97 8810.00 12 .T. memo Gen

  18. 索引 结构复合索引文件 .CDX,主名与表的主名相同,自动维护 表3.1 索引功能分类表 建立索引文件或增加索引标识 INDEX ON <索引关键字> TO <单索引文件名> | TAG <索引标识名> [OF <复合索引文件名>] [FOR <条件>] [COMPACT] [ASCENDING|DESCENDING] [UNIQUE|CANDIDATE] [ADDITIVE] 确定主控索引 SET ORDER TO [<数值表达式>|<单索引文件名>|[TAG] <索引标识> [ASCENDING|DESCENDING]]

  19. [例3-3] 为SB.DBF建立一个结构复合索引文件,其中包括3个索引: (1) 记录以价格降序排列,索引标识为普通索引型。 (2) 记录以部门升序排列,部门相同时则按价格升序排列,索引标识为普通索引型。 (3) 记录以部门升序排列,部门相同时则按价格降序排列,索引标识为候选索引型。 USE sb INDEX ON 价格 TAG jg DESCENDING && 建立SB.CDX,关键字价格,JG为普通索引型索引标识 LIST && 记录已按价格降序排列 INDEX ON 部门+STR(价格,9,2) TAG bmjg ; && 关键字为字符表达式“部门+STR(价格,9,2)”,索引标识BMJG增入SB.CDX LIST && 索引表达式运算后升序排列,使记录按部门升序、部门相同按价格升序排列 INDEX ON VAL(部门)-价格/1000000 TAG bmjg1 CANDIDATE ; && bmjg1为候选索引型索引标识,索引标识增入SB.CDX LIST && 索引表达式运算后升序排列,使记录按部门升序、部门相同按价格降序排列 SET ORDER TO TAG jg && 指定SB.CDX的索引标识JG为主控索引, JG 索引序号为3 LIST && 记录按价格降序排列 SET ORDER TO TAG bmjg LIST && 记录按(2)排列

  20. 3.2 查询命令 1. 顺序查询 LOCATE FOR <条件> [<范围>] [WHILE <条件>] CONTINUE USE sb LOCATE FOR 价格<15000 AND NOT 主要设备 DISPLAY && 显示: 记录号 编号 名称 启用日期 价格 部门 主要设备 备注 商标 4 038-1 钻床 10/12/89 5275.00 23 .F. Memo gen CONTINUE ?RECNO(),名称,价格,主要设备 && 显示: 6 复印机 10305.01 .F. CONTINUE && 状态条显示:已到定位范围末尾。 2. 索引查询 SEEK <表达式> USE sb INDEX ON 编号 TAG bh SEEK "038-1" && 不可写为: SEEK 编号="038-1" ?RECNO() && 显示:4 INDEX ON 启用日期 TAG qyrq SEEK {3/5/90} ?FOUND() &&.显示.T.,表示找到该日期 INDEX ON 价格 TAG jg SEEK 1000.00

  21. 3. 工作区和数据工作期

  22. 打开数据工作期窗口:选定窗口菜单的数据工作期命令打开数据工作期窗口:选定窗口菜单的数据工作期命令 • 建立视图文件(.VUE): • 文件菜单的另存为命令 • CREATE VIEW <视图文件名> • 打开视图文件: SET VIEW TO <视图文件名>

  23. 3.3 表的关联

  24. 多一关系 用命令序列实现: SELECT 2 USE bmdm && 打开子表 INDEX ON 代码 TAG 代码 ADDITIVE && 子表在代码字段建立索引 SELECT 1 USE sb && 打开父表 SET RELATION TO sb.部门 INTO bmdm ADDITIVE && 指定在部门字段对子表设置多一关系

  25. 建立关联命令:SET RELATION TO [<表达式1> INTO <别名1>,…,<表达式N> INTO <别名N>] [ADDITIVE]说明一多关系的命令:SET SKIP TO [<表别名1>[,<表别名2>]…] 一多关系的命令序列示例: CLOSE ALL SELECT 2 USE bmdm && 子表1 SET ORDER TO TAG 代码 SELECT 3 USE zz && 子表2 INDEX ON 编号 TAG bh SELECT 1 USE sb && 父表 SET RELATION TO sb.部门 INTO bmdm SET RELATION TO sb.编号 INTO zz ADDITIVE SET SKIP TO zz && 子表ZZ为多方 BROWSE FIELDS 编号,价格,zz.增值,bmdm.名称:H='部门名'

  26. 3.4 统计命令 • 计数命令 COUNT [<范围>] [FOR <条件1>] [WHILE <条件2>] [TO <内存变量>] • 求和命令 SUM [<数值表达式表>][<范围>][FOR <条件1>][WHILE <条件2>] [TO <内存变量表>|ARRAY <数组>] • 求平均值命令 AVERAGE [<数值表达式表>][<范围>][FOR <条件1>][WHILE <条件2>] [TO <内存变量表>|ARRAY <数组>] • 汇总命令 TOTAL TO <文件名> ON <关键字> [FIELDS <数值型字段表>] [<范围>][FOR <条件1>][WHILE <条件2>] [例3-15] 在DX.DBF中按设备的编号来汇总大修费用,试写出命令序列。 USE dx INDEX ON 编号 TAG bh TOTAL ON 编号 TO jghz FIELDS 费用 && 按编号汇总费用,写入新表JGHZ.DBF USE jghz BROWSE FIELDS 编号,费用 TITLE '大修费用汇总表'

  27. 3.5 SELECT-SQL查询 SELECT-SQL命令: SELECT [ALL | DISTINCT] [<别名>.]<SELECT表达式> [AS <列名>][,[<别名>.]<SELECT表达式>[AS <列名>]...] FROM [FORCE][<数据库名>!]<表名> [<本地名>] [[INNER|LEFT[OUTER]|RIGHT[OUTER]|FULL[OUTER] JOIN <数据库名>!]<表名> [<本地名>] [ON <联接条件> ...] [[INTO <目标>][TO FILE <文件名> [ADDITIVE]TO PRINTER [PROMPT]TO SCREEN]] [PREFERENCE <名字>] [NOCONSOLE] [PLAIN] [NOWAIT] [WHERE <联接条件> [AND <联接条件>...][ANDOR <筛选条件> [ANDOR <筛选条件>...]]] [GROUP BY <组表达式>[,<组表达式>...]] [HAVING <筛选条件>] [UNION [ALL] <SELECT命令>] [ORDER BY <关键字表达式> [ASCDESC] [,<关键字表达式> [ASCDESC]...]] [TOP <数值表达式> [PERCENT]] 例: 查询大修过的设备的编号、名称和部门名: SELECT dx.编号,sb.名称,bmdm.名称 AS 部门名 FROM sb,dx,bmdm; WHERE dx.编号 = sb.编号AND bmdm.代码 = sb.部门 将SB.DBF的记录按部门升序排列,部门相同时按价格降序排列: SELECT 编号,名称,部门,价格 FROM sb ORDER BY 部门,价格 DESC 查找大修过的所有设备: SELECT DISTINCT 编号 FROM dx 求出每一设备的增值金额,并送至打印机打印: SELECT 编号,SUM(增值) FROM zz GROUP BY 编号 TO PRINTER

  28. 查询设计器 • 用查询设计器查询数据的基本步骤 打开查询设计器—进行查询设置,即设置被查询的表、联接条件、字段等输出要求和查询结果的去向—执行查询—保存查询设置。 • 打开查询设计器窗口 MODIFY QUERY <文件名> • 查看由查询生成的SQL命令 快捷菜单的“查看SQL命令” • 查询结果的图形处理 查询设计器窗口

  29. 3.6 数据库表及其数据完整性 • 数据库表与自由表 • 创建数据库SBSJ 选定文件菜单的新建命令—选定数据库选项按钮—选定新建文件按钮— 在创建对话框中键入数据库名:SBSJ(扩展名允许省略) —选定保存按钮后即产生数据库文件SBSJ.DBC,同时出现数据库设计器 • 数据库设计器

  30. 表的数据完整性 • 长名(表名/字段名) 与注释 • 字段属性 • 记录规则 • 永久关系 • 参照完整性

  31. 中篇——程序设计 4.结构化程序设计 5.菜单设计 6.表单设计基础 7.表单控件设计 8.表单高级设计 9.报表设计

  32. VFP程序设计包括传统程序设计和面向对象程序设计两方面的内容。VFP程序设计包括传统程序设计和面向对象程序设计两方面的内容。 • 第4章简要介绍结构化程序设计的基本概念、方法及初步应用。随后的5章介绍基于对象的可视化设计,着重说明各种向导、设计器和控件工具箱等可视化设计工具的用法。 • 从第5至第9章每章一个专题,依次讨论“菜单设计”、“表单设计基础”、“表单控件设计”、 “表单高级设计”和“报表设计”等技术与操作。

  33. 第四章 程序设计初步4.1 程序文件 • 程序文件建立与修改命令: MODIFY COMMAND <文件名> • 程序的运行命令: DO <文件名> • 输入命令: INPUT [<提示信息>] TO <内存变量> • 定位输出命令 @<行,列> [SAY <表达式>] • 运行暂停命令 WAIT [<信息文本>] [TO <内存变量>] [WINDOW [AT <行>,<列>]] [NOWAIT] [CLEAR | NOCLEAR] [TIMEOUT <数值表达式>] [例4-2] WAIT命令输出信息示例。 WAIT "请检查输入内容!" WINDOW

  34. 4.2 程序的控制结构 • 顺序结构 • 分支结构 • 循环结构

  35. 循环语句格式与示例

  36. 4.3 多模块程序

  37. 4.3.4 变量的作用域 • 建立公共变量命令格式: PUBLIC <内存变量表> • 建立私有变量命令格式: PRIVATE [<内存变量表>][ALL[LIKE | EXCEPT <通配符>]] • 建立本地变量命令格式:LOCAL <内存变量表> [例4-17]变量隐藏与恢复的示例。 (1) 假定已建立了如下的程序: * e4-17.prg PARAMETERS sj && sj为私有变量,程序调用前的bj被隐藏起来 PRIVATE mj && mj为私有变量,程序调用前的同名变量mj被隐藏起来 mj =3.14*sj*sj ?”程序执行时的变量清单:” LIST MEMO LIKE ?j RETURN (2) 在命令窗口键入下列命令: RELEASE ALL && 清除用户定义的所有内存变量 mj=0 && 在命令窗口设置的变量是公共变量 bj=3 ?”程序执行前的变量清单:” LIST MEMO LIKE ?j && 显示变量清单 DO e4-17 WITH bj && bj传入e4-17 ?"程序执行后的变量清单:" && 显示变量清单 LIST MEMO LIKE ?j && 程序执行结束时,被屏蔽的变量mj,bj被恢复

  38. 4.4 窗口设计样例 • BROWSE命令 • 定义功能键 命令格式: ON KEY [LABEL <键标号>] [<命令>] • 窗口关闭命令 RELEASE WINDOWS [<窗口名表>] CLEAR WINDOWS CLEAR ALL • 信息对话框函数 函数格式: MESSAGEBOX(<字符表达式1>[,<数值表达式>[,<字符表达式2>]])

  39. [例4-19] 设计一个可利用功能键为SB.DBF添加记录、删除或恢复记录的浏览窗口。 * e4-19.prg PUSH KEY CLEAR && 清除以前设置过的功能键 ON KEY LABEL f4 DO tj && F4 — 设置添加记录功能键 ON KEY LABEL f5 DO schf && F5 — 设置删除/恢复功能键 ON KEY LABEL f6 DO pk && F6 — 清除有删除标记的记录 bs="BROWSE TITLE '设 备 表'+' F4:添加 F5:删除/恢复 F6:清除'" USE sb &bs PROCEDURE tj && 添加记录 APPEND BLANK && 添加一个记录 PROCEDURE schf && 删除/恢复记录处理 IF DELETED() && 记录有删除标记返回.T. RECALL && 当前记录有删除标记则取消它, 即恢复记录 ELSE DELETE && 当前记录无删除标记则打上删除标记 ENDIF PROCEDURE pk && 清除有删除标记的记录 PACK && 清除有删除标记的记录,浏览窗口被关闭 &bs && 重新打开浏览窗口

More Related