1、 第一课 VF 入门及自由表的操作一、表(.dbf)1.新建(1)文件菜单-新建-表-新建文件(或常用工具栏上的新建)(2)命令 create 表格名称(3)项目管理器-数据-自由表2.常用字段的类型的英文缩写 宽度及定界符字符型 C 宽度自定 ,“, 例: 姓名=“ 张三“数值型 N 宽度自定 无定界符日期型 D 8 个宽度 yyyy-mm-dd出生日期=1988-03-03逻辑型 L 1 个宽度 . . 例:.t.日期时间型 T整型 I备注型 M通用型 G货币型 Y3.向表中添加记录(1)追加显示菜单-追加方式命令 append blank(2)插入insert blankbefore4.
2、关闭当前表(1) 命令 use (2) 数据工作期窗口5.打开表(1) use 表名(2)数据工作期窗口(3)文件菜单-打开-文件类型选择表或常用工具栏-打开6.浏览当前表中记录(1)命令 browse for 条件 (2)显示-浏览7.显示表中记录(1)list for 条件fields 字段名(2)display for 条件fields 字段名;all8.查询定位(1)绝对定位go 记录号 或 goto 记录号go top 或 goto topgo bottom 或 goto bottom(2)相对定位skip 数值 数值可以是正数也可以是负数(3)查询locate for 条件cont
3、inue第二课 简单命令 及数据库 一1.进入当前表格的设计器(1)显示-表设计器(2)命令 modify structure 2.删除当前表中的记录(1)逻辑删除delete for 条件all可以恢复recall for 条件all(2)物理删除pack(3)清除表中的记录zap3.修改表中的记录replace 字段名 with 值 ;for 条件all二 数据库(.dbc)1.新建(1)文件-新建 -数据库-新建文件(2)命令 create database 数据库名(3)项目管理器- 数据-数据库2.进入当前数据库设计器(1)显示-数据库设计器(2)命令 modify database
4、3.关闭当前数据库命令 close database4.打开数据库(1)open database 数据库名(2)文件-打开 -文件类型-数据库 (独占)5.删除数据库delete database 数据库名6.设置为当前数据库set database to 数据库名7.向当前数据库添加表add table 自由表名8.从当前数据库移出表remove table 表格名称9.删除表(SQL 语句)drop table 表名10.新建表的 SQL 语句create table 表名(字段名 1 类型(宽度),;字段名 2 类型(宽度),)三 数据完整性-字段有效性 (域完整性)规则:是一个逻辑表
5、达式,返回逻辑真或逻辑假 信息:是一个字符串,要加上定界符 “ 默认值:是一个与本身字段值匹配的记录也要加上与本身类型相匹配的定界符四、工作区(1-32767)use 表 1 in 工作区号use 表 in 0选中工作区的命令select 工作区号select 表格名称select a-j 代表 1-10第三课 索引的建立应用及数据完整性一、索引逻辑上的排序作用:提高查询速度(但会降低更新速度)分类:简单索引(单一索引)和复合索引复合索引分为:结构复合索引和非结构复合索引1.简单索引 .idxindex on 索引表达式( 字段名) to 索引文件名只能按照升序排序,并且一个索引文件只能建立一
6、个索引打开简单索引 set index to 索引文件名2.复合索引 .cdx(1)非结构复合索引index on 索引表达式 tag 索引标识(索引名) ;of 索引文件名 desc|asce打开非结构复合索引 set index to 索引文件名指定其中的某个起作用 set order to 索引名(2)结构复合索引a.index on 索引表达式 tag 索引标识 ;desc|asce 随着表格的打开而打开关闭而关闭指定其中的某个起作用 set order to 索引名b.表设计器建立3.打开索引的命令(简单索引和非结构复合索引 )set index to 索引文件名4.指定当前索引起作
7、用(两种复合索引 )set order to 索引标识 5.表设计器建立结构复合索引(上机)6.复合索引的分类主索引 一个表中只能建立一个 不能有重复值或空值 只能用表设计器建立候选索引 多个 不能表设计器或命令动词 candidate唯一索引 多个 能表设计器或命令动词 unique普通索引 多个 能 表设计器或命令7.删除索引(1)在表设计器(2)delete tag 索引名 或 delete tag all 8.使用索引快速定位(查找 )seek 要查找的表中的记录 例如:seek “张三“要求要查找的记录所在的字段名称必须已经建立了索引并且是当前索引二、数据完整性分类:实体完整性 域完
8、整性 参照完整性1.实体完整性表中的主索引或候选索引所唯一标识的记录的唯一性就代表了实体完整性 2.域完整性包括字段的有效性规则 信息 和默认值3.参照完整性在数据库中的两个表格之间,从一个表的公共字段的主索引名拖向另一个表的公共字段的普通索引名就建立了两个表格之间的永久性连接,把数据工作期窗口中的所有表格关闭选择数据库菜单下的清理数据库,然后编辑参照完整性三、临时性连接(指针的联动 )set relation to 索引名 into 子表表名注意:子表一定要有公共字段的索引 ,不能是当前工作区的表use 表 1 order 索引名alias 别名四、排序sort to 新表名 on 关键字
9、/a|/d|/c第四课 常量 变量 一、常量1.分类数值型 字符型 货币型 日期型 日期时间型 逻辑型显示:? 先换行再输出 ? 不换行直接输出2.数值型 N12 1.56 -56.4 3.45E12 6.78E-103.字符型 C“学习“ 数据 计算机 4.货币型 Y$20 默认 4 位小数5.日期型 D(1)传统日期格式 mm/dd/yy(2)严格日期格式 yyyy-mm-dd(3)影响日期格式显示的命令set date to ymd|dmy|mdyset century on|off on 四位 off 默认两位set mark to “间隔符“ “.“ “-“ “/“set stric
10、tdate to 0|1|2set century to 世纪值 rollover 年份参照值set century to 19 rollover 50?09/02/04 6.日期时间型 T日期,时间yyyy-mm-dd,hh:mm:ss|p|a 7.逻辑型 L逻辑真 .t. .T. .y. .Y.逻辑假 .f. .F. .n. .N.二、变量1.分类内存变量 和 字段变量2.内存变量分类简单的内存变量和数组(1)简单的内存变量内存变量名=值或表达式 x=10store 值或表达式 to 内存变量名表store 10+20 to x,y,z,a,b?字段变量和内存变量重名并且同时存在时,字段变
11、量优先,如果要显示内存变量,可以在内存变量名前加m. 或 m- (memory)例如:m.姓名 或 m-姓名(2)数组(array ) A分类:一维数组 和 二维数组dimension 数组名(下标 1,下标 2)declare 数组名(下标 1,下标 2)(3)显示内存变量的值list memory like 通配符 display memory like 通配符通配符 有 ? 和 *代表任意一个字符 *代表任意多个符号使用数组元素时注意:P53(4)清除内存变量clear memory release allrelease 内存变量release all like 通配符|except 通
12、配符(5)表中数据与数组数据之间的交换将表中的当前记录复制到数组中scatter to 数组名把数组数据复制到当前表的当前记录gather from 数组名第五课 表达式 函数一、表达式 1.分类:数值表达式 字符表达式 日期时间表达式关系表达式 逻辑表达式2.数值表达式运算符:( ) |* * / % + -23 2*3被除数%除数求余运算符%和求余数的函数 mod()作用一样,最终的余数符号与除数一致,如果被除数与除数符号一致,则结果直接为两数余数,如果符号不一致,则先算出的余数与被除数符号一致再加上除数 3.字符表达式运算符: + -4.日期时间表达式运算符: + -5.关系表达式运算符
13、: = |#|!= = $ = 受命令 set exact off|on 命令的影响默认 off 状态下 指等号右侧的字符是否原样出现在等号左面字符的前面,如果出现则为.t.否则 .f.on 状态下 相当于等长比较,先比较两边字符串的长度是否相同,如果相同,则依次比较大小,否则先在较短的字符的末尾添加空格,直到两个字符的长度相同再依次比较字符型的大小默认 空格字符串和日期时间关系逻辑表达式 二、函数1.分类数值函数 字符处理函数 日期类函数 数据类型转换函数 测试函数2.格式: 函数名()3.数值函数4.字符函数5.日期和时间函数 第六课 部分函数及程序设计基础一、函数6.数据类型转换函数 7
14、.测试函数二、程序(.prg)程序是能够完成一定的任务的命令的有序集合1.新建(1)文件菜单-新建-程序-新建文件(2)命令 modify command ;程序文件名(3)项目管理器-代码-程序2.程序必须保存并且运行选择文件菜单下的保存或常用工具栏上的保存按钮,然后运行运行方法:(1)在程序文件打开的情况下,选择菜单 程序-运行-选择要运行的程序(2)命令 do 程序文件名.prg(3)常用工具栏上的叹号“!“3.程序的注释语句功能性注释:在程序的任意位置用 timeout 秒数 四、程序的基本结构分为 顺序结构 选择结构 循环结构除了选择结构和循环结构在程序中的所有命令都是一句一句执行的
15、称为顺序结构1.选择结构(1)条件语句if 条件 语句序列 else语句序列 endif 第七课 程序的结构和模块程序一、选择结构(2)分支语句do case case 条件 1语句序列 1case 条件 2语句序列 2case 条件 n语句序列 notherwise语句序列endcase 二、循环结构1.do -while 循环格式:do while 条件循环体enddo 一定要有使条件趋向于结束的语句存在在循环结构的循环体中可能出现loop :返回到条件处判断条件是否还成立,如果成立继续执行,不成立退出exit :无条件退出循环体 2.for-endfor 结构格式:for x=1 to
16、10 step 1循环体endfor 3.scan-endscan 结构此循环结构必须跟表中记录结合格式:scan for 条件while 条件范围循环体endscan范围包括: allnext nrestrecord n 记录号 三、多模块程序1.模块及其定义procedure|function gc命令序列return 表达式 endproc|endfunc2.模块文件的打开set procedure to 过程文件名3.模块调用(1)do 文件名|gc(2)文件名| 过程名() 函数调用方式4.参数传递parameters 形参 1,形参 2lparameters 形参 1,形参 25.
17、调用带参数的模块(1)do 文件名| 过程名 with 实参 1,实参 2(2)文件名| 过程名(实参 1,实参 2)6.set udfparms to value 按值传递set udfparms to reference 按引用传递 第八课 多模块程序及 SQL 语句一、多模块程序1.变量的作用域分类:全局变量(公共变量 ) 私有变量局部变量(1)全局变量用 public 变量名定义,可以在整个程序中起作用(2)局部变量用 local 变量名定义,只能在定义他的本身起作用,系统自动释放(3)私有变量xy=33除了用 public 和 local 定义的变量,都叫做私有变量,只能在定义他的本
18、身和下级子程序中使用,系统自动释放(4) private 隐藏程序中同名的变量,使其暂时不起作用二、SQL 语句关系数据库标准语言 SQLSQL 的核心是 “查询“1.查询的格式select - from - where select:后跟要查询的字段名,多个字段之间用“,“间隔from:后跟 select 语句中要查询的字段和where 条件里用到的字段所在的表格的名称,多个表之间用“,“间隔where:跟查询的条件2.简单查询select -from -where 在 select 语句里 “*“ 代表 from 之后表格中的所有字段对查询结果去掉重复值,在 select 之后用disti
19、nct3.简单连接查询select - from 表 1,表 2 where;表 1.公共字段=表 2.公共字段 and 条件4.嵌套查询select - from 表 1 where 公共字段 in;|not in (select 公共字段 from 表 2 ;where 条件) 第九课 SQL 语句一、几个特殊的运算符1.between and 2.like 通配符 % 任意多个字符_ 任意一个字符二、排序order by 字段 1desc|asc,字段 2 select -from-where order by 三、简单的计算查询count() 计数sum() 求和值avg() 求平均m
20、ax() 最大值min() 最小值这五个函数都只能用在 select 后的字段名上,或分组中的 having 短语里,不能直接出现在 where 条件中 四、分组与计算查询group by 字段名 having 分组条件 select-from-where group by having;order by 在做 SQL 题时,如果题目上有“每个“ 的字眼,基本上可以考虑用分组五、利用空值查询is null is not null六、别名在 SQL 语句中可以对字段和表起别名格式:字段名 空格 别名字段名 as 别名起好的字段别名只能用在 order by 短语里七、使用量词和谓词查询量词: a
21、ny some all谓词: exists 或 not existsselect -from 表 1 where exists;(select * from 表 2 where 表 1.公共字段;=表 2.公共字段)select - from 表 1 where 公共字段 in;|not in (select 公共字段 from 表 2 ;where 条件) 八、了解超连接查询join on 短语九、集合的并运算union第十课 SQL 语句一、 select 的几个特殊选项 (查询去向)1.只显示前几项记录select * top n percent from 表 ;order by 此格式
22、 top n必须和 order by 连用2.将查询结果存放到数组into array 数组名select-from-where-group by -order by ;into array 3.将查询结果存放到永久表into table|dbf 表名4.将查询结果存放到临时表into cursor 临时表名5.将查询结果存放到文本文件to file 文件名6.将查询结果输出到打印机to printer二、 SQL 语句的操作功能1.插入(1)insert into 表名 values(要插入表中各记录的值,用逗号间隔,加定界符)(2)insert into 表名 (字段 1,字段 n);va
23、lues(字段的值)(3)insert into 表名 from array 数组名把数组中的值全部插入到了指定表格的末尾 2.更新update 表名 set 字段名 =要修改的值 wherereplace 字段名 with 值 for 3.删除(逻辑删除)delete from 表名 where 条件如果不加 where 条件,默认删除表中所有的三、定义表格命令create table 表名()四、表结构(表设计器)的修改(SQL)1.alter table 表名 alter 字段名 类型(宽度)2.alter table 表名 add column;字段名 类型(宽度)3.alter ta
24、ble 表名 drop column 字段名4.alter table 表名 rename 原字段名 to ;新字段名5.alter table 表名 alter 字段名 set ;check 规则 error 信息6.alter table 表名 alter 字段名 set ;default 默认值7.alter table 表名 add 字段名 类型( 宽度);check 规则error 信息 default 默认值8.alter table 表名 alter 字段名 null|;not null9.alter table 表名 add unique 表达式;tag 索引名index on
25、 表达式 tag 索引名 candidate 第十一课 查询与视图一、查询(.qpr) 1.新建(1)文件-新建 -查询-新建文件 (或常用工具栏)(2)命令 create query 查询文件名(3)项目管理器-数据-查询2.做完查询文件,必须要保存并且运行运行方法:(1)在查询设计器打开的情况下单击“!“(2)程序菜单-运行-选择 要运行的查询文件名(3)命令 do 查询文件名.qpr3.查询设计器中各选项卡与 select 语句的对应(1)字段选项卡- select (2)联接选项卡- join on (3)筛选选项卡- where (4)排序依据 - order by (5)分组依据
26、- group by (6)杂项 - * top n 和 distinct查询设计器并不能完成所有的 SQL 语句查询,有些查询做不了(比如嵌套)二、视图(.vue)视图是一个相当于表格的文件,可以跟表一样使用,但建立和打开的时候都必须依附于数据库操作,只要有数据库并且是当前状态就可以新建视图1.分类:本地视图和远程视图2.新建(1)文件-新建 -视图(2)项目管理器中-数据-某个数据库-视图(3)SQL 命令 create view 视图名 as select -from-做完视图文件只要保存就可以,不需要运行 三、表单的初步认识1.新建(.scx .sct)(1)文件-新建 -表单(2)命
27、令 create form 表单文件名(3)项目管理器-文档-表单(4)表单向导 - 表单向导- 一对多表单向导2.表单需要保存并运行运行方法(1)在表单设计器打开的情况下选择“!“(2)命令 do form 表单文件名.scx3.表单工具栏的使用第十二课 表单的使用和 标签 命令按钮一、常用事件与方法1.事件load init destroy unload gotfocus click dblclick rightclickinteractivechange error2.方法show hide release refresh setfocus二、对象属性及方法的调用1. 对象.方法例如:
28、thisform.release2.对象.属性例如: thisform.caption=“你好“mand1.caption=“你也好“三、容器层次中的对象引用属性或关键字thisform: 当前的表单this:当前的对象parent:当前对象的直接容器对象thisformset:当前对象所在的表单集四、为表单新建属性和方法五、标签(label) name 属性常用属性:caption:标签的标题文本alignment:指定标签文本的对齐方式六、命令按钮(command) 1.default 和 cancel (了解 )2.enabled :指定该按钮能用还是不能用3.visible :指定该按
29、钮是可见还是隐藏第十三课 文本框 编辑框 复选框 列表框一、文本框(text) 1.controlsource 指定该控件的数据源 一个变量或表中的某个字段2.value x=alltrim(thisform.text1.value)为文本框指定的初始值或运行时得到的值默认字符型3.passwordchar指定文本框内是显示用户输入的字符还是占位符(相当于密码)4.inputmask指定在一个文本框内是如何显示和输入数据x 9 #二、编辑框(edit)1.hideselection 指定当控件失去焦点时,选定的文本是否还为选定状态2.readonly指定该控件是否只读3.scrollbars
30、指定编辑框是否具有垂直滚动条4.selstart 指定编辑框中选定文本的起始点或插入点的位置5.sellength指定编辑框中选定文本的长度6.seltext 指定编辑框中选定的文本(是一个字符串)三、复选框(check) 1.caption 指定复选框的标题(右侧的文本 )2.controlsource(了解)指定复选框的数据源3.value指定复选框的状态 -选中 还是未选中默认 数值型 可以设置为 逻辑型四、列表框(list)1.rowsourcetype 和 rowsource指定控件的数据源的类型和数据源共 0-9 十种2.columncount 指定列表框的列数3.controls
31、ource 了解4.value 返回列表框中被选中的条目5.multiselect指定用户能否在列表框中进行多重选定6.list用以存取列表框中数据条目的字符串的数组例如: thisform.list1.list(3,1)7.listcount 列表框中数据条目的数目8.selected 指定列表框中的某个条目是否处于选定状态例如: thisform.list1.selected(3)第十四课 组合框 命令组 选项组 计时器一、组合框(combo)1.style 指定组合框的类型:默认 0-下拉组合框2-下拉列表框2.组合框的其他属性都跟列表框相同但除了 multiselect (可多选) 二
32、、命令组(commandgroup)1.buttoncount 指定命令组中命令按钮的数目2.buttons 用于存取命令组命令按钮的数组mandgroup1.buttons(2).caption=“mand2.caption=“3.value 指定命令组当前的状态(第几个被选中)默认数值型 可以修改为字符型mandgroup1.value三、选项按钮组(optiongroup)1.buttoncount指定选项组的按钮的数目2.buttons指定选项组中每个按钮的数组thisform.optiongroup1.buttons(1).caption=“thisform.optiongroup1
33、.option1.caption=“3.controlsource (了解)指定选项组的数据源4.value初始化或返回运行时被选中的选项按钮默认是数值型 也可以是字符型四、计时器(timer1)interval :指定每间隔多少毫秒执行一次计时器(timer1)的 timer 事件第十五课 表格 页框 微调控件 类一、表格(grid)1.表格设计基本操作2.常用属性(1)recordsourcetype 和 recordsource指定表格控件的数据源和数据源的类型(2)columncount指定表格的列数(3)childorder 指定子表的索引名(4)linkmaster 指定子表的父表
34、名称2.页框 (pageframe)(1)pagecount 指定页框所包含的页(page)对象的数量(2)pages用于存取页框中某个页对象的数组thisform.pageframe1.page1.caption=“thisform.pageframe1.pages(1).caption=“(3)tabs指定页框中是否显示页面标签栏(4)tabstretch如果页面标题文本太长,是否显示多重行(5)activepage指定页框中活动页的页号三、微调控件 (spinner)1.spinnerhighvalue 最大值2.spinnerlowvalue 最小值3.value 默认值或运行时得到的
35、值4.increment 增量四、类(.vcx)1.新建(1)文件-新建 -类-新建文件(2)命令 create class(3)项目管理器-类-新建第十六课 菜单一、分类 下拉式菜单 和 快捷菜单二、新建(.mnx)1.文件-新建-菜单- 新建文件2.命令 create menu 菜单文件名3.项目管理器-其他-菜单三、菜单必须保存并生成,然后运行运行方法:1.选择程序菜单-运行-找到菜单文件名.mpr2.命令 do 菜单文件名.mpr四、1.返回系统菜单(关闭自己的菜单)set sysmenu to default 或 以下两句连用set sysmenu nosaveset sysmenu
36、 to default 2.访问键或热键在菜单名后直接用一对小扩号设置 例如: 文件(F)3.快捷键在该菜单的选项上单击 在快捷方式里直接按下要设置的键4.间隔线在子菜单中用 - 五、表单调用顶层菜单1.设计一个顶层菜单,设计完成后选择显示下的常规选项-顶层表单,保存并生成 (不用运行)2.打开或新建表单,修改表单的属性 showwindow - 2-作为顶层表单3.在表单的 load 或 init 代码中编写调用菜单的命令: do 菜单文件名.mpr with this4.根据题目要求可以在表单的 destroy 代码中释放菜单: release menu 菜单文件名六、表单调用快捷菜单1.
37、设计快捷菜单,保存并生成(如果题目有要求,清理菜单,则在菜单设计器打开的情况下选择 显示-常规选项内的 清理,编写如下代码: release popups 菜单文件名)2.打开或新建表单,在表单的 rightclick 代码中编写调用快捷菜单的命令do 快捷菜单文件名.mpr第十七课 报表 连编程序 VF 基础一、报表(.frx)1.布局分类(1)行报表 (2)列报表 (3)多栏报表(4)一对多报表2.新建(1)文件-新建 -报表-新建文件(2)命令 create report 报表文件名(3)项目管理器-文档-报表-新建(4)向导-报表向导 和 一对多报表向导(5)快速报表 3.报表可以在编
38、辑的同时进行预览(1)显示-预览(2)常用工具栏-预览(3)命令 report form 报表文件名 preview4.报表中的带区及其作用(1)标题: 在每个报表的开头打印一次(2)页标头: 在报表的每一页的开头打印一次(3)细节:为每条记录打印一次(4)页注脚: 在报表的每一页的末尾打印一次(5)总结:在每个报表的最后打印一次(6)组标头: 有数据分组时每组的开头打印一次(7)组注脚: 有数据分组时每组的末尾打印一次(8)列表头: 在分栏报表中每列的开头打印一次(9)列注脚: 在分栏报表中每列的末尾打印一次二、连编程序build app 应用程序文件名 from 项目名build exe 可执行文件名 from 项目名1