注:定界符:’ ’、” ”、 [ ] ? 单、双引号必是英文半角下的 ? 定界符必成对匹配
? 如定界符本身也是字符串内容,则用另一种定界符表示 ? 空串(””)和空格字符串(” ”)是不同的 ? 字符串中字母的大小写不等价。 ? 货币型:以 $ 符号开头
? 逻辑型: .T. 、.t.、.Y.、.y. 或 .F.、.f.、.N.、.n.(”.”是定界符,不能省) ? 日期型和日期时间型:用{ }括起来
传统格式:{mm/dd/yy [hh:[mm[:ss]] [a/p]]} 严格格式:{^yyyy/mm/dd [hh:[mm[:ss]] [a/p]]} (3) 内存变量
? 创建:内存变量不需要声明。它的创建是通过赋值来完成,并且同时确定了该变量的数据类型。
赋值方法:
? store 表达式 to 内存变量名 (可为多个) ? 内存变量名 = 表达式 (只为一个) ? 控制变量访问,变量的作用域:即变量使用的有效范围
? 局部变量(local): 只能在创建它们的程序中被访问,其他程序不能访问此变量的数据。当
其所属程序停止时,局部变量将被释放。
? 私有变量(private): 定义当前过程的变量,并将以前过程定义的同名变量保存起来,在当
前过程中使用私有变量而不影响这些同名变量的原始值。
? 全局(公有)变量(public): 任何运行的程序都能访问全局变量和全局数组。在命令窗口
创建的任何变量自动具有全局属性。(考点)
? 变量访问(考点)
当变量和字段名同名时,字段有优先被访问权。要在变量名前加m.或m-> 以示区别。 ? 变量的保存与恢复(考点)
内存变量是系统在内存中设置的临时存储单元,当退出VFP时其数据会自动丢失。
? 保存语句:
SAVE TO FileName [ALL LIKE Skeleton | ALL EXCEPT Skeleton] ? FileName:内存变量文件的名字.mem ? Skeleton:变量通配符 ? ALL LIKE子句:需保存的变量 ? ALL EXCEPT子句:不需保存的变量 例:save to mVar all like ?yan*
? 恢复语句:RESTORE FROM FileName [ADDITIVE] (4) 数组
数组是由一系列被称为元素的有序数据值构成,可以用序号引用这些元素。在VFP中,一个数组中的数据不必是同一种数据类型。常用的有一维数组、二维数组。
? 数组的声明(方式):declare, dimension (私有)、public (全局)、local (局部)(考点)
例如:dimension x(3) —> x(1), x(2), x(3)
dimension a(2,2) —> a(1,1) a(1,2) a(2,1) a(2,2)
6
南天内部资料,严谨出售
? 数组的赋值(考点)
? 数组声明后,初值为.F.
? 重新赋值后,数据类型由其值决定。
? 数组中各元素的数据类型可以相同,也可不同。
例:a(1,1)=13, a(1,2)=‘s’,a(2,1)=45? a=113 —>数组a中的所有元素赋以113 (5) 字段、对象(略) 3.运算符(考点)
运算符是用来处理同类型的数据,若类型不同,必须先转换类型。下面运算符的顺序(除关系运算符外)是按优先级由高到低排列:
? 数值运算符:()、**或^(乘方)、*、/、%(求余数)、+、-
%:运算结果的正负号由除数的正负号决定,运算结果的小数位数由被除数的小数位数决定。 例如:15%(-4)=-1, 15.25%(-5)=-4.75 ? 字符运算符:+、-、$
? “+”:连接,将两个字符串首尾相连。
例如:”abc ”+”123”=”abc 123”
? “-”:连接,同时将运算符左侧字符串尾部空格移到末尾。
例如:”abc ”-”123”=”abc123 ”
? “$”:查看运算符,查看左侧字符串是否包含在右侧字符串中,运算结果为逻辑型。
例如:”abc”$”abcdefjg”=.T., xb$”男女”
? 日期和日期时间运算符:+、-
? 日期-日期 结果是天数(数值型) ? 日期+天数 结果是日期型数据 ? 日期-天数 结果是日期型数据 ? 两个日期不能相加
说明:对于日期时间,“天数”改为“秒数” ? 关系运算符:<、>、=、<>或#或!=、<=、>=、==
可以用于任意数据类型,但是运算符前后的数据类型必须相同,运算结果是逻辑型。 ? 逻辑运算符:( )、NOT或!、AND、OR(考过优先级) ? 运算符的优先级:
( ) —> **或^ —> *、/ —> % —> +、- —> $ —>关系运算符 —> NOT或! —>AND—>OR 4.设置字符的排序序列
在比较字符串时,对于不同的字符的比较,是根据字符的排列顺序决定字符大小,字符序列的设置分为三种情况:
? Machine(机器)序列:按机器内码顺序排列,由小到大是:空格、大写字母、小写字母。 ? PinYin(拼音)序列:汉字按拼音顺序,对于西文,由小到大是:空格、小写字母、大写字母。 ? Stroke(笔画)序列:汉字按书写笔画的多少,对于西文,同拼音序列。 5.字符串精度比较(考点)
使用“=”比较时,受SET EXACT命令影响。当SET EXACT OFF(默认值)时,如果“=”右边的字符串长度比左边的短,则左边取右边长度比较;当SET EXACT ON时,首先将字符串短的一边尾部加上空格,使两边相等后比较。例如:
7
表达式 “BCDE”=“BC” “BC”=“BCDE” “BC ”=“BC” “BC”=“BCDE” “BCDE”=“BCDE” 6.函数:(考点)
SET EXACT ON返回值 .F. .F. .T. .T. .T. SET EXACT OFF返回值 .T. .F. .T. .F. .T. 所谓函数,就是针对一些常见问题预先编好的一系列子程序,当应用时遇到此类问题就可以调用相应的函数,也就是执行相应的函数子程序。由于一个函数接受一个或多个参数而返回单个值,因此函数可嵌入到一个表达式中。参数:是供函数或过程操作的一个值。 [说明]:
n表达式:表示数值表达式;c表达式:表示字符表达式;l表达式:表示逻辑表达式,等依次类推。 (1)数值函数,以下函数返回结果均为数值型。 ? ABS(n表达式):求一数值的绝对值,
? MAX(n表达式1,n表达式2… ):求最大值,在查询中表示MAX(cj),这里cj是一个字段,也是
一组数据的集合。
? MIN(n表达式1,n表达式2…):求最小值,在查询中表示MIN(cj),这里cj是一个字段,也是一
组数据的集合。
? INT(n表达式):求一数值的整数部分(考过)
? SQRT(n表达式):求一数值的平方根,参数必须不小于零。
? MOD(n表达式1,n表达式2):求数值表达式1 除以数值表达式2的余数。(考过)
[注]:MOD( )函数值的正负号由第二个参数的正负号决定,值的小数位数由第一个参数的小数位数决定。例如:mod(23,-3)=-1,mod(-23.25, 5)=1.75
? ROUND(n表达式1,n表达式2):求n表达式1四舍五入的结果,其四舍五入的位置由n表达式2
决定。
-3 -2 -1 0 1 2 3
? RAND( ):求一个0~1之间的随机数。
[注]: 其中的参数可以省略,可以为正数、负数和零。 (2)字符函数
? ALLTRIM(c表达式):删除字符串表达式开头和结尾的空格。返回结果类型为字符型。 ? TRIM(c表达式):删除字符串表达式结尾的空格。返回结果类型为字符型。 ? LTRIM(c表达式):删除字符串表达式首部的空格。返回结果类型为字符型。 ? LEN(c表达式):求字符表达式的长度。返回结果类型为数值型。
? AT(c表达式1,c表达式2[,n]):求字符表达式1在字符表达式2第n次出现的位置,如n省略则表示
第一次。返回结果类型为数值型。 [注]: AT( )区分大小写;ATC( )不区分大小写
? SUBSTR(c表达式,n[,m]):将字符表达式进行截取,n表示开始截取的位置,m表示截取的个数,
如m省略,则截取从n开始的所有字符。返回结果类型为字符型。(经常考)
? LEFT(c表达式, n):将字符表达式从最左边开始截取n个字符。返回结果类型为字符型。 ? RIGHT(c表达式,n):将字符表达式从最右边开始截取n个字符。返回结果类型为字符型。
8
[注]: 2 3 4 . 8 5 6 9 n表达式2的值就是要四舍五入的位置。
南天内部资料,严谨出售
? SPACE(n):返回指定个数的空格字符串,若SPACE(0):则表示空字符串。返回结果类型为字符型。 (3)日期/时间函数
? DATE( ):返回系统当前日期。返回结果类型为日期型。
? DATETIME( ):返回系统当前日期时间。返回结果类型为日期时间型。 ? TIME( ):返回系统当前时间。返回结果类型为字符型。
? DOW(d表达式):返回某个日期在一星期的第几天,星期天是第1天。返回结果类型为数值型。 ? DAY(d表达式):返回某个日期在某个月中的第几天。返回结果类型为数值型。 ? MONTH(d表达式):返回某个日期的月份。返回结果类型为数值型。 ? YEAR(d表达式):返回某个日期的年份。返回结果类型为数值型。 (4)数据类型转换函数 ? 字符<—>ASCII码值
? ASC(c表达式):返回单个字符或字符串的首字符的ASCII码值。返回结果类型为数值型。 ? CHR(n表达式):返回某数值在ASCII码表中对应的字符。 ? 字符串<—>数值
? VAL(c表达式):将字符串转换成数值。首字符必须是+、-、0~9数字,否则返回结果为0;并且只
能转换数字,除字符“E”和“.”之外的所有字符均不能转换;字符“E”是科学计数法。 [例]:VAL (“123-23”)=123 VAL(“123aaaa23”)=123 VALl(“1.23e+2”)=123
? STR(n表达式 [,n [,m]]):将数值转换成字符串。n是返回的字符串的宽度,省略为10个字节,
m是保留小数的位数。
[例]:STR(123456789012)=? 1.234E+11? 总宽度为10位,字符数为9,在最前面预留了符号位1位 ? 日期<—>字符串
? DTOC(d表达式 [,1]):将日期转换成字符串。参数1指返回结果形式唯一:yyyymmdd,否则返回
结果形式由系统当前的日期格式决定。
[例]:系统当前日期格式:mm/dd/yy DTOC(date( ))=”05/26/98” DTOC(date( ), 1)=”19980526” ? CTOD(c表达式):将字符串转换成日期。。 ? 日期时间<—>字符串
? TTOC(t表达式 [,1 | 2]):将日期时间转换成字符串。参数1与DTOC( )相同,参数2指只返回时
间部分。
? CTOT(c表达式):将字符串转换成日期时间。 (5)其他函数
? BETWEEN(表达式1,下界,上界):测试表达式1的值是否下界和上界之间。返回结果类型为逻辑
型。
? INKEY(秒数):返回键盘缓冲区中第一个按键的键码(ASCII)值。返回结果类型为数值型。 ? TYPE(c表达式):返回字符型表达式中引号括起来的表达式的类型。 [注]:其参数必须加引号,返
回结果类型为字符型。
[例]:TYPE(“123”) =?N? TYPE(“.T.”)=?L? TYPE(?ABC?)=?U? [注]:U:表示不确定的,由于ABC此变量没创建,所以不知道其数据类型。
? IIF(条件表达式,结果1,结果2):当条件表达式为.T.,函数返回结果1,当条件表达式为.F.,函数
返回结果2。返回结果类型不确定,由第二个和第三个参数的类型决定。(经常考)
? MESSAGEBOX(?显示文本?,对话框类型,?标题?) :弹出消息框。返回结果类型为数值型,不同的
按钮对应的数值不同,这样可以用在分支结构的程序中。
9
? FILE(c表达式):测试辅助存储器上是否存在指定的文件。返回结果类型为逻辑型。
[例]:? FILE(“a:\\data\\js.dbf”)
? GETFILE([c表达式1][, c表达式2]):显示“打开”对话框,并返回选定文件的名称。c表达式1:
文件的类型。c表达式2:指定文件文本框前的标签。
? DISKSPACE( ):返回默认值磁盘驱动器上可用的字节数(存储空间)。 7.表达式
任何有值的对象都可以成为表达式。常量、变量、函数是最基本的表达式,这些基本的表达式按照运算符的规则加上各种运算符就可以构成各种复杂的表达式。 ? 表达式类型
根据表达式所用到的运算符,可以把表达式分为: (1)数值型表达式
由数值型的常量、变量、函数和算术运算符构成的表达式,其运算结果仍为数值型。 (2)字符型表达式
由字符型的常量、变量、函数和字符运算符“+”和“-”组成的表达式,其运算结果仍为字符型。 (3)日期型(日期时间型)表达式
由日期型或数值型的常量、变量和日期运算符“+”和“-”(天数/秒数)组成的表达式,其运算结果为日期型(日期时间型)或数值型。 (4)关系型表达式
由关系运算符和数值表达式、字符表达式、日期表达式及货币表达式组成的表达式,但运算符两边的数据类型必须一致,其运算结果为逻辑值。 (5)逻辑型表达式
由逻辑运算符和逻辑型的常量、变量、函数及关系表达式组成,其运算结果仍是逻辑值。 (6)货币型货币型表达式
运算对象和运算结果都是货币型,其运算符同算术运算符,运算规则同数值型表达式。如: ? ? ?
yVar1 = $ 856.00
? yVar1 + $100 && 显示结果为:956.0000 ? yVar1 < $1000 && 显示结果为: .T.
? 优先级
这6种表达式,每一种表达式内有优先级,各种表达式之间也有优先级,其优先级顺序是:数据值表达式、字段型表达式、日期型表达式和货币型表达式为平级且优先级最高,其次是关系型表达式,而逻辑型表达式的优先级最低。例如: num1 = 60 num2 = 180
? NOT num1>num2 AND ″abc″ >″ad ″ OR num2+20 <=200 &&显示结果为:.T. ? 表达式值的显示
显示表达式的值,可使用单问号(?)或双问号(??) ? 名称表达式
由圆括号括起来的一个字符表达式,用来替换命令函数中的名称。 ? 宏替换(考点)
宏替换与名称表达式具有相似的作用,可使用宏替换的方法用内存变量替换名称。将连字符(&)放在变量前。
10