表记录的处理 【返回上一页
序号 项目 操作内容 备注
1 记录的输入
  • (1) 立即输入方式
    设计好表的结构后,系统会提示是否直接进入数据输入状态。若选是,则进入编辑窗口,输完后单击“X”按钮退出,系统自动存盘。需输入备注型或通用型字段的数据时,双击“memo”
    或“gen”,在新打开的编辑窗口中输入所需内容,输完后单击“X”按钮系统自动存盘,退回到原窗口 ,此时字段中的“memo”
    或“gen”变成“Memo” 或“Gen”。
  • (2) 追加方式
  • 若设计好表的结构后并没有及时输入数据,则可以用追加方式:
    从文件菜单中(或从命令窗口中输入:USE 表文件名) 打开所需表文件 → 从显示菜单中选择浏览 → 再从显示菜单中选择追加方式 →
    在浏览窗口中输入所需记录。
  • APPEND [BLANK]
    在当前表的末尾自动添加一个或多个新记录。相当于显示菜单中的追加方式。有BLANK时添加一个空记录,相当于表菜单中的追加新记录。
    APPEND BLANK 一次只能追加一条空记录.APPEND则可以多条.
  • APPEND FROM 表文件名 [FIELDS 字段名1,字段名2 …][FOR 条件 ]
    从其它数据表中将符合要求(字段名和字段类型相同)的记录添加在当前数据表的尾部。相当于表菜单中的追加记录…。
    APPEND FROM 文本文件名 SDF 将符合要求的文本文件全部追加在当前数据表的尾部。
    注意:文本内容要与表中的字段结构(类型)相适应。
    文件菜单中的导入 将其它类型的文件转换成一个完整的VFP数据表。
  • INSERT INTO dbf_name [(FieldName1 [, FieldName2, ...])] VALUES (eExpression1 [, eExpression2, ...])
显示菜单中的追加方式 在现有数据表的尾部添加一个或多个新记录
表菜单中的追加新记录 在现有数据表的尾部添加一个新记录
表菜单中的追加记录… 从其它数据表中将符合要求(字段名和字段类型相同)的记录添加在当前数据表的尾部
2 记录的浏览

(1) 通过浏览窗口
(2) 通过BROWSE 命令
BROWSE命令用来打开表的浏览窗口,可通过不同的子句来实现对特定记录的浏览。

VFP命令中的常用子句
1) 范围子句

  • ALL 表示对表文件的全部记录进行操作 不写或用*也要以表示所有.如SELECT * FROM…..
  • NEXT n 表示对从当前记录开始的共n个记录进行操作, n为正整数 RECORD n 指明操作对象是表文件的第n号记录
  • REST 对从当前记录起到文件结尾的全部记录进行操作

2) FOR子句 用于指明进行操作的条件。

  • 格式: FOR <条件>
  • 指明只对指定范围中那些符合给定条件的进行当前操作。
  • 例如: list NEXT 6 FOR cj < 85
    USE 学生档案LOCAT FOR 性别=”女” &&在学生档案表中查找性别=女的记录

3) WHILE 子句 也用于指明进行操作的条件。

  • 格式: WHILE <条件>
  • 例如: list NEXT 6 WHILE cj < 85

4) FIELDS 子句

  • 用于指明当前的操作涉及到表文件的哪些字段。
  • 格式:BROWSE [ FIELDS 字段名1,字段名2……]
  • 注意:用FIELDS引导,后面用,分开,结束无标点.
  • 例如:BROWSE FIELDS xh,xm,cj
 
