在每种结构程序设计之中,经常要插入一些基本的语句,才能够灵活地按照用户的要求和需要设计数据库。
在程序中若要使用(引用)变量,必须在使用(引用)之前为变量设定一个初值或改变它的现行值。赋值语句可以将指定的值赋给内存变量或对象的某个属性,其一般格式为:
STORE <表达式> TO <名称列表> 或 <名称> = <表达式>
说明:
(1)“名称”是内存变量名或属性名,“名称列表”是多个“名称”的列表,各名称之间用逗号分隔。
(2)“表达式”可以是算术表达式、字符串表达式、日期表达式、关系表达式或逻辑表达式,首先计算(表达式),然后再赋值。计算所得的表达式值将赋给相应的变量或对象。
(3)STORE可以给多个变量或属性赋值,"="只能给一个变量或属性赋值。
例如,
STORE 40*2-3 TO A,B,C
THISFORM.Caption="仓库管理系统"
(4)内存变量的类型由<表达式>的类型决定,而属性的类型则须与表达式的类型一致。
(5)若要对日期型内存变量赋值,如果<表达式>是日期型常量,则必须用花括号“{ }”括起来,并在前面加上一个符号(^);如果<表达式>是字符串,则必须用转换函数将其转换为日期型。
例如,
today = {^2007/01/22}
today = CTOD("01/22/2007")
(6)不要将赋值号(=)与数学中的等号混淆。如x=30应读作将数值30赋给变量“x”或是使变量“x”的值等于30。下面两个语句的作用是不同的:
x=y
y=x
(7)z=x+y不能写成x+y=z。
赋值号的左边只能是一个变量名,不能是表达式。当一条语句很长时,在代码编辑窗口阅读程序时将不便查看,使用滚动条又比较麻烦。这时,就可以使用续行功能,用分号(;)将较长的语句分为两行或多行,例如,
THISFORM.Label1.Caption = "对于一个较长的标题,标签控件提供了两种属性:"+; "AutoSize和WordWrap来改变控件尺寸以适应较长或较短的标题。"
注意:作为续行符的分号只能出现在行尾。
为了提高程序的可读性,通常应在程序的适当位置加上一些注释。注释语句用来在程序中包含注释,Visual FoxPro中提供行首和行尾两种注释语句。
(1)行首注释。如果要在程序中注释行信息,可以使用行首注释语句,其语法格式为:
NOTE [<注释内容>] 或 * [<注释内容>]
说明:
① <注释内容>指要包括的任何注释文本。在NOTE关键字与注释内容之间要加一个空格。可以用一个星号(*)来代替NOTE关键字。
② 程序运行的时候,不执行以NOTE或*开头的行,如果要在下一行继续注释,可在本注释行尾加上一个分号(;),或直接按回车键再另用一个注释语句。
(2)行尾注释。如果要在命令语句的尾部加注释信息,应该使用行尾注释语句,其语法格式为:
&& [<注释内容>]
【例5-1】程序中的各种注释命令示例。
****************************
* 程序:仓库管理系统 *
* 日期:2007年1月 *
****************************
set directory to curdir()
_screen.autocenter=.T.
do form 仓库管理
on shutdown quit
READ EVENTS
WAIT语句用来暂停程序的执行并显示提示信息,按任意键或单击鼠标后继续执行程序。其语法格式为:
WAIT [<提示信息>] [TO <内存变量>] [WINDOW [AT <行,列>]] [TIMEOUT n]
说明:
(1)<提示信息>是指定要显示的自定义信息。若省略,则显示默认的信息“按任意键继续…”。
(2)TO <内存变量>将按下的键以字符形式保存到变量或数组元素中。若<内存变量>不存在,则创建一个;若按键是“不可打印”字符或单击鼠标,则内存变量中存储空字符串。
(3)WINDOW[AT <行,列>]指定显示的信息窗口在屏幕上的位置。若省略AT <行,列>,则显示在屏幕的右上角。
(4)TIMEOUT n指定自动等待键盘或鼠标输入的秒数,此项为可选项,且需要放在语句的最后。
【例5-2】程序中的等待命令示例。
…
WAIT "是否确定删除该条记录?(Y/N)" TO YN
IF UPPER(YN)="N" &&如果输入N或n
CANCEL
ENDIF
…
在Visual FoxPro中,虽然可以使用菜单或工具栏取代大多数命令操作,但在许多情况下,使用命令可以简化操作。而其中的调试、显示命令主要用于程序设计的调试阶段,可以随时在屏幕上显示程序运行的中间值或运行结果,跟踪程序的运行。
格式:\命令输出文本, \\命令输出文本
功能:在屏幕上输出文本。
说明:\命令在屏幕上新起一行输出文本, \\命令从屏幕上当前行紧跟着输出文本。
例如,\这是显示文本的例子
\\不换行输出
\结束
格式:? | ?? 表达式[FUNCTION 参数] [FONT 字体名,字体大小]…
功能:在屏幕上显示表达式的内容。
说明:?表达式用于对表达式进行计算,然后在屏幕上新起一行显示计算结果;??表达式则不换行,而且接着当前行直接输出。
格式:??? 表达式
功能:将字符串表达式的内容发送到打印机。
说明:该命令后的表达式必须为一个字符串表达式,如果是其他类型的表达式,则必须转化为字符串类型。该命令在调度打印机时使用。
一个Visual FoxPro程序通常是由多个程序功能模块组成的,各程序模块间可按需要进行多级调用。而一个程序模块运行结束后可返回到调用它的上级模块,也可以直接返回到其最上级的主程序模块,或者回到系统的交互状态,甚至退出Visual FoxPro返回到操作系统中。因此,可采用以下的不同命令来指明本程序模块运行结束后的 去向。
此命令表示返回到上级程序模块。若本程序模块是以菜单方式或在命令窗口调用执行的,则返回到交互状态。
此命令表示返回到最上级主程序。
此命令表示强行停止程序执行,关闭所有文件,返回系统交互状态。
此命令表示停止所有程序运行,并关闭所有文件,然后退回到操作系统中。
注意:一个独立的程序也可以没有专门的结束命令,这时系统在执行完最后一条程序语句时,也将自动返回到系统交互状态。