1 / 50

Visual FoxPro 程序设计之

命. 令. 与. 数. 据. 表. Visual FoxPro 程序设计之. 2012 级 VFP 程序设计教程 第二讲. 计算机与数学教研室:靳瑞霞 邮箱: sqjcbjsj@126.com. 字 组词 造句 写作文. 有效地进行 VFP 的学习:一步一个脚印. 数据类型、常量和变量 表达式和函数 VF 命令 写程序. 学习步骤:. VF 的常量与变量. 常量( 35 ). 1. 1 )数值型常量 : 如: 20 , 16 , 100 , 1 2 )字符型常量 : 用单引号或双引号括起的 字符串,如: "ABCD"

mara-leach
Download Presentation

Visual FoxPro 程序设计之

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. 令 与 数 据 表 Visual FoxPro程序设计之 2012级 VFP程序设计教程 第二讲 计算机与数学教研室:靳瑞霞 邮箱:sqjcbjsj@126.com

  2. 组词 造句 写作文 有效地进行VFP的学习:一步一个脚印 • 数据类型、常量和变量 • 表达式和函数 • VF命令 • 写程序 学习步骤:

  3. VF的常量与变量 常量(35) 1 1)数值型常量:如:20,16,100,1 2)字符型常量:用单引号或双引号括起的 字符串,如:"ABCD" 3)逻辑型常量,只有两种:.T.和.F. 4)日期型常量和日期时间型常量: 如{^1999-04-22},{^1999-04-24 10:00am} 5)货币型常量:$1234

  4. VF的常量与变量 变量(38) 1 • 内存变量——存放单个数据的内存单元 • 数组变量——存放多个数据的内存单元组 • 字段变量——存放在二维表中的数据项 • 系统变量——VFP提供了一批系统内存变量,它们都以下划线开头,分别用于控制外部设备(如打印机、鼠标器等),屏幕输出格式等方面的信息。

  5. VF的常量与变量 变量(38) 1 变量命名规则 • 以字母、数字及下划线组成,中文VFP可以 使用汉字作变量名。 • 以字母或下划线开始,中文VFP可以汉字开始。 • 长度为1-128个字符,每个汉字占2个字符。 • 不能使用VFP的保留字。

  6. VF的常量与变量 变量 1 内存变量 内存变量是一般意义下的简单变量。每一个内存变量都必须有一个固定的名称,以标识该内存单元的存储位置。用户可以通过变量标识符使用内存单元存取数据。 内存变量的类型有数值型、浮点型、字符型、逻辑型、日期型和日期时间型6种,它的定义是通过赋值语句来进行的。

  7. VF的常量与变量 变量 1 1、<内存变量>=<表达式> 2、STORE <表达式> TO <内存变量表> 功能:计算表达式,然后将计算结果赋给内存变量。格式1只能给一个内存变量赋值,而格式2可以将同一数据赋给多个内存变量。 说明: ①内存变量在赋值时定义了它的值及类型,其类型与所赋的值的类型相同。 ②STORE命令的<内存变量表>可包括多个内存变量,但须用逗号来分隔。 内存变量赋值语句

  8. VF的常量与变量 变量 1 s="计算机" &&字符串计算机赋给变量s,s成为字符型变量 STORE 2*4 TO x,y,z &&计算2*4得8,x、y、z值都为8,均是数值型变量 &&: 注释语句

  9. VF的常量与变量 变量 1 内存变量赋值后有两种输出方式: 1、list memory 内存变量名 2、?或??输出(?进行换行输出,??不换行输出) ***切记不可边赋值边输出,即?A=2*3×

  10. VF的函数 函数(42) 2 • 函数一般格式:函数名([参数表]) • 1.数值函数 • 求绝对值函数:ABS(<数值型表达式>) • 例:?abs(-16) 结果:16 • 求平方根函数:SQRT(<数值型表达式>) • 例:?sqrt(16) 结果:4 • 取整函数:INT(<数值型表达式>) • CEILING (<数值型表达式>) • FLOOR (<数值型表达式>) • 例:?int(56.72) 结果:56

  11. VF的函数 函数 2 • 求余数函数 • MOD(<数值型表达式1>,<数值型表达式2>) • 注意:如果被除数与除数同号,函数值为两数相除的余数,如果被除数与除数异号,函数值为两数的余数再加上除数的值。所得余数的符号和表达式2相同。 • 例:?mod(25,7) 结果:4 • ?mod(25,—7) 结果:—3 • 四舍五入函数 • ROUND(<数值型表达式1>,<数值型表达式2>) • 求最大值和最小值函数 • MAX(<表达式1>,<表达式2>,…, <表达式n>) • MIN(<表达式1>,<表达式2>,…, <表达式n>)

  12. VF的函数 函数 2 2、字符函数: 计算字符串长度函数LEN() 格式:LEN(<字符表达式>) 示例:?LEN(“ABCDF”) X=“首都经贸大学” ?LEN(X) 生成空格函数SPACE() 格式:SPACE(<数值表达式>) 示例:?“北京”+SPACE(3)+“首都”

  13. VF的函数 函数 2 取子字符串函数 SUBSTR()、LEFT()、RIGHT() 格式:SUBSTR(<字符表达式>,<数值表达式1>[,<数值表达式2>]) 示例:?SUBSTR(“城市经济”,5,4) LEFT(<字符表达式>,<数值表达式> RIGHT(<字符表达式>,<数值表达式>

  14. VF的函数 函数 2 转换函数(48) STR()、val()、CTOD()、DTOC() 格式:STR(<数值型表达式1>[,<数值型表达式2>[,<数值型表达式3>]] 功能:将数值型表达式1的值转换成字符串, <数值型表达式2>决定转换后字符串的长度, <数值型表达式3>决定保留的小数位数 。

  15. VF的表达式 表达式(50) 3 ?2*(3+6) ?65/43 ?2^16 ?100%13 a=3 b=6 c=2 X1=(-b+(b^2-4*a*c)^(1/2))/(2*a) • 算术表达式 • 算术运算符 • 括号 ( ) • 乘方 ** 或 ^ • 乘 * • 除 / • 求余 % • 加 + • 减 -

  16. VF的表达式 表达式 3 • 字符表达式 • 连接运算符:+和- • 例:x=‘中国 ’ • y=‘新乡’ • ?x+y 结果:中国 新乡 • ?x-y 结果:中国新乡 • 包含运算符:$(结果是逻辑值) • 例: ?’old’ $ ’hold’ • 结果: .T.

  17. VF的表达式 表达式 3 • 日期和时间表达式 • 运算符:+和- • 例:{^2010-05-01}-{^2010-04-08} • {^2010-05-01}-DATE( ) • DATE( )函数:取系统当前日期(P46)

  18. VF的表达式 表达式 3 • 关系表达式(p51) • 关系运算符:=、<、<=、>、>=、<>或!= • 结果是逻辑值 • 字符的比较规则: • Machine • PinYin • Stroke • 例:?12<23/5+6 结果:.F. • ?”张三”<“李四” 结果:.F. • ?’HE’>’he’ 结果:.T.

  19. VF的表达式 表达式 3 • 逻辑表达式 • 逻辑运算符: • 非 NOT .NOT. ! • 与 AND .AND. • 或 OR .OR. • 例:!12>8 结果:.F. • 12>8 AND 6<3 结果:.F. • 12>8 OR 6<3 结果:.T.

  20. VF表的基本操作 表的建立(57) 4 二维表的两个组成部分:表结构、表记录,建立表的关键在于表结构的设计。 CREATE命令或文件/新建菜单方式可打开表设计器,表的扩展名默认为.DBF,表建好后放置在默认目录中

  21. VF表的基本操作 表的建立 4 • 设计表结构的关键要素: • 1、字段名(字段变量):由汉字、字母、数字或下划线组成,以汉字、字母或下划线开头,自由表的字段名最多为10个字符,数据库表的字段名最多为128个字符。 • 2、字段类型: • 3、字段宽度: • 4、小数位数: • 5、是否允许 • 为空值NULL

  22. VF表的基本操作 表的建立 4 • 表结构的修改命令:P63 Modify structure • 表结构的显示:P62 List/Display Structure [to printer[prompt] ︱ to file<文件名>] • 表结构的复制:P69 Copy structure to <文件名> [fields<字段名表>]

  23. VF表的基本操作 记录指针与定位(66) 4 VF系统给表中每个记录提供一个记录号并自动设置一个指针,表打开时记录指针指向第一个记录

  24. VF表的基本操作 记录指针与定位 4 绝对定位与相对定位 • 相对定位:go <数值型表达式> go top go bottom • 在当前记录指针位置的基础上,将记录指针向前或向后移动N条(N为正数向后移动,N为负数向前移动)。 格式: SKIP N

  25. VF表的基本操作 记录指针与定位 4 表头、表尾定位 BOF Begin of file GO TOP EOF End of file GO BOTTOM

  26. 例: USE STUDENT GO 4 SKIP -2 SKIP 3

  27. VF表的基本操作 记录指针与定位 4 表中记录定位的相关函数

  28. VF表的基本操作 LIST/DISPLAY命令(62) 4 List /Display [Fields <字段名表>] [<范围>] [FOR <条件>][While<条件>] [To Printer[Prompt]][To File<文件名>] [OFF] 1、 [Fields <字段名表>] 举例:List/disp fiel 学号,姓名,籍贯 2、 [<范围>] [FOR <条件>][While<条件>] 举例:List for mod(recno(),2)=1 3、 [To Printer[Prompt]] 4、 [To File<文件名>] 5、[OFF] 说明:

  29. VF表的基本操作 LIST/DISPLAY命令 4 范围子句

  30. VF表的基本操作 LIST/DISPLAY命令 4 FOR子句 • FOR子句的<条件>为逻辑表达式,它指定选择记录的条件。FOR子句默认的搜索范围为全部记录。若命令中还含有范围子句,则在指定范围中筛选出符合条件的记录。 举例: LIST FOR !少数民族否 .AND. 性别=“男” LIST 姓名,性别,year(date())-year(出生日期),简历 for “湖”$籍贯

  31. VF表的基本操作 LIST/DISPLAY命令 4 WHILE子句 该子句也用于指明操作条件,但它仅在当前记录符合<条件>时开始依次筛选记录,一旦遇到不满足条件的记录时就停止操作。 LIST WHILE 性别=“男”

  32. VF表的基本操作 LIST/DISPLAY命令 4 注意: • LIST / DISPLAY命令兼有查询的功能 • 另有定位查询命令:LOCATE[范围]FOR<条件>︳WHILE<条件>(必须与DISPLAY命令结合使用) Use student Locate for !少数民族否 and 性别=“男” Disp 姓名,入学成绩, year(dae())-year(出生日期) Continue disp

  33. VF表的基本操作 表的修改 4 • 1)窗口浏览式修改命令(p64) • BROWSE [FIELDS<字段名表>][for<条件>] • 功能:浏览或编辑表文件中数据,在该窗口可 以进行修改数据、添加数据、删除数据等操作。 FIELDS<字段名表>可以指定字段进行显示或 修改数据。 • 举例: brow fiel 学号,姓名,入学成绩 for 性别=“女”

  34. VF表的基本操作 表的修改 4 2)数据的批量修改命令(p66) REPLACE <字段名1> WITH <表达式1> [ADDITIVE][ , <字段名2> WITH <表达式2> [ADDITIVE] … ] [ 范围 ] [ FOR︱while<条件> ] 功能:用表达式的值自动替换指定字段值 注意(1)范围或条件缺省,只替换当前记录 (2)[ADDITIVE]选项,表达式值添加到备注字段中已有数据的尾部,否则表达式值将覆盖字段的原有数据。

  35. VF表的基本操作 表的修改 4 举例:p66(例题4.3) • USE STUDENT • REPLACE 入学成绩 WITH 入学成绩+20 ; • for 少数民族否 • List • Go 6 • REPLACE 出生日期 with {^1983-09-07} • Disp

  36. VF表的基本操作 表的删除 4 表数据的删除及恢复 • 删除机制: • 逻辑删除:加删除标记(放入回收站) • 物理删除:将加删除标记的记录从表中真正清除(清空回收站) • 恢复:去删除标记(还原)

  37. (四)VF的表 表的删除 4 逻辑删除 格式:DELETE [ 范围 ] [ FOR ︱While<条件> ] 说明:若无范围或条件,只删除当前记录 恢复被逻辑删除的命令 格式:RECALL [ 范围 ] [ FOR︱while <条件> ] 物理删除 格式:PACK &&彻底删除被逻辑删除的记录 数据表清空 ZAP &&彻底删除所有记录(除表结构)

  38. VF表的基本操作 饭卡信息管理命令实例 4 • 查询余额: LIST 余额 FOR 卡号=“20060612” • 消费: REPLACE 余额 WITH 余额-3.2 • 加钱: REPLACE 余额 WITH 余额+50 • 开卡: APPEND BLANK REPLACE 卡号 WITH “20060612”,姓名 WITH “赵军” ,余额 WITH 100 • 销户: DELETE FOR 卡号=“20060612” PACK

  39. VF表的基本操作 表的复制 4 • 命令格式:P69 • Copy to< 文件名>[fields]<字段名表>[<范围>] • [for<条件>][while<条件>][[type]sdf︱delimited︱xls][with<定界符>︱blank] • 举例: • Use student • Copy to newb1 for 入学成绩>600 • Use newb1 • List

  40. VF表的基本操作 表的排序(p73) 4 排序是根据不同的字段对当前表的记录做出不同的排列,产生一个新表。 • Sort to < 文件名> on <字段1>[/a︱/d][/c] [,<字段2>[/a︱/d][/c] …][fields<字段名表>] [<范围>][for<条件>][while<条件>] 举例: Use student Sort on 入学成绩/d to cjb Use cjb List next 5

  41. VF表的基本操作 表的索引(p74) 4 索引并不是重新排列表记录的物理顺序,而是另外形成一个索引关键表达式与记录号之间的对照表(索引文件)。

  42. VF表的基本操作 表的索引 4 • 索引文件的种类: • 1)单索引文件:只能保存一个索引,单索引文件的扩展名为:.idx • 2)复合索引文件:可以存储多个索引,是一个压缩的索引文件,其扩展名为:.cdx ***有一类特殊的复合索引文件叫做结构复合索引文件,此类索引文件的文件名与相应的表文件名相同,扩展名为.cdx,无论何时打开表,该类索引文件由系统同时打开。所以对表的记录进行修改时,结构复合索引文件会进行自动更新!

  43. VF表的基本操作 表的索引 4 索引的类型: • 1)主索引:不允许在指定字段或表达式中出现重复值的索引,只有数据库表才能建立主索引而且每一个表只能建立一个主索引。 • 2)候选索引:也是不允许在指定字段或表达式中出现重复值的索引,数据库表和自由表都可以建立候选索引,并且一个表可以建立多个候选索引。 • 3)惟一索引:系统只在索引文件中保留第一次出现的索引关键字值,数据库表和自由表都可以建立惟一索引。 • 4)普通索引:允许索引关键字值重复出现,适合用来进行表中记录的排序和查询,数据库表和自由表都可以建立普通索引。

  44. VF表的基本操作 表的索引 4 Index on <索引表达式> To <单索引文件名>︱tag<索引标志名>[of<复合索引文件名>] [for<条件>][compact][ascending︱descending][unique][additive] • (1)索引表达式的操作数应具有相同的数据类型。 • (2)选择竖线左侧的to <单索引文件名>则产生单索引文 件,否则产生复合索引文件。 • (3)建立复合索引时,系统默认或选用ascending,按索引表达式的升序建立索引,选用descending按降序建立索引,单索引文件只能按升序索引。 • (4)选用unique,对于索引表达式相同的记录,只选第一个记录

  45. VF表的基本操作 表的索引 4 • 例题1:就学生表,显示入学成绩最高的5名学生的记录 • Use student • Index on –入学成绩 to sy • List next 5 • 例题2: • 1)按学号的升序排序,不允许有编号相同的记录 • 2)先按性别排序,性别相同再按入学成绩降序排序 • Use student • Index on 学号 tag sy1 unique • List • Index on 性别+str(1000-入学成绩) tag sy2 • List

  46. VF表的基本操作 表的索引 4 • 1、索引文件的打开: • Use<表文件名> index<索引文件名表> • Set index to [<索引文件名表>][additive] • 2、主控索引 • Set order to [<索引文件顺序号>︱<单索引文件名>] ︱[tag]<索引标志名> [of<复合索引文件名>] • 3、关闭索引文件 • Close index • Set index to

  47. VF表的基本操作 表的索引 4 • 4、删除索引 • Delete file <索引文件名> 删除单索引文件 • Delete tag all︱<索引标志名表> 删除复合索引文件 • 5、更新索引:Reindex [compact] • 6、索引定位查询:Seek<表达式> • 举例:就学生表查询1983年9月7日出生的学生的记录 Use student Index on 出生日期 tag sy4 D={^1983-09-07} Seek D Disp

  48. VF表的基本操作 VFP的命令格式 5 • 1)每条命令必须以命令动词开头,以回车键结束,若一行不能写完,可以用“;”标注,在下一行继续输入该命令。一条VFP的最大长度为8192个字符。 • 2)命令动词与子句、子句与子句、子句内的各部分之间必须用空格隔开。 • 3)命令动词与各子句中的保留字等都可简写为前4个字 符,而且不区分大小写。 • 4)命令格式中以“|”分隔的两项表示两者之中选其一; 用中括号“[ ]”括起来的部分表示可选项; 用尖括号“< >”括起来的部分表示不能省略的内容。 • 5)命令行中所出现的标点符号必须是英文状态的

  49. 实验作业 1.p55页:6 2.p55页:7 3.第四章重要例题

  50. 课件制作 参考书目: 谢谢 《数据库系统概论》 《数据库系统简明教程》 《数据库技术与应用》 我们见证: 计算机应用已进入菜鸟时代!

More Related