3 记录的定位
  • (1) 系统对记录的三个控制标志
    记录开始标志:位于第一个记录之前。其值用函数BOF()进行测试。
    记录指针标志:指向当前记录。其值用函数RECNO()进行测试。第几条记录,指针位置.
    RECCO()测试出总记录数.
    记录结束标志:位于最后一个记录之后。其值用函数EOF()进行测试。
    记录指针可以理解为保存当前记录号的变量,它的初始值总是1,不可能为0或负数,最大值是表中记录总数+1。
  • 刚打开表时记录指针的情况
    表中记录情况 BOF()的值 RECNO()的值 EOF()的值
    无记录 .T. 1 .T.
    有记录 .F. 1 .F.
  • BOF()的值 EOF()的值同时为真表示无记录;同时间为.F.则有记录.
  • 实例:USE 管理员表
    LOCAT FOR 姓名=ALLTRIM(THISFORM.TEXT1.VALUE) AND 密码= ALLTRIM(THISFORM.TEXT2.VALUE)  &&指针停在找到的第一个记录上
    IF eof()=.f. then
    recno()   &&返回记录的记录号。
    messagebox"找到记录,记录号为:recno()"
    else
    messagebox"未找到记录"
    endif
    seek for 也是顺序搜索记
  • (2)记录的定位方式
    绝对定位:是指把指针移到指定的位置。
    相对定位: 是指把指针从当前位置开始,相对于当前记录向前或向后移动若干个记录位置。
    条件定位: 是指按一定的条件在整张表或表的某个指定范围中查找符合该条件的记录。
    通过菜单进行定位 : 从表菜单中选择转到记录:记录号——实现绝对定位 定位… ——实现条件定位 通过命令进行定位 记录的定位 命令格式
  • 功能 备注
  • 绝对定位 GO TOP 将记录指针定位到表文件之首 或 GOTO TOP
    GO BOTTOM 将记录指针定位到表文件之尾 或GOTO BOTTOM
    GO <n> 将记录指针定位到指定的n号记录  GO 18 &&无括号
  • 相对定位 SKIP <n> 将记录指针从当前记录向上或向下移动n个 n为正值则向下移动
    n为负值则向上移动 无n向下移动 1个
  • 条件定位 LOCATE FOR <条件> [ 范围 ] 按顺序搜索表, 直到找到满足指定条件的第一个记录 默认范围是所有记录
    注意: [ ]中的内容为可先项, A|B 表示A和B必选择其一.<>内的项是必先项目.
 
4 记录的修改和删除
  • 一张表用非只读方式打开后,即可通过菜单在浏览窗口(或编辑窗口)中或从命令窗口中用命令直接对其记录进行编辑、修改和删除。
    (1) 菜单方式
  • 修改记录: 从表菜单中选择替换字段… → 在替换字段对话框中选择待替换的字段并构造出替换表达式及替换条件 → 替换。
  • 删除记录: 从表菜单中选择删除记录 → 在删除对话框中选择删除范围和删除条件 → 单击删除按钮 → 从表菜单中选择彻底删除 → 在消息框中单击是。
    删除记录包括两步: 标记要删除的记录 和 彻底删除带删除标记的记录
  • 恢复带删除标记的记录:
    从表菜单中选择恢复记录 → 在恢复记录对话框中选择作用范围和条件 → 单击恢复记录按钮。
  • (2) 在命令窗口中用VFP命令:
  • 命令格式
    插入 INSERT [BLANK][BEFORE] 在当前表的指定位置上插入一个空记录或若干新记录 BLANK
    :在当前记录后插入一个空记录
    BEFORE :在当前记录之前插入若干新记录

    修改 CHANGE [FIELDS 字段名1,…][FOR 条件] [LEDIT] [REDIT] 在编辑窗口显示要修改的字段
    LEDIT:调出编辑窗口
    REDIT:调出浏览窗口

    替换 REPLACE 字段名1 WITH 表达式1 [ADDITIVE][, 字段名2 WITH 表达式2[ADDITIVE] …]
    [范围] [FOR 条件] 把字段值用指定的表达式进行替换。如: 工资单中给某些人长工资 默认范围是当前记录
    ADDITIVE:把备注字段的替换内容添加在原备注内容的后面

    删除 DELETE [ 范围 ][FOR 条件] 对当前表中指定范围内满足条件的记录加上删除标记 * 默认范围是当前记录
    并非真正删除,真正删除用:PACK ,因此写语句时真正删除先用DELE后接:PACK&&
    注意在写语句时单词可以只写前面的四外字符也要以.
    PACK [MEMO][DBF] 将所有带删除标记的记录从表中抹去(不能再恢复) DBF:不影响备注文件
    MEMO:从备注文件中删除未使用空间

    ZAP 删除当前表中所有记录,只留下表的结构 相当于
    DELETE ALL + PACK
    恢复 RECALL [ 范围] [FOR 条件] 取消当前表中指定记录上的删除标记 默认范围是当前记录
 
5 筛选记录和字段
  • (1) 用菜单方式
    从表菜单中选择属性 → 在工作区属性对话框中单击数据过滤器框后的按钮 → 在表达式生成器对话框中构造所需的条件表达式并确定 →
    单击字段筛选…按钮 →在字段筛选器中选择所需字段并确定 → 单击选项按钮:字段筛选指定的字段 → 确定。
  • (2)用命令方式
    命令格式: SET FILTER TO 条件表达式
    例: SET FILTER TO xb ='男'
    注意:SQL命令对记录的访问不受此筛选命令的限制。