序号 |
留言内容 |
D:2010-6-1 T:16:46:00 IP:192.168.3.40
作者: 张顺海 | 1 VFP变量分为字段变量和内存变量。
在程序中不需要使用public等命令明确声明和建立,可直接使用的内存变量是私有变量。
2 严格的日期格式: {^yyyy-mm-dd} 此格式书写的日期常量可以表达一个确切的日期,不受SET DATE影响。
SET CENTURY ON/OFF [世纪值] ROLLOVER [年份参照值]
SET STRICTDATE TO [0/1/2] 0 表示不进行严格日期格式检查,1 表示严格检查,2 表示严格检查且对CTOD()和CTOT()有效。
执行命令“A=2005/4/2”后,内存变量A的数据类型是数值型。
TIME()返回当前系统的时间,函数值为字符型。
3 空值就是缺值或还没有确定值,相当于常数,以.NULL.表示。空值排序时优先于其它数据。在字段中可以通过Ctrl+0输入空值。
.F. OR .NULL. 的返回值为.NULL.
4 数组先定义后使用,VFP只可定义一维与二维数组。数组类型为A (Array)。
一数组中各元素的数据类型可以不同。数组创建后每元素自动赋值.F.
若要使一个数组中所有元素赋相同值,只需给数组名赋值。
创建数组命令格式:DIMENSION / DECLARE <数组名> (<下标上限1>,<下标上限2>……)
表中数据与数组数据的交换:
@ SCATTER [FIELDS <字段名表>] [MEMO] TO <数组名> [BLANK] 功能是将表的当前记录从指定字段表中的第一个字段内容开始,依次复制到数组名中的从第一个元素开始的内存变量中。 无FIELDS,则复制除M,G外所有。
@ GATHER FROM <数组名> [FIELDS<字段名表>] [MEMO] 功能是将数组数据作为一个记录复制到表的当前记录中。
5 求整数函数 CEILING(<数值表达式>) 返回大于或等于数值表达式的最小整数。 FLOOR(<数值表达式>) 类推
TRIM( ) 返回字符表达式去掉尾部空格后形成的字符串。 ALLTRIM 去掉前导与尾部空格。
取子串函数(字符型) LEFT / RIGHT / SUBSTR( <字符表达式>,<>起始位置>[,<长度>] )
OCCURS( )求子串出现次数 数值型
AT / ATC( ) 求子串位置 ATC不区分大小写 数值型
子串替换函数 STUFF(<字符表达式1 >,<起始位置>,<长度>,<字符表达式2 >) 用2替换1中部分
数值转换为字符串 STR(<数值表达式>[,<长度>[,<小数位数>]]) <小数位数>默认为0,<长度>默认为10 若结果要求长度大于时值表达式位数,加前导空格。若长度小于整数位,返回***。
宏替换函数(替换出字符型变量的内容) &<字符型变量>[.] . 为前后明确分界
6 表文件尾测试函数 EOF( ) 类推 BOF( )
若指定工作区无打开表文件,返回 .F.
若表文件无记录 返回.T. REONO() 为1 若有记录,且EOF为T,则RECNO( )=总记录数+1
|
D:2010-6-1 T:16:21:00 IP:192.168.3.40
作者: 张顺海 | 1 以 CREATE DATABASE 建立数据库,不打开数据库设计器,但数据库处于打开状态。 SET SAFETY ON 防止原数据库被直接覆盖。
数据库文件.dbc,数据库备注.dct,数据库索引文件.dcx。
OPEN DATABASE 数据库名 [ NOUPDATE (只读) / VALIDATE (检查对象引用是否合法)]
NOUPDATE 防止库被修改(当然包括其中的表)
USE 表名 NOUPDATE 才可只读。USE 后无参数,关闭当前打开的所有表。
修改数据库(打开库设计器) MODIFY DATABASE [NOWAIT] 只在程序中使用,数据库设计器打开时,程序继续执行。[NOEDIT] 打开设计器,但禁止修改。
删除库(同时删除表) DELETE DATABASE 库名/?[DELETETABLES] [RECYCLE],并释放库对其中表的引用,即使库表成为自由表。
2 建立表 CREATE 表名 打开表设计器
表字段名(自由表最长10,库表128)字段名以汉字或字母开头,可由字母,汉字,下划线,数字组成,不可含空格。 一表最多含255个字段,当设置表中字段可接受NULL时,最多254个。
浮点型最长20位 备注型(占4字节,不定长字符型文本,储存于.dbt文件中) 通用型(4字节,存excel,文档,图片等OLE文件)
“显示”组框(格式[输入掩码],输出掩码[为字段属性],标题) 字段有效性(规则,信息,默认值)
修改表结构 modify structure 打开表设计器
3 浏览表browse “显示”菜单 =〉 浏览 可修改
在浏览器中 Ctrl+T 切换删除标记 Ctrl+Y 追加记录
“显示”菜单=〉追加方式 使当前表进入追加状态
1) APPEND 将A表记录追加到B表 USE B
APPEND FROM A
2)INSERT [ BEFORE] [BLANK] (若表中建立主索引或候选索引,必须用SQL的INSERT 命令)
3)逻辑删除(置删除标记) DELETE FOR 逻辑条件 RECALL 恢复记录 SET DELETED ON (忽略带标记记录)/ OFF (允许访问)
PACK 物理删除带删除标记的记录 ZAP 物理删除全部记录,表结构保留
4)修改记录 REPLACE … WITH …
5)DISPLAY ALL= LIST LIST OFF 不显示记录号 LIST… TO FILE (文件名,扩展名.TXT)
6)查询定位 GO(TO)记录号 绝对定位 按条件定位 LOCATE FOR 条件 CONTINUE 继续向下 FOUND()
4 索引 创建索引是创建一个由指向.dbf文件记录的指针构成的文件,实质是对记录排序。
建立主索引的字段值不允许重复。唯一索引的索引项唯一。普通索引主要用于提高查询速度。 自由表不可建立主索引,可建候选索引。
用命令建索引(不可建主索引,默认普通索引) index on 表达式 tag 索引名 [unique(唯一) / candidate ]
结构复合压缩索引与表同名.cdx(打开表自动打开,自动维护)
设当前索引 set order to 索引名 [asc / desc]
删除索引 delete tag 索引名(delete tag all)
5 数据完整性包含实体完整性,域完整性(规则,信息,默认值),参照完整性(两表之间,先建立表的联系,清理数据库)。
参照完整性(更新规则,插入规则(无级联),删除规则)对主关键字修改级联,限制,忽略
6 自由表不可建立字段级规则与约束,不可为字段加标题,注释,输入掩码,格式。
添加自由表到当前数据库 add table (一表只可加入一个数据库)
移出(彻底删除)remove table [delete] [recycle]
7 选择工作区 select 工作区号n 0<=n<=32767
建立表之间关联 set relation to 索引关键字 into 工作区号/ 别名 set relation to (无参数)取消当前表到所有表临时联系
8 物理排序 SORT TO 排序后新表名 ON 字段名(默认区分大小写)
|
D:2010-6-1 T:11:45:00 IP:192.168.3.40
作者: 张顺海 | 谢谢你张燕:
你提到的‘问题’已经更改,如果还存在,请继续提出来。 |
D:2010-5-31 T:20:04:00 IP:193.168.7.16
作者: 张燕 | 出的题有的答案错了,而且也有好多一样的选项. |
D:2010-5-28 T:16:36:00 IP:192.168.3.40
作者: 张顺海 | 【查询设计器】
1.命令:
crea query 文件名---(调出查询设计器,建立查询)
modi query 文件名---(调出查询设计器,修改查询)
2.注意:
查询设计器,先选择数据源,我们这里讲的单表查询,因为,只需要选择一张表。
下边有6个选项卡,我们只用到了其中的两个:
(1)是字段选择,强调目的表格中的字段及输出顺序;
(2)是字段排序,强调目的表格中的记录输出顺序;
3.难点:
可以在查询设计器的空白处点鼠标右键,决定查询结果的输出去向(browse、curror、table、screen)
browse:输出到一个浏览窗口(默认的输出方向);
curror:输出到一个游标(保存在内存中的);
table:输出到一张表格中(产生一个新的表格);
screen:输出到VFP的主窗口。
4.我们上节课,使用的是【查询向导】,结果也是形成一个.qpr的查询文件,它是一个文本格式的文件,里边是一个select-SQL语句。
我们同样用modi comm 123.qpr建立了一个查询文件,结果一样,123.qpr中的内容是手写的一条select语句。
结论:说明查询向导、查询设计器、手写的文件,都是得到了一个select 书名,单价 from tushu order by 单价 desc的语句,试想如果把这个语句放到命令窗口中去执行,得到的结果也是一样的。
可是,放到文件里去有好处,好处在于执行这个查询,只需要do 123.qpr就可以了,而且可反复执行、复制让别人使用。
(注意,Select-SQL语句不是简简单单的这样的功能,我们现在仍然没有入门,它强大的很) |