衍纸的艺术书籍:计算机等级考试(二级VFP刘丽主讲)精粹之一
来源:百度文库 编辑:九乡新闻网 时间:2024/05/06 11:52:36
常量类型包括:
数值型
货币型:加一个前置美元符号($),以示与数值型区分
字符型(也称字符串):定界符为半角单引号、又引号、或方括号。注意""不等于" "
日期型:定界符为一对花括号,第一个字符必须是脱字符
日期时间型
逻辑型:定界符是两个句点,以示与变量名区分
表达式的显示:?为换行输出,??为跟行输出
日期格式的设置命令:
SET MARK TO <日期分隔符> &&设置分隔符的格式,默认值是斜杠
SET DATE TO MDY|DMY|YMD
SET CENTURY ON|OFF|TO
变量:
无论是值还是类型都可以随时改变。分字段变量和内存变量两种。同名时默认为字段变量,内存变量用M.<变量名>区分。类型有:数值型、字符型、货币型、日期型、日期时间型、逻辑型
简单内存变量:定义或赋值的命令格式:
<内存变量名>=<表达式>
STORE<表达式> to <内存变量名表(各变量之间必须用逗号分开)>
数组:
是内存中连续一片存储区域。
数组创建命令格式
DIMANSION<数组名>(<下标>)
DECLARE<数组名>(<下标>)
数组创建后,系统自动给每个数组元素赋以逻辑假.F.
内存变量的显示:
LIST MEMORY [LIKE<通配符>] [TO
DISPLAY MEMORY [LIKE<通配符>] [ TO printer | TO file<文件名>](分屏显示)
内存变量的清除:
CLEAR MEMORY (清除所有的)
RELEASE MEMORY (清除指定的)
表与数组之间的数据传递:
1)将表的当前记录复制到数组:
SCATTER [FIELDS<字段名表>] [MEMO] TO <数组名> [BLANK]
SCATTER [FIELDS LIKE<通配符> |FIELD EXCEPT<通配符>] [MEMO] TO
注:FIELD指范围;BLANK产生一个空数组;MEMO同时复制备注型字段;EXCEPT指除...之外;LIKE指跟...一样。
2)将数组复制到表的当前记录:
GATHER FROM<数组名>[FIELDS <字段名表>][MEMO]
GATHER FROM<数组名>[FIELDS LIKE<通配符>|FIELDS EXCEPT<通配符>][MEMO]
表达式:
数值表达式、字符表达式、日期时间表达式、逻辑表达式(大多是带比较运算符的关系表达式)
数值表达式:将数值型常量、变量及数值型函数连接起来形成,结果仍然是数值型数据。运算符:()、**或^、*、/、%或MOD()、+、-。
字符表达式:字符型数据连接起来,结果仍然是字符型数据。运算符:+、-。
日期时间表达式:日期和日期、日期时间和日期时间,只能相减,不能相加。运算符+、-。
关系表达式:<表达式1><关系运算符><表达式2>。关系运算符:<、>、=、<>或#或!=、<=、>=、==(字符串精确比较)、$(右串包含左串为真),运算优先级相同。结果为逻辑型数据。
设置字符排序次序的命令:SET COLLATE(对照、核对) TO "<排序次序名>"
字符串精确比较与EXACT设置:
SET EXACT ON/OFF (设置为ON,先在较短字符尾部加上若干空格,使其长度相等,然后再进行精确比较;设置为OFF,只要右边字符串与左边字符串的前面部分相匹配,即可得到逻辑真.T.
逻辑表达式:逻辑运算符连接起来,结果仍然是逻辑型数据。优先级为NOT(单目运算符)/AND/OR
不同类型运算符优先级:算术运算符、字符串运算符、日期时间运算符、关系运算符、逻辑运算符。圆括号的优先级最高。
函数:
数值函数:
绝对值函数:ABS()
符号函数:SIGN()
取整函数:INT()
圆周率函数:PI()
取余函数:MOD()
求最大值函数:MAX()
求最小值函数:MIN()
四舍五入函数:ROUND()
求平方根函数:SQRT()
字符函数:
字符长度函数:LEN(<字符表达式>)
空串生成函数:SPACE(<数值表达式>)
删除空格函数:TTRIM(<字符表达式>)、LTRIM(<字符表达式>)、ALLTRIM(<字符表达式>)
取字符串函数:LEFT(<字符表达式>,<长度>)、RIGHT(<字符表达式>,<长度>)、SUBSTR(<字符表达式>,<起始位置>[,<长度>])
字符串匹配函数:LIKE(<字符表达式1>,<字符表达式2>)
子串替换函数:STUFF(<字符表达式1>,<起始位置>,<长度>,<字符表达式2>)
字符替换函数:CHRTRAN(<字符表达式1>,<字符表达式2>,<字符表达式3>)
计算字串出现次数函数:OCCURS(<字符表达式1>,<字符表达式2>)
求字串位置函数:AT(<字符表达式1>,<字符表达式2>[,<数值表达式>])、ATC(<字符表达式1>,<字符表达式2>[,<数值表达式>]) 注:ATC不区分字符母大小写
大小写转换函数:LOWER(<字符表达式>)、UPPER(<字符表达式>)
日期时间函数:
日期函数:DATE() 值为日期型
时间函数:TIME() 值为字符型
日期时间函数:DATETIME() 值为日期时间型
年YEAR() 值为数值型
月MONTH() 值为数值型
日DAY() 值为数值型
时HOUR() 值为数值型
分MINUTE 值为数值型
秒SEC() 值为数值型
转换函数:
数值转换字符:STR()
字符转换数值:VAL()
日期转换字符:DTOC()
日期时间转换字符:TTOC()
字符转换日期:CTOD()
字符转换日期时间:CTOT
宏函数:&()
测试函数:
值域测试:BETWEEN(<表达式1>,<表达式2>,<表达式3>)
空值测试:ISNULL()
“空”值测试:EMPTY()
表文件头测试:BOF()
表文件尾测试:EOF()
记录号测试:RECNO()
记录个数测试:RECCOUNT()
删除测试:DELETE()
数值类型测试:VARTYPE()
条件测试:IIF()
程序的基本结构:
选择结构:
简单选择结构语句格式:
IF <条件>
ENDIF
一般形式的条件语句格式:
IF <条件>
ELSE
ENDIF
多分支语句格式:
DO CASE
ENDCASE
循环结构:
do while<条件>
<命令序列>
enddo
for <循环变量>=<初值>to<终值>[storp=<步长>]
endfor|next
模块:
可以是命令文件,也可以是过程。
过程定义的语法格式:
PROCEDURE | FUNCTION <过程名>
[EDNPROC |ENDFUNC]
过程文件建立命令:
MODIFY COMMAND
扩展名仍是.PRG
模块的调用格式:
格式1:使用DO命令
DO <文件名>|<过程名>
格式2:在名字后面加一对小括号
<文件名>|<过程名> ( )
打开过程文件:
SET PROCEDURE TO [<过程文件1>[,<过程文件n>,……][ADDITIVE]
选用ADDITIVE是不关闭已打开的过程文件
关闭所有过程文件:
SET PROCEDURE TO
关闭指定的过程文件:
RELEACSE PROCEDURE <过程文件1>[,过程文件2,……]
建立数据库的命令格式:
CREATE DATABASE[DatabaseName|?]
如果指定数据库已经存在,很可能覆盖掉已经存在的数据库。这要看SAFETY(安全、保险)的设置,如果设置为OFF会直接覆盖,设置为ON会提示。
打开数据库的命令格式:
OPEN DATABASE[FileName | ?]
[EXCLUSEVE | SHARED](独占还是共享方式)
[NOUPDATE](只读方式)
[VALIDATE](检查数据库中引用的对象是否合法)
可以同时打开多个数据库,但只有一个是当前数据库,指定为当前数据库的命令:
SET DATABASE TO [database name]
都不是当前数据库的命令:
SET DATABASE TO
删除数据库的命令:
delete database databasename | ? [deletetables](同时删除表)[recycle](放入回收站)
在数据库打开的情况下建立数据库表:
creat tablename
打开表:use tablename(如果不加名字则关闭表,如果当前没有打开的表则什么都不做)
修改表结构:
modify structure
追加表记录命令:
APPEND [blank]
INSERT [before] [blank]
删除表记录的命令:
DELETE FOR [逻辑表达式]
恢复表记录的命令:
RECALL FOR [逻辑表达式]
物理删除有删除标记的记录:
PACK
物理删除表中的所有记录,不管有没有删除标记:
ZAP
修改表中的记录:
EDIT和CHANGE交互修改
REPLACE直接替换。格式:REPLACE fieldname1 WITH expression_r1[,fieldname2 WITH expression_r2]...[FOR expression_r1]
显示记录的命令:
list/display[FIELDS] Fieldlist] [FOR expression_rl][OFF]
[TO PRINTER[PROMPT] | TO FILE Filename]
查询定位命令:
直接定位:GOTO/GO
逻辑定位:SKIP
条件定位:LOCATE FOR [expression_r条件表达式]
常见条件定位的结构:
LOCATE FOR [条件表达式]
主索引(候选索引):字段值惟一
惟一索引:索引项惟一
普通索引:字段值、索引项都不惟一
主索引只能有一个,其它索引可以有多个
建立索引的命令:
INDEX ON expression_r TO IDXfilename(单独的临时的索引,与以前版本兼容) | TAG Tagname [OF CDXfilename(复合结构索引)]
[FOR expression_r(给出过滤条件)] [COMPACT(压缩)]
[ASCENDING/DESCENDING]
[UNIQUE(惟一索引) | CANDIDATE(候选索引)]
[ADDITIVE](使新建索引成为当前索引(添加))
使用索引:
SET ORDER TO [Indexname(索引名)] | [TAG] Tagname] [ASCENDING/DESCENDING]
添加自由表到数据库的命令格式:
ADD TABLE
将表从数据库中移出:
REMOVE TABLE
指定工作区的命令:
SELECT nWorkarea(工作区) |cTableAlias(表别名)
为表指定别名:
USE (表名) IN 1 ALIAS (别名)
在表间建立临时联系:
SET RELATION TO exprenssion INTO nworkarea | tablealias
排序命令:
SORT TO Tablename ON fieldname1 [/A |/D][/C] [,fieldname2[/A |/D] [/C]...]
[ASCENDING |DESCENDING] [FOR expression_r]
[FIELDS Fieldnamelist]
打印或预览报表命令格式:
REPORT FORM <报表文件名> [PREVIEW]
VFP的基类有32个,每个类至少有四种属性。
ACTIVEDOC 活动文档
COMMANDBUTTON 命令按钮
CUSTOM 定制
GRID 表格
LABEL 标签
Oleboundcontrol OLE绑定控件 OPTIONBUTTON 选项按钮
PAGEFRAME 页框
SPINNER 微调控件
四种属性:
Clase
Baseclase 基类名,当前类从哪个Visual FoxPro基类派生出来
Claselibrary 类库名,当前类存放在哪个类库中
ParentClase 父类名,当前类从哪个类直接派生出来
基于某个类的对象用如下函数生成:
CREATE OBJECT(<类名>[<参数1>,<参数2>,......])
对象属性以及对象方法调用的基本格式如下:
<对象引用>.<对象属性>
<对象引用>.<对象方法>[(参数列表)]
容器层次中的对象引用属性或关键字:
Parent 当前对象的直接容器对象
This 当前对象
ThisForm 当前对象所在的表单
ThisFornSet 当前对象所在的表单集
对象引用:
this
thisform
this.prent
thisformset
事件引发:
load 装载
unload 卸载
init 初始化
click 单击
dbclick 双击
rightclick 右击
error 出错
启动表单设计器:
create form <文件名> &&创建新的表单
modify form <文件名> &&打开一个已有的表单
数据环境的常用属性:
AutoOpenTables 当运行或打开表单时,是否打开数据环境中的表和视图
AutoCloseTables 当释放或关闭表单时,是否关闭数据环境指定的表和视图
常用的关系属性:
RelationalExpr 用于指定基于主表的关联表达式
ParentAlias 用于指定主表的别名
ChildAlias 用于指定子表的别名
ChildOrder 用于指定子表中与关联表达式相匹配的控制索引
OenToMany 用于指明关系是否为一对多关系
表单常用属性:
name 字串 表单名,用于程序代码
caption 字串 表单标题/窗口标题
autocenter .t. .f. 为真时,表单居中打开
backcolor RGB三色 表单背景色
closable .t. .f. 是否可以用控制菜单和按钮关闭窗口
controlbox .t. .f. 是否有控制图标和控制按钮
left/right 数值 表单左上角坐标
height/width 数值 表单的高宽
windowstate 0,1,2 表单的初始状态:0:普通;1:最小化;2,最大化
movable .t. .f. 表单是否允许移动
picture bmp文件 用该文件作为表单背景
属性赋值有两种:
绝对引用:
包含对象的各层容器名.对象名.属性名=值
相对引用:
this.属性名=值
或:
thisform.表单内包含对象的各层容器名.对象名.属性名=值
命令按钮组常用属性:
buttocount:命令按钮的数目
buttons:存取命令按钮组中每个命令按钮的数组,代码中可以通过该数组访问命令按钮组中的各个按钮
value:默认情况下,命令按钮组中的各个按钮被自动赋予一个编号,如1、2、3等,当运行表单时,一旦用户单击某个按钮,则value将保存该按钮的编号,于是在程序中通过检测value的值,就可以为相应的按钮编写特定的程序代码。如果在设计时,给value赋予一个字符型数据,当运行表单时,一旦用户单击某个按钮,则value将保存该按钮的caption属性值
对按钮组中各对象的引用可采用两种方法:
1)直接引用按钮名:thisform.commandgroup1.command1.enabled=.f.
2)按照按钮的顺序号来引用:
for i=1 go 4
thisform.mycmdgoup.button(i).forecolor=rgb(255,0,0)
endfor
这里,button是命令按钮组的一个方法,为按钮列表数组,button(i)表示按钮组中的第i个按钮。
文本框控件常用属性:
controlsource:设置文本框的数据来源。一般情况下,可以利用该属性为文本框指定一个字段或内存变量。
value:保存文本框的当前内容,如果没有为controlsource属性指定数据源,可以通过该属性访问文本框的内容。它的初值决定文本框中值的类型。如果为controlsource属性指定了数据源,该属性值与controlsource属性指定的变量或字段的值相同。
passwordchar:设置输入口令时显示的字符。
readonly:确定文本框是否为只读,为.t.时,文本框的值不可修改。
“登录”表单中“确定”按钮的代码:
if thisform.text1.value="user1" and thisform.text2.value="123456"
do form mainform
form2.release
else
messagebox ("密码或用户名错误",0,"提示")
endif
“登录”表单中“取消”按钮的代码:
nanswer=messagebox("你决定退出系统吗?",4,"提示")
do case
messagebox("请输入用户名和密码",0,"提示")
编辑框的常用属性:
controlsource:设置编辑框的数据源,一般为数据表的备注字段。
value:保存编辑框中的内容,可以通过该属性来访问编辑框中的内容。
sellength:返回用户在文本输入区中所选定字符的数目。
seltxet:返回用户在编辑区内选定的文本,如果没有选定任何文本,则返回空串。
readonly:确定用户是否能修改编辑框中的内容。
scroolbars:指定编辑框是否具有滚动条,当属性值为0时,编辑框没有滚动条,当属性值为2时(默认值),编辑框包含垂直滚动条。
复选框常用属性:
value:用来指明复选框的当前状态
controlsource:用于指定复选框的数据源
选项组常用属性:
buttoncount:指定选项组中选项按钮的数目
value:用于指定选项组中哪个选项按钮被选中
buttons:用于存取选项组中每个选项的数组
controlsource:指定选项组数据源。
列表框(listbox)常用属性:
rowsourcetype:指明列表框的数据源类型
rowsource:指定列表框的数据源
list:用于存取列表框中数据条目的字符串数组
listcount:列表框中数据条目的数目
columncount:指定列表框的列数
value:返回列表框中被选中的条目
controlsource:该属性在列表框中的用法与在其他控件中的用法有所不同。在这里,用户可以通过该属性指定一个字段或变量用以保存用户从列表框中选择的结果
selected:该属性是一个逻辑型数组,第N个数组元素代表第N个数据项是否为选定状态
multiselect:指定用户能否在列表框控件内进行多重选定
列表框的事件过程:
常用的过程有:click event,dbclick event,additem(添加),removeitem(移动)
表格(grid)控件常用属性:
recordsourcetype:指明表格数据源的类型
recordsource指定数据的来源
columncount:指定表格的列数
linkmaster:用于指定表格控件中所显示的子表的父表名称
childorader:指定子表的索引
relationalexpr:确定基于主表字段的关联表达式
allowaddnew:为真,运行时允许添加新记录,否则不能添加新记录
allowrowsizing:为真,运行时用户可以改变行高
allowheadersizing:为真,运行时用户可以改变列宽
常用的列属性:
controlsource:指定在列中显示的数据源
currentcontrol:指定列对象中显示和接收数据的控件
sparse:用于确定currentcontrol属性影响列中的所有单元格还是只影响活动单元格
常用的标头(header)属性:
caption:指定标头对象的标题文本,显示于列顶部。默认为对应字段的字段名
alignment:指定标题文本在对象中显示的对齐方式
页面控件常用属性:
pagecount:指定一个页框对象包含的页对象的数量
pages:存取页框中的某个页对象
tabs:是否显示页面标签
tabstretch:页面标题显示属性(0,1)
activepage:返回页框中活动的页号
打开类设计器的命令:
create class
修改类的命令:
modify class <类名> of <类库名>
创建类库:
create classlib <类库名>
复制类:
add class <类名> [fo <类库1>] to
删除类:
remove class <类名> of <类库名>
重命名类:
rename class <类名1> of <类库名> to <类名2>
打开类库:
set classlib to <类库名> [additive] [alias <别名>]
关闭所有的类:
set classlib to
关闭当前处于打开状态的类库文件:
release classlib <类库名1> | alias <别名1>