《VisualFoxPro的语言基础》由会员分享,可在线阅读,更多相关《VisualFoxPro的语言基础(22页珍藏版)》请在金锄头文库上搜索。
1、 Visual FoxPro的语言基础 利用Visual FoxPro 6.0进行数据库管理,不仅需要学会利用菜单和工具进行操作,而且还应掌握Visual FoxPro语言,学会命令操作和程序操作。与其他计算机高级语言一样,Visual FoxPro 语言基础也涉及了诸如数据类型、常量、变量、数组、运算符、表达式和函数等基本概念。3.1 数据类型、常量、变量与数组“数据”是信息的表现形式,是Visual FoxPro中处理的最基本对象。数据是有类型的。另外,数据在计算机系统中进行加工处理时,往往需要一个载体,以便暂时存储在内存中,这些载体就是常量、变量和数组。3.1.1 数据类型 无论是Vis
2、ual FoxPro表中的数据,还是命令或程序中的数据都是有型和值之分的。型是数据的分类,而值则是数据的具体表示。实际工作中所采集到的原始数据,通常需要进行加工处理,转换为对用户有用的信息,因此数据处理的第一步则是要对采集到的数据进行归类,选择恰当的类型来表示。为了满足存储和处理数据的需要,Visual FoxPro提供了多种数据类型,其中最常用的有如下11种。1. 字符型(Character)字符型数据由字母、数字、字符、空格、符号和汉字构成,通常表示用于显示或打印的信息,如学生的姓名,家庭地址等。字符型字段或变量的长度不能超过254个字节,每个英文字符占用一个字节,每个汉字占用两个字节。
3、2. 数值型(Numeric)数值型数据由数字09以及小数点、正负号和E组成。数值型的长度不超过20个字节,其中负号和小数点各占一位。数值型数值可以进行加、减、乘、除和乘方等算术运算。数值型数据在表中存储时占用120个字节,在内存中存储时占用8个字节。 3. 整型(Integer)整型用于对整数的表示,仅适用于字段的定义。整型数据存储时占用4个字节,且以二进制形式存储。 4. 浮点型(Float)浮点型与数值型是完全等价的,主要是为了和不同版本的FoxPro兼容所设。 5. 双精度型(Double)与一般的数值类型相比,双精度型提供了更高的数值精度,用于对数值精度要求较高的场合,存储位数固定(
4、16位有效数字),但只用于字段的定义,双精度型数据存储时占用8个字节。 6. 货币型(Currency)货币型用于表示货币金额,小数位固定为4位,若超过4位,系统会自动对其进行舍入处理。系统默认的货币符号为“$”。可以通过“Set Currency”命令设置货币符号。货币型数据存储时占用8个字节。 7. 逻辑型(Logical)逻辑型数据只有两个数据值:逻辑真(.T.)和逻辑假(.F.),多用于表示逻辑判断结果,逻辑型数据存储时占用1个字节。 8. 日期型(Date)日期类型用于存储日期数据,其存储格式为“YYYYMMDD”,占8个字节。显示格式有多种,常用的为“MM/DD/YY”,受“Set
5、 Date”、“Set Mark ”和“Set Century”等设置命令所作设定的影响。日期型数据的有效范围从公元1年1月1日到公元9999年12月31日。 9. 日期时间型(DateTime)日期时间型表示既包含日期又包含时间的数据,由年、月、日、时、分、秒组成,存储时占用8个字节。日期时间型数据的有效范围从公元1年1月1日0时0分0秒到公元9999年12月31日23时59分59秒。 10. 备注型(Memo)备注型只适用于表中的字段,存储时备注字段数据宽度固定为4个字节,用来表示一个指向存储备注文件(.FPT)内容的指针,而实际的备注内容存放在.FPT文件中。一般来说,表中的备注型字段多
6、用来存放简历、注释等不定长的内容。 11. 通用型(General) 通用型用于存储OLE对象,仅适用于表中的字段,固定宽度为4个字节。通用型字段中,包含了对OLE对象的引用,而一个OLE对象的内容则可以是一个电子表格、声音、图片等。这些OLE对象由相应的应用软件建立。 数据类型是Visual FoxPro中一个非常重要的概念,它决定了表中字段或程序中内存变量、数组变量取值的类型、取值范围、能参与的运算以及存储时所占用的空间等。另外,有些数据类型既可用在表中,也可用在程序或命令中,但有些类型只能用在表中。3.1.2 常量 常量是指命令操作或程序执行过程中,其值和类型保持不变的量。Visual
7、FoxPro 6.0 中支持六种类型的常量:数值型(N)、字符型(C)、逻辑型(L)、日期型(D)、日期时间型(T)和货币型(Y)。注意:在命令或程序中,不同类型的常量有不同的书写格式。1. 数值型常量 由整数、小数或科学记数法表示的数都是数值型常量。例如100、-88、3.14159、1.23E6、2.34E-4等都是数值型常量。应当注意的是,日常用到的百分比数(如10%)、含千分位数(如10,000)、分数(如1/2)等都不是数值型常量。2. 字符型常量 字符型常量是用定界符括起来的字符串或空字符串。定界符可以是一对单引号( )或一对双引号()或一对中括号( ),定界符必须是西文半角字符,
8、定界符括起来的字符串中不能再包括相同的定界符。若定界符本身是字符串中的字符,则必须采用另外一种定界符界定字符串常量。 例如,”FoxPro”、数据库、青岛大学等都是合法的字符型常量。Im wrong是非法的字符型常量。空字符串是指一对定界符之间无任何字符的常量,如、”、等。3. 逻辑型常量 逻辑型常量只有两个值:真和假。其中,表示真的有.T.、.t.、.Y.、.y.四种表示方法,表示假的有.F.、.f.、.N.、.n.四种表示方法。应当注意的是,逻辑型常量两边的句点是西文半角字符,并且不能缺少。4. 日期型常量 日期型常量表示日期,默认格式是:yyyy-mm-dd或yyyy/mm/dd,其中、
9、-(或/)为西文半角字符。表示确定日期时,、-(或/)不能缺省,yyyy表示年份,必须4位,mm表示月份,可1位也可2位,dd表示日,可1位也可2位。例如,2003-2-26和2003/2/26是日期型常量,都表示2003年2月26日,而2003-2-26则不是日期型常量。表示空日期的常量有:、 、/。5. 日期时间型常量 日期时间型常量表示既有日期又有时间的日期时间类型数据,默认格式是为yyyy-mm-dd,hh:mm:ssa|p|am|pm或yyyy/mm/dd,hh:mm:ssa|p|am|pm。其中,、-(或/)等均为西文半角字符,方括号“”表示所括起来的内容可有可无,竖线“|”表示用
10、其分隔的项只能从中选择一个,如果日期和时间之间没有逗号,它们之间必须用空格分开,a或am表示上午,p或pm表示下午,有a或p或am或pm时,hh只能从0到12,否则从0到24。表示空日期时间的常量是/:。例如,2003-2-26,10:5:10表示2003年2月26日上午10点5分10秒,2003-2-26 10:5p表示2003年2月26日晚上10点5分。6. 货币型常量 货币型常量以$开头,后面是整数或小数,但不能是用科学计数法表示的数,小数部分如果超过4位,则四舍五入取4位小数。例如,$123,$12345.6,$12345.6789都是合法的货币型常量。3.1.3 变量 与其他的计算机
11、语言一样,Visual FoxPro中也有变量,用变量来保存命令操作或程序执行过程中其值改变的数据。Visual FoxPro中,变量分为内存变量、字段变量、数组变量、系统变量和对象变量5种。计算机中变量的概念与数学中变量的含义并不完全相同。数学中的变量隐含了“未知”的因素,而计算机中的变量是指该量在程序执行的整个过程中其值是可以改变的,但在每一瞬时、每一具体运算过程中,其值则是确定的。1. 内存变量 Visual FoxPro内存变量经常出现在程序或命令中,用于保存程序执行过程中的中间结果与最终结果,或用于保存对数据库进行某种分析处理后的结果。内存变量也有类型和值的概念。类型取决于当前所存放
12、的数据的类型,不必像其他计算机语言那样需说明其类型,而变量的值则是指所存放数据的值。(1)内存变量名程序或命令中往往会用到多个内存变量,为了区分不同的变量,因此需要给每一个变量起一个固定名称。实际上,计算机中的每一个变量系统都为其在内存中分配了相应的存储单元,用于保存变量中的数据。通过内存变量的名称来标记和引用相应的存储单元。无论是给变量赋值还是使用变量中的数据,从根本上是对变量所对应的内存单元中的数据进行操作。内存变量的变量名称(变量名)往往需要用户自己指定,而且在Visual FoxPro中变量的命名需要遵循一定的规则,其规则如下:由字母、汉字或下划线开头,后跟字母、汉字、数字或下划线等。
13、长度不能超过128个字符。变量名中不区分字母的大小写。例如,x1、姓名、Page_Head等都是合法的变量名,而2a、m%n等则是非法的变量名。建议在给内存变量命名时变量的第一个字符标记该变量的数据类型,一般采用小写的类型标记字母,例如“nVal1”;变量的其余标记字母标记该变量的含义,尽可能做到“见名知义”,例如“cName”。(2)建立内存变量程序或命令中若使用内存变量,则首先需要给内存变量赋值,否则会出现提示信息“内存变量没有找到!”。Visual FoxPro 6.0中,当用户在程序或命令窗口中第一次给一个内存变量赋值时,也就定义了该变量,变量的类型就是被赋值数据的类型。给已定义的变量
14、可以再赋值,值的类型可以与原来相同,也可以不同,变量的类型就是其保存值的类型。Visual FoxPro提供了多种命令或语句定义内存变量和给内存变量赋值,常用的赋值命令有如下两种格式:【格式1】 = 【功能】首先计算出表达式的值,然后将结果放到“=”左边的内存变量中【例】 nSum=12*3 &将36赋给变量nSum,nSum为数值型变量 cNumber=”编号” &将”编号”赋给变量cNumber注意:上述两条命令定义了两个变量,其中&后面的内容是注释。注释对命令的执行不产生影响,可有可无。赋值语句中的“=”要理解为赋值号,而不应理解为数学中的等号。例如A=A+1,如果按数学中的等号来理解是
15、不能成立的,而应理解为将变量A的值加上1,然后再放到变量A中。【格式2】 STORE TO 【功能】将表达式的值赋给内存变量名表中每个变量。【例】 STORE 3*6 TO A1,A2 &把18分别赋给变量A1,A2两种赋值格式的差别在于:格式1一次只能给一个变量赋值,而格式2则一次能向多个变量中赋值,但只能赋相同的值。注意:变量名表中若包含了多个变量名,则不同变量名之间用“,”号分隔。 (3)引用内存变量变量的引用是指变量的使用。变量是通过变量名来引用的,变量必须定义后才能引用,否则就出错。【例】 nSum=5 &将5赋给变量nSum nSum = nSum +1 &将nSum中原有的值5加上1再存入nSum中(3)输出内存变量若需要在程序或命令中输出已定义变量的内容,可按如下的命令格式进行:【格式】 ? 【功