11.工具、选项 12.区域 13.文件位置 14..PJX 15.数据 三、操作题
SET DEFAULT TO C:\\ &&设置默认路径到 C:\\
CREATE PROJECT XSGL 或 MODIFY PROJECT XSGL &&创建项目文件 也可:文件
→新建→项目→新建文件→选择 C 盘根目录并输入项目文件名 XSGL.pjx→保存
2.2 Visual FoxPro 6.0 基础知识
2.2.1 复习提要与学习指导
本章系 Visual FoxPro 基础知识,有助于学习数据表和程序设计的内容。对于数据的类 型、存储、函数和表达式之间的关系是:①无论是数据存储容器(常量、变量、数组、字 段、对象),还是函数返回值,或者表达式的值,它们的值必定属于某种数据类型;②数据 存储容器、函数和操作符是构成表达式的基本元素。学习本章时:
1.掌握 Visual FoxPro 常用的文件类型及命令格式。
2.掌握数据类型和数据存储(常量、变量、数组、字段、对象)。 (1)常量的表示。 1)字符型 C:单引号、双引号、方括号,长度为 0~254 个字符。 2)备注型 M:用来存放超过 254 个字符的文本,长度 0~64K,字段宽度为 4,用来存 放实际文本在备注文件中的地址。注意 memo、Memo 之间的区别,首字母大写表示包含内 容。备注字段内容的输入:双击 memo,打开编辑窗口,然后输入文本。
3)通用型 G:用来存放 OLE 对象,字段宽度为 4,存放实际内容在备注文件中的地址。 注意 gen、Gen 之间的区别,首字母大写表示包含内容。通用字段的输入:双击 gen,打开编 辑窗口,在编辑菜单中选中插入对象;如果是已有的图片文件,则选择通过文件创建。
4)日期型 D(日期时间型 T):花括号,长度固定 8 个字节。 set century on|off 表示是否采用 4 位的年份 set date to YMD|MDY|DMY|LONG 设置年月日的次序 set mark 设置年月日之间的分隔符 分为两种日期格式:传统日期格式——{mm/dd/yy hh:mm:ss}
严格日期格式——{^yyyy/mm/dd hh:mm:ss }
5)逻辑型 L:.t.、.f.、.y.、.n.,长度固定 1 个字节,字母不区分大小写,两边的点号不 能省略。
6)货币型 Y:长度固定 8 个字节,小数位数最多为 4 位,超出 4 位则自动四舍五入。 在交互状态下(命令窗口)用美圆$符号加数字表示。
第二部分 《Visual FoxPro 程序设计(第二版)》复习提要与学习指导、习题及参考解答 87
88
Visual FoxPro 程序设计实训与考试指导(第二版)
7)数值型 N(浮点型 F):在内存中占 8 个字节,在字段中由用户指定,但必须指定小 数位数,即使为 0。小数形式:3.14、指数形式:3.12E28、3.12E-28。
8 )整型 I :长 度固 定 4 个字 节, 无小 数位数 ,且 只能作 为字 段数据 类型 。 如 INT(3.98)=3,固定取整数部分,无四舍五入。
9)双精度型 B:宽度固定为 8 字节。 (2)变量:定义(变量的创建):通过赋值定义变量,由变量中的值确定其数据类型。
a=100:一次只能将一个值赋值给一个变量;
store 100 to a,b,c:一次可以将一个值赋值给多个变量。 访问变量:通过变量名访问变量
内存变量和字段名同名时,字段变量具有更高优先级,如果要访问内存 注意
内存变量的保存与恢复:
保存:SAVE TO FILENAME.MEM 将内存中的变量信息保存于文件 恢复:RESTORE FROM FILENEME
(3)数组:它也是内存变量,是一个有序的内存数据序列,它的每个值称为元素,可 以通过序号来访问。
定义(数组的声明):DECLARE | DIMENSION A(10),B(2,3) 私有数组 A(10):表示定义一个 10 个元素的数组 A B(2,3):表示定义一个 2 行 3 列的数组 B,共 6 个元素 LOCAL 局部数组
PUBLIC 公有数组(全局数组) 数组的存储:按行的顺序存储。例如,三行四列的数组 A(3,4),A(2,3)等价于 A(7)。 数组的赋值:对单个元素赋值。例如,A(2,3)=3,第 2 行第 3 列的值为 3,等价于
A(7)=3,这里既可以用元素的逻辑位置,也可用数组的存储位置。 对数组
名进行赋值:A=3,表示 A 数组的所有元素都为 3。 数组跟表的关系: Scater:将当前记录的每个字段传送到一维数组,作为它的一个元素。
Gather:将一维数组的每个元素的数据传送到表中作为一条记录的一个字段。 Copy to array:将整个表中的记录复制到二维数组。
Append form array:从二维数组中追加多条记录的数据到表。 1)数组的大小可以由命令根据表的字段数自动定义(对已定义的数组, 元素个数只会增加不会减少)。 2)数组元素的数据类型:一个数组中,每个元素的数据类型可以不同。 3)定义数组后,数组元素初值为.F.。 4)备注型和通用型字段不能和数组交换数据,备注字段和通用字段不会 成为数组元素。 5)如果已存在的数组,对它进行重新定义,里面的原有数据不会丢失, 其元素个数根据重新定义的个数确定。
M. 或者 M->。 变量,则须在内存变量名前加
注意
(4)字段:事先必须定义其数据类型,具有固定的数据类型,且宽度也是固定的。 (5)对象:是类的实例,它包含数据(属性)和过程(事件代码)。 3.掌握各类型数据运算的操作符以及表达式。 (1)算术操作符:**|^(乘方)、%(取余、结果的符号同第二个参数)。 (2)字符操作符:
+:直接将两个字符串直接连接;
-:将左边字符串尾部空格移到连接后新字符串的最后; $:判断左边的子串是否包含于右边的字符串中。 以 csrq 为索引名,按 zc 和 csrq 创建普通索引,其索引表达式: zc+csrq(数据类型不同)
CTOD(zc)+csrq(数据类型相同,但 zc 不可能转换为日期) zc+DTOC(csrq)
(3)日期操作符:
+:(日期+整数=日期)只有一种运算形式; -:(日期-整数=日期;日期-日期=相隔的天数,可以为负数)有两种运算形式。 日期在进行关系比较时,以前的日期小于现在的日期
year(date())-val(iif(left(xh,1)='9',\
(4)关系操作符:!=、#、<> 表示不等,查询设计器中的不等可以用相等再取否。
NOT KSS BETWEEN 3 AND 5 AND DELETED()=.F.
=(左部匹配、精确相等)set exact on(精确相等)|off(左部匹配、默认状态) 例如:\返回为.t. \返回为.f. = =(精确相等) 字符的排列序列有三种形式:
machine 机器序列——按机内码顺序排序:空格、大写、小写、一级汉字、二级汉字; Pinyin 拼音序列——按汉语拼音序列排序:空格、小写、大写、汉字按拼音顺序; Stroke 笔画序列——按笔画的多少排序:空格、小写、大写、汉字按笔画顺序。
系统默认的是拼音序列;改变字符序列的命令:SET COLIATE TO \
注意
(5)逻辑操作符:not| !(取反)、and(与、并且)、or(或、或者)
注意
操作符两边必须为逻辑值或返回值为逻辑型的表达式。 4.掌握常用系统函数的用法。
(1)数学函数:ABS()求绝对值、INT()取整,不具有四舍五入功能。
说明:INT(100.245*100+0.5)/100=100.25,四舍五入保留两位小数;CEILING()向上取 整、 FLOOR() 向下取 整; ROUND() 四舍五入,例如 : ROUND(300.14,1)=300.1 , ROUND(345.14,-1)=350;RAND()取大于等于 0 小于 1 的随机数。
mod(m,n):结果的符号由 n 的符号确定同号 m-int(m/n)*n 异号(int(m/n)+1)*n-m。
第二部分 《Visual FoxPro 程序设计(第二版)》复习提要与学习指导、习题及参考解答 89
90
Visual FoxPro 程序设计实训与考试指导(第二版)
MAX()、MIN()取最大(小)值。
(2)字符函数。 去掉空格函数:ALLTRIM()两边、LTRIM()左边、RTRIM()|TRIM()右边。 AT(cst, ctring[,n]):返回 CST 在 CTRING 中第 N 次出现时首字符的位置。 BTWEEN(dst,start,end):返回逻辑值,判断某个值是否属于某个区间。 BTWEEN 操作符:KSS BTWEEN 3 AND 5 BTWEEN(KSS,3,5) SPACE(n):返回 n 个空格的字符串。
LEN(cst):返回字符串 cst 的长度,包括首尾空格。例如:学号长度只能为 6、8、10, 则可用 inlist(len(alltrim(xh)),6,8,10)
(3)字符串截取:LEFT(str,n)从左边第一个字符开始;RIGHT(str,n)从右边第一个字符 开始;SUBSTR(str,start,n) 从指定位置字符开始,取指定的长度;REPLICATE(\\让表达式重复出现多次。
(4)日期时间函数:DATE()日期、DATETIME()日期时间、TIME()时间。
注意
以上返回值为日期或日期时间型。 YEAR()年、MONTH()月、DAY()日、DOW()|CDOW()星期
注意
以上返回值为整型。 (5)转换函数。
①STR(要转换的数值,总宽度,小数位数)数值→字符 说明:默认总宽度为 10,小数位数为 0 STR(314.159)=(7 个空格)314
当总宽度不能满足小数位数时,优先给整数 STR(314.159,5,3)= \314.2\; 当总宽度不能满足整数位数时,则系统返回星号(个数同总宽度)。
②VAL()字符→数值
注意
能够识别的:3.14、-3.14、3.14E2; 不能识别的:+-3.14、A3.14(这种情况的返回值为 0)。 ③ASC()字符→ASCII,返回首字母的 ASCII 值
ASC(\计算机\:返回首汉字的第一个字节数据
④CHR()ASCII→字符,返回该整数作为 ASCII 码所对应的字符 ⑤DTOC()日期→字符
说明:DTOC(日期[,1]),1 表示返回以年月日顺序且无分隔符的字符串。 例如:DTOC(DATE(),1)=\20040830\
⑥CTOD()字符→日期,要求参数必须为一个日期序列字符
说明:在 6.0 中,如果 SET STRICDATE TO 2,则日期必须为严格日期格式序列。 ⑦UPPER()小写→大写、LOWER()大写→小写 (6)数据测试函数。
TYPE()返回给定参数的数据类型,为一个表示该数据类型的字符。参数只能为字符型数