1 / 210

第 6 章 VFP6 应用程序设计结构

第 6 章 VFP6 应用程序设计结构. 数据类型和字段类型. 1. 字符型 (Character) 必须用西文方式的单或双引号括起。 LOCATE FOR 雇员 . 职务 =‘ 总经理’ 学号、书号、电话号码、邮政编码 ( 注意不宜用数值型 ) 2. 货币型 (Currency) cPrice=$100.356. 数据类型和字段类型. 3. 日期型 (Date) birthday={05/20/1980} Dblankdate={} 日期格式受 SET DATE 、 SET MARK 、 SET CENTURY 命令的影响

lamar
Download Presentation

第 6 章 VFP6 应用程序设计结构

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. 第6章 VFP6应用程序设计结构

  2. 数据类型和字段类型 1. 字符型(Character) • 必须用西文方式的单或双引号括起。 • LOCATE FOR 雇员.职务=‘总经理’ • 学号、书号、电话号码、邮政编码(注意不宜用数值型) 2. 货币型(Currency) • cPrice=$100.356

  3. 数据类型和字段类型 3. 日期型(Date) • birthday={05/20/1980} • Dblankdate={} • 日期格式受SET DATE、SET MARK、SET CENTURY命令的影响 • 工具/选项/区域 4. 日期时间型(DateTime) • tdatetime={4/17/ 2000 8:30pm} • Tdateonly={4/17/ 2000 } • Ttimeonly={8:30pm} • Tblankdate= {:} • 时间格式受SET HOURS、SET SECONDS命令的影响

  4. 数据类型和字段类型 5. 数值型(Numeric) • STORE 3.14159 TO pi • temp=100.12 6. 逻辑型(Logical) • STORE .T. TO found • Flag=.F. 7. 通用型(General) • 用于在表中存储OLE(对象链接与嵌入)对象

  5. 常量 常量:其值不发生变化的量 (1)常量分为四种类型: 数值型(N):直接由数字或+、-、小数点构成。 字符型(C):由字符、汉字组成,需加定界符。如’沈阳’、”沈阳”、 [沈阳],同一定界符不能嵌套,如:“AB”CD””,但 ‘AB”CD”’是合法的。 日期型(D):用{}定界。 如{00-08-30} 或CTOD(“01/08/30”) 逻辑型(L):用.定界。如.t.、.f.,.Y.,.N.等 说明:请注意C、D、L型常量的定界符。注意区分”2010”为字符型常量,而不是数值型常量。逻辑型常量必须用“.”定界。注意各类型数据的宽度。

  6. 常量 • 编译时常量 • 用 #DEFINE预处理命令定义 • 如:#DEFINE OPER “输入的数据非法!” #DEFINE pi 3.1415926 • 不能另作它用

  7. 变量 变量: • 程序运行中,值可能会发生变化的量 • 变量是内存中的一个存储单元的位置 • 变量名是存储位置的符号标识 • 存储位置中存放的数据在程序操作期间通过该名称来读写

  8. 变量分类: • 字段名变量 • 数据表中已定义的数据项 • 每一个字段可有不同的取值 • 表有一个记录指针,它指向的记录定义为当前记录,字段名变量的现值,就是当前记录中对应字段的值。 • 记录指针是可以移动的,因此,字段名的取值随着指针的移动而改变,所以它是变量 • 内存变量 • 独立于数据库之外的

  9. 变量的创建 • 赋值格式: • Store 表达式 to 变量 • 变量=表达式 • 在赋值的同时,完成了变量的创建STORE 3 TO nVar nVar = 3

  10. 访问变量 • 如字段变量和内存变量同名: • 则字段变量具有更高的优先权 • 此时内存变量访问 • M.内存变量 • M->内存变量

  11. 变量作用域 局部变量: • 用LOCAL指定局部变量 • 创建它的文件中使用与修改 • 不能在更高层与低层中引用 私有变量: • 子程序中使用 • 用PRIVATE指定私有变量(可以与上层同名 ) 全局变量: • 用PUBLIC指定全局变量(公共 ) • 任何运行的程序都能使用和修改 • 在命令窗口中创建的任何变量或数组被自动赋予全局属性

  12. public m • Local n • . • . • . • m =3 • n=4 • do sub • . • . • . Procedure sub Private m ? m ? n

  13. 字段名变量 • 数据表中已定义的数据项 • 每一个字段可有不同的取值 • 表有一个记录指针,它指向的记录定义为当前记录,字段名变量的现值,就是当前记录中对应字段的值。 • 记录指针是可以移动的,因此,字段名的取值随着指针的移动而改变,所以它是变量 • 当前记录:记录指针指向的记录 • **表刚打开,当前记录是第一条记录 • 移动记录指针: • GO TOP|BOTTOM|[<数值表达式>]:绝对移动记录指针。 • SKIP [<数值表达式>]:相对移动记录指针

  14. 移动记录指针 说明: ▲注意区别命令GO TOP和GO 1,在索引文件打开时,前者把记录指针移到数据库的第一条逻辑记录,而后者为把记录指针移到记录号为1的物理记录上 ▲若库中有记录,执行G0 TOP和GO BOTTOM后,函数BOF()和EOF()的值均为·F·。使BOF()为真,SKIP-1;使EOF()为真SKIP ▲若库中无记录,函数BOF()和EOF()的值均为.T.。 ▲SKIP命令无任何选项时,表示向下移动一条记录,多用在对数据库中所有记录逐一处理的循环结构中,在程序填空中经常出现。

  15. 编号 姓名 • 101 张三 • 102 王一 • 103 刘六 • 104 李四 • 105 赵七 • 朱八 2 表一 移动记录指针实例 • Go 1 • Skip 2 • ? 编号 • skip • Go bottom • ? 编号 • Skip –1 • ? 编号

  16. 内存变量 • 变量名: • 是以汉字、字母、数字或下划线组成的字符串,串长最多为10个字符或5个汉字 • 变量名必须以字母或汉字开头,下划线必须嵌在变量名中间,但不能嵌入空格符 • 内存变量分为四种类型: • 数值型、字符型、逻辑型和日期型 • 变量赋值格式: • 〈内存变量〉=〈表达式〉 • STORE 〈表达式〉=〈内存变量表〉 功能:把〈表达式〉的值送到内存变量中 • 例如: • A=20 • B=100

  17. 数组: • 名字相同、用下标区分的内存变量称为数组 • 主要有以下特点: • (1)数组元素的类型,由所赋的值来决定 • (2)数组变量可以不带下标使用 • 在赋值语句的右边,表示该数组第一个元素 • 在赋值语句的左边,表示该数组所有元素 • (3)数组和数据表之间可相互转换 • 即数据表中数据可以转换为数组数据 • 数组数据也可以转换为数据表中的数据

  18. 1.定义数组 • 数组名的取法和一般的变量名取法相同 • 定义数组命令: DIMENSION 数组名〉(<数值表达式1>[,<数值表达式2>]) [,<数组名>(<数值表达式1>…] • 命令功能:定义一个或多个内存变量数组。 • 说明: • 最多可有3600个元素,显示内存时只算一个变量 • 数组下标起始值是1 • 数组元素隐含的逻辑值为“假” **二维数组,可用一维下标来存取。这是由于在内存中,二维数组元素是按行列次序排列 • 它们每个元素都可看作单独一个内存变量使用,

  19. DIMENSION b(2,3) ? A4 ? A(2,1) ? A6 ? A(2,3) A(1,1) A(1,2) A(1,3) 12 3 A(2,1) A(2,2) A(2,3) 4 5 6 数组实例

  20. 变量: • 专用 • 在程序中用DIMENSION建立的数组为专用 • 公用 • 命令窗口下建立的数组为公用 • 在程序中建立公用的数组用PUBLIC命令 • 格式为: PUBLIC〈数组名〉(<N表达式1>,[<N表达式2>]) • 例如: DIMENSIOM A(4),B(2,3) • 建立一维数组A和二维数组B • 二维数组有六个元素: • 分别为 • B(1,1)、B(1,2)、B(1,3) • B(2,1)、B(2,2)、B(2,3)

  21. 数组的赋值 • 格式: • STORE 〈表达式〉 TO 〈数组名〉 〈数组名〉=〈表达式〉 • 命令功能: • 将表达式的值赋给数组变量 • 上述两个命令是完全等价的 • 给数组赋值还可用ACCEPT、INPUT、WAIT语句

  22. 数组变量的显示 • 命令格式: LIST/DISPLAY MEMORY • 命令功能: • 显示内存变量(数组变量) • 可以用RELEASE和CLEAR MEMORY命令删除掉已定义的数组(整个数组) • 可以用SAVE命令同内存变量一起保存到磁盘内存文件(.MEM)中,需要时用RESTORE命令同内存变量一起从磁盘文件中恢复

  23. 表达式 • 表达式: • 是由常数、变量、函数和运算符组成的一个有物理意义的式子 • 表达式总有一定的运算结果,即有一个值,所以表达式也是一种数据 • 表达式分为(表达式结果): • 数值表达式 • 字符表达式 • 关系表达式 • 逻辑表达式

  24. 表达式的输出命令: • 格式: • ?[[?]<表达式>,[<表达式>]] • 功能: • 计算表达式的值,并在屏幕或打印机上输出 • 例如: • ? 4*6+10 • 34

  25. 1.数值表达式 • 数值表达式: • 是由算术运算符和数值型常数、变量、函数组成。 • 运算结果为数值型数据。 • 算术运算符为:+ - * / ^ ( ) • 优先次序: • 括号、函数、乘方、乘除和加减,同级运算从左到右依次进行 • 如: • 3+6/2-EXP(8) LOG(20) 2^5

  26. 2.字符表达式 • 字符表达式: • 是由字符运算符和字符型常数(即用定界符括起来的字符串)、变量、函数组成 • 运算结果是字符型数据 • 三种字符串运算: *完全连接运算 • 格式:"〈字符串1〉"+"〈字符串2〉" • 功能:将两个字符串连接为一个字符串。 • 例如: ? "THIS IS "+"A PEN" THIS IS A PEN *完全连接是指两个字符串合并,即包括空格在内的字符串中所有字符相加。

  27. 不完全连接运算 • 格式:"〈字符串1〉"-"〈字符串2〉" • 功能: • 也是将两个字符串连接为一个字符串,但是删去字符串1尾部的空格符 • 例如: • ? “首都∶***"-"北京" • 首都:北京*** • 注:串1尾部的空格移到串1后

  28. 包含运算 • 格式: • 〈串1〉$〈串2〉 • 功能: • 如串1包含在串2中,表达式的值为真,否则为假 • 例如: • "AB"$"ACBTE"结果为假(.F.) • "AB"$"ABCDE"结果为真(.T.) • 注: • 包含运算是字符串的关系运算 • 关系运算返回的是逻辑值

  29. 3.关系表达式 • 关系表达式: • 是由关系运算符与字符表达式或数值表达式组成 • 结果是一个逻辑值 • 关系成立结果取真(.T.),不成立结果取假(.F.) • 关系运算符两边的数据类型要一致,(同类型) • 关系运算符有6种: <=,<,=, >=,>, <>、#或!= • 注: • 字符的比较是ASCII码值的大小 • 空格<0-9<A-Z<a-z • 汉字是按机内码值比较的(拼音) • 例: • ? 123>100 • ? "CH"<"CA"

  30. 4.逻辑表达式 • 逻辑表达式: • 是由逻辑常数、变量和函数用逻辑运算符连接而成 • 条件判断满足结果为真(.T.),否则结果为假(.F.) • 逻辑运算符有三种: .AND. 逻辑与(且)(两都成立才为真) .OR. 逻辑或(只要有一个成立为真) .NOT.或! 逻辑非 ***逻辑运算符的优先级别为:.NOT. .AND. .OR.

  31. A B .AND. .OR . .NOT.A 1 1 1 1 0 1 0 0 1 0 0 1 0 1 1 0 0 0 0 1 A B .AND. .OR . .NOT.A T T T F F T F F .And. .OR.

  32. 运算符的优先顺序 • 表达式中运算符的优先顺序: • 由高到低依次为:算术或字符或日期运算→关系运算→逻辑运算 • 相同优先级的运算按从左到右的顺序计算 例如: • 性别="男".AND.职称="副教授" • ? (10+3)>5.and.”ab”$”abcde”

  33. 表达式例: 算术表达式:结果为数值型。如3+2 字符表达式:结果为字符型。如 ’Good ’+’Morning’ 或’Good ’-’Morning’ 日期表达式:结果为日期或数值。如DATE()+5 、DATE()-5 或DATE()-{00-08-20} 关系表达式:结果为逻辑型。如”AB”$”ABCD”、”AB”<”BC” 逻辑表达式:结果为逻辑型。如3>2 .AND. .NOT.5>6 说明: ▲在日期型表达式中,两个日期表达式相减,结果为数值,表示两日期之间相差的天数,两日期表达式相加,属非法表达式;一个日期表达式与一个数值表达式相加,结果为日期型表达式,表示从当前日期往后数N天;一个日期表达式与一数值表达式相减,表示从当前日期向前数N天。 ▲逻辑表达式包含关系表达式,关系表达式中包含算术表达式。注意,关系表达式与逻辑表达式的结果都为逻辑型。

  34. 命令格式 • 由两部分组成 • 命令动词,表示应执行的操作 • 若干个短语,对操作提供某些限制性说明。 • 一般格式如下: 命令动词 短语 • 如:copy to aa for 性别=“男”

  35. 与表有关的命令 • 与表有关的命令格式: • 命令动词 [范围] FOR<条件> [FIELDS <字段名表>] • 命令中的FOR、FIELDS是关键字,用户不得随意更改。 • 约定: [ ]表示可选项,不选用系统的默认值 < >表示必选项 <范围>:表示对表记录操作的范围 • ALL 表示全体记录 • NEXT N 当前记录开始后续共计 N 个记录 • RECORD N 特指第 N 号记录。 • REST 从当前记录开始到表尾的所有记录 FOR〈条件〉 选择操作 FIELDS <字段名表> 投影操作

  36. 编号 姓名 • 101 张三 • 102 王一 • 103 刘六 • 104 李四 • 105 赵七 • 朱八 表一 Go 1 List for 编号>‘101’.and.编号<“105” Go 1 List fields 姓名 选择操作 投影操作 操作释例 • Go 3 • Disp all • Go 2 • Disp next 2 • Go 3 • Disp rest • Go 3 • Disp record 5

  37. 命令书写的规则 • 命令以命令动词,与动词短语的顺序无关 • 用空格来分隔各单词短语 • 命令的最长是254个字符,用分行符;分行 • 命令动词和关键字可以缩写为前四个字符 • 如MODIFY STRUCTURE可写为MODI STRU • 不分大小写,可以混合使用 • 变量名、字段名和文件名时,应避免与命令动词和关键字同名,以免运行时发生混乱

  38. End

  39. 6.2 数据库的操作命令 • 常用的操作命令 • 包括 • 数据库的建立 • 打开 • 设置 • 关闭 • 删除

  40. 1.创建数据库 • CREATE DATABASE 命令 • 命令格式: • CREATE DATABASE [〈数据库名〉|?] • 命令功能:用于创建一个数据库

  41. 说明: (1)数据库名已经存在,则提示新的路径或文件名 (2)参数“?”或无参数,弹出对话框,位置及名称 (3)数据库以.DBC为其扩展名,以.DCT为备注文件,索引文件则以.DCX为扩展名 (4)该命令以独占方式创建并打开一个数据库 例如:创建一个名为t1.dbc的数据库,并显示有关数据库的信息 • CREATE DATABASE t1 &&创建数据库t1 • CLEAR &&清除屏幕 • DISPLAY DATABASE &&显示数据库t1信息

  42. 2.打开数据库 • 用OPEN DATABASE命令打开已经存在的数据库 • 命令格式: • OPEN DATABASE [〈数据库名〉|?] • 命令功能: • 打开一个指定的数据库。 • 说明:

  43. 6.2 数据库的操作命令 • 常用的操作命令 • 包括 • 数据库的建立 • 打开 • 设置 • 关闭 • 删除

  44. 1.创建数据库 • CREATE DATABASE 命令 • 命令格式: • CREATE DATABASE [〈数据库名〉|?] • 命令功能:用于创建一个数据库

  45. 说明: (1)数据库名已经存在,则提示新的路径或文件名 (2)参数“?”或无参数,弹出对话框,位置及名称 (3)数据库以.DBC为其扩展名,以.DCT为备注文件,索引文件则以.DCX为扩展名 例如:创建一个名为t1.dbc的数据库,并显示有关数据库的信息 • CREATE DATABASE t1 &&创建数据库t1 • CLEAR &&清除屏幕 • DISPLAY DATABASE &&显示数据库t1信息

  46. 2.打开数据库 • 用OPEN DATABASE命令打开已经存在的数据库 • 命令格式: • OPEN DATABASE [〈数据库名〉|?] • 命令功能: • 打开一个指定的数据库。

  47. 3.设置当前数据库 • SET DATABASE TO命令 • 命令格式: • SET DATABASE TO [〈数据库名〉] • 命令功能: • 设置当前数据库。

  48. 说明: (1)〈数据库名〉为当前要打开的数据库名称 (2)略名,弹出一个‘显库’对话框 例如: • OPEN DATABASE t1 库t1.dbc • OPEN DATABASE t2 库t2.dbc • DISPLAY DATABASE 显示当库t2.dbc的信息 • SET DATABASE TO t1 置t1为当前库 • DILPLAY DATABASE 显示当库t1的信息 • SET DATABASE TO t2 设t2为当库 • DISPLAY DATABASE 显库t2.dbc的信息

  49. 4.关闭数据库 命令格式: • CLOSE DATABASE [ALL] • 命令功能: • 关闭数据库。 • 说明: • ALL用于关闭所有打开的数据库 • 如果没有指定此参数,则将关闭当前数据库

  50. 5.删除数据库 • 命令格式: • DELETE DATABASE 〈数据库名〉|? [DELETETABLES][RECYCLE] • 命令功能: • 删除数据库

More Related