A. 关于VF的一些命令
VF命令一览表:
一、命令
1.use 表名 打开表
2.List 显示表记录,但不能修改
3.browse 浏览表记录,可以修改
4.display 显示记录指针指向的记录
5.append 追加记录
6.append blank 追加空白记录
7.insert blank 插入空白记录
8.delete 逻辑删除记录,记录前出现星号
9.pack 物理删除,将逻辑删除的记录彻底删除
10.recall 记录恢复
11.zap 删除表里的所有记录
12.go n 指向第n条记录
13.go top 指向第一条记录
14.go bottom 指向最后一条记录
15.skip n 往下跳n条记录
16.skip -n 往上跳n条记录
17.? 从屏幕的下一行的第一列起显示结果
18.? ? 从当前行当前列起显示结果
19.use sb to sb() 复制sb表给sb()表
20.recno() 记录号函数
21.bof() 上溢出
22.eof() 下溢出
23.dimension x(4) 定义数组x,里面有四个元素,其中每个元素的默认值为.F. declare和dimension 相同
24.replace 替换
25.add 表示增加字段
26.distinct 不重复记录
27.error 错误
28.continue
继续
29.else if 否则
30.column 列
31.input 显示数值
32.accept 显示字符串
33.wait 是弹出的一个信息框
34.drop 删除字段或删除表
35.otherwise 其它情况
36.check 规则
37.cursor 临时表
38.build 连编
二、VF里文件类型
1.项目 .pjx project 2.数据库 .dbc database
3.表 .dbf table 4.菜单 .mnx .mpr menu
5.程序 .prg 6.表单 .scx form
7.报表 .frx report 8.查询 .qpr query
9.视图 .vue view 10.文件 .txt
11.备注型文件 .fpt
三、例题
1.creat table student(学号 c(6),姓名c(8),性别c(2),年龄n(2)) 创建学生表
2.insert into student values("001","张三","男",20) 插入一条学生记录
3.alter table student alter 学号 c(8) 将学号字段的宽度改为8
4.alter table student rename 学号 to 学生编号 将学号字段重命名为学生编号
5.alter table student drop 年龄 将年龄字段删除
6.alter table student add 所在院系c(10) 为student表增加一个字段
7.select *from student into table xusheng 将表student复制给表xuesheng
8.update student set 成绩=成绩+10 where 性别="男" 将男生的成绩提高10分
9.delete from student where 性别"女" 册除所有女生的记录
10.alter table student alter 学号 set check left(学号,2="00")
四、创建、运行与修改
1.create database 123 创建数据库123
modify database 123 修改数据库123 (注意:alter在SQL中修改表结构)
2.modify command 123 修改程序123
do 123 运行程序123
3.create form 123 创建表单123
modify form 123 修改表单123
do form123 运行表单123
4.create menu 123 创建菜单123
modify menu 123 修改菜单123
do 123.mpr 运得菜单123
5.modify query 123 修改查询123
do 123.qpr 运得查询123
6.modify report 123 修改报表123
report form 123 运行报表123
7.drop view 123 删除视图123
create view 123 创建视图123 (打开视图用use)
五、排序
1.sort to nl on 年龄 按年龄升序排列,产生一个新表nl
2.sort to cj on 成绩/d 按成绩降序排列,产生一个新表cj
六、索引
1.index on 姓名 tag xm //按姓名升序建立普通索引,索引标识为xm//
2.index on 性别 tag xb //按性别升序建立普通索引,索引标识为xb//
3.index on 成绩 tag cj descending //按成绩降序建立普通索引,索引标识为cj//
4.index on 性别 tag xb1 unique(唯一索引) //按性别升序建立唯一索引,索引标识为xb1//
5.index on 年龄 tag nl candidate //按年龄升序建立候选索引,索引标识为nl//
6.index on 性别+str(成绩) tag xbcj //按性别升序,如性别相同按成绩升序建立普通索引,索引标识为xbcj//
7.index on 性别+str(成绩) tag xbcj1 descending //按性别降序,如性别相同按成绩降序建立普通索引,索引标识为xbcj1//
8.index on 年龄-成绩/1000000 tag nlcj //按年龄升序,如年龄相同按成绩降序建立普通索引,索引标识为nlcj//
9.index on 年龄-成绩/1000000 tag nlcj1 descending //按年龄降序,如年龄相同按成绩升序建立普通索引,索引标识为xbcj1//
七. 命令
set index to 打开当前的一个或多个索引文件并确定主控索引文件(to后加东西是打开,不加是关闭)
set order to 确定主控索引
locate 顺序查找满足条件的记录,并且指向它
seek 索引查找
count 记数命令
sum 求和命令
average 求平均值命令
total 汇总命令
max 求最大值
min 求最小值
八.SQL查询结构
1.select 字段列表 要显示的字段
2.from 表名列表 查询涉及到的所有表
3.where 条件 条件
4.into 目标 查询结果输出到哪去
5.group by 条件表达式 对记录进行分组
6.having 筛选条件 选择符合条件的分组
7.order by 关键字 对查询结果按某几个字段进行排序
8.top 数值表达式 对显示表的前几个记录
九.程序结构
1.顺序结构
2.选择结构:(1)if 条件表达式 (2)if 条件表达式 (3)do case
语名序列 语名序列1 case 条件表达式1
endif else 语句序列1
语句序列1 case 条件表达式2
endif 语句序列2
case 条件表达式3
语句序列3
3.循环结构:(1)for (2)do while 条件表达式 (3)scan(扫描)
循环体 循环体 循环体
endfor enddo endscan
Loop 重新回到循环的最开始 input to x 从键盘输入一个数给变量x
exit 结束循环跳出循环 accept to y 从键盘输入一个字符串给变量y
set sysmenu to default 退出菜单
thisform.release 退出表单
thisform.refresh 刷新表单
十.函数
数值型函数
函数名 功能 例子 结果
1.abs() 求绝对值 ?abs(-4) 4
2.sqrt() 求平方根 ?sqrt(4) 2
3.int() 取整数 ?int(7.5) 7
4.max() 求最大值 ?max(3,4,5) 5
5.min() 求最小值 ?min(3,4,5) 3
6.mod() 取余 ?mod(11,3) 2
7.round() 四舍五入 ?round(3.1415,3) 3.142
8.ceiling() 返回不小于某值 ?ceiling(3.3) 4
的最小整数
9.floor() 返回不大于指定数
的最大整数 ?floor(3.3) 3
十一.字符处理函数
1.substr() 求子串 ?substr("abcd",2,2) "bc"
2.left() 取左串 ?left("abcd",2) "ab"
3.right() 取右串 ?right("abcd",2) "cd"
4.len() 求串长 ?len("abcd") 4
5.at() 求一个串在另一个
串中出现的位置 ?at("bc","abcd",1) 2
6.space() 输出空格 ?space(4) " "
7.upper() 将小写字母转换成
大写字母 ?upper("aBc") "ABC"
8.lower() 将大写字母转换成
小写字母 ?lower("aBc") "abc"
9.val() 将字符串转换为数值 ?val("3.14") 3.14
10.str() 将数值转换为字符串 ?str(3.14,5,1) "3.1"
11.alltrim() 去掉字符串前面和后面的空格去掉 ?alltrim("abcd") "abcd"
12.stuff 修改字符串 ?stuff("good boy",5.3) "goodgirl&
B. 汇编命令 CALL 的是什么参数
00453E50 /$ 51 PUSH ECX ;
00453E51 |. 53 PUSH EBX
00453E52 |. 56 PUSH ESI //保存环境
00453E53 |. 8BF1 MOV ESI,ECX //esi = ecx = 第一个参数
00453E55 |. 8B4E 14 MOV ECX,DWORD PTR DS:[ESI+14]
看这段代码,应该是fastcall调用方式,该调用方式是使用ecx来传第一个参数,edx来传第二个参数,其他的使用堆栈来传递。00453E50这个函数在这部分只看出有一个参数,其他的参数不确定,找一下函数返回的地方,看返回几个参数。
我猜这里可能只有一个参数,即该函数调用:fun_00453E50(esi)
00471A12 |. 8BCE MOV ECX,ESI //ecx = esi = 第一个参数
00471A14 |. E8 3724FEFF CALL elementc.00453E50。
补充:汇编指令是汇编语言中使用的一些操作符和助记符,还包括一些伪指令(如assume,end)。用于告诉汇编程序如何进行汇编的指令,它既不控制机器的操作也不被汇编成机器代码,只能为汇编程序所识别并指导汇编如何进行。
C. 请详细讲解下批处理文件echo、@、call、pause、rem 命令的具体用法以及含义
1、
显示信息,或将命令回显打开或关上。
ECHO [ON | OFF]
ECHO [message]
要显示当前回显设置,键入不带参数的 ECHO。
从批处理程序调用另一个批处理程序。
2、
CALL [drive:][path]filename [batch-parameters]
batch-parameters 指定批处理程序所需的命令行信息。
如果命令扩展名被启用,CALL 会如下改变:
CALL 命令现在将卷标当作 CALL 的目标接受。语法是:
CALL:label arguments
一个新的批文件上下文由指定的参数所创建,控制在卷标被指定
后传递到语句。您必须通过达到批脚本文件末两次来 "exit" 两次。
第一次读到文件末时,控制会回到 CALL 语句的紧后面。第二次
会退出批脚本。键入 GOTO /?,参看 GOTO : EOF 扩展名的描述,
此描述允许您从一个批脚本返回。
另外,批脚本文本参数参照(%0、%1、等等)已如下改变:
批脚本里的 %* 指出所有的参数(如 %1 %2 %3 %4 %5 ...)
批参数(%n)的替代已被增强。您可以使用以下语法:
%~1 - 删除引号("),扩充 %1
%~f1 - 将 %1 扩充到一个完全合格的路径名
%~d1 - 仅将 %1 扩充到一个驱动器号
%~p1 - 仅将 %1 扩充到一个路径
%~n1 - 仅将 %1 扩充到一个文件名
%~x1 - 仅将 %1 扩充到一个文件扩展名
%~s1 - 扩充的路径指含有短名
%~a1 - 将 %1 扩充到文件属性
%~t1 - 将 %1 扩充到文件的日期/时间
%~z1 - 将 %1 扩充到文件的大小
%~$PATH : 1 - 查找列在 PATH 环境变量的目录,并将 %1
扩充到找到的第一个完全合格的名称。如果环境
变量名未被定义,或者没有找到文件,此组合键会
扩充到空字符串
可以组合修定符来取得多重结果:
%~dp1 - 只将 %1 扩展到驱动器号和路径
%~nx1 - 只将 %1 扩展到文件名和扩展名
%~dp$PATH:1 - 在列在 PATH 环境变量中的目录里查找 %1,
并扩展到找到的第一个文件的驱动器号和路径。
%~ftza1 - 将 %1 扩展到类似 DIR 的输出行。
在上面的例子中,%1 和 PATH 可以被其他有效数值替换。
%~ 语法被一个有效参数号码终止。%~ 修定符不能跟 %*
使用
3、
暂停批处理程序,并显示以下消息:
请按任意键继续. . . 在批处理文件或 CONFIG.SYS 里加上注解或说明。
4、
REM [comment]