SETFLDSTATE() 函 数
为表或临时表中的字段或记录指定字段状态值或删除状态值
语 法
SETFLDSTATE ( cFieldName | nFieldNumber , nFieldState
[, cTableAlias | n W o rkArea ])
返 值 类 型逻辑型 参 数 描 述
cFieldName | nFieldNumber





指
定 的 字 段 名 或 字 段 编 号 对 此 字 段 指 定 编 辑 或 删 除 状 态
字 段 编 号nFieldNumber 为 字 段 在 表 或 临 时 表 结 构 中 的 位 置
DISPLAY STRUCTURE 或 FIELD( ) 可 以 用 来 确 定 一 个 字 段 的 编 号
要 给 记 录 设 置 删 除 状 态 把 字段 编 号 设 置 为 0
nFieldState

为
字 段 状 态 或 删 除 状 态 指 定 一 个 值 下 表 列 出 字 段 状 态 值
或 删 除 状 态 值 以 及相 应 的 编 辑 或 删 除 状 态
nFieldState 编 辑 或 删 除 状 态
-
字段没有被编辑或删除状态没有改变
-

字段已被编辑或删除状态已改变 -
追加记录的字段没有被编辑或追加记录的删除状态没有改变 -
追加记录的字段已被编辑或追加记录的删除状态已改变
cTableAlias

表
或 临 时 表 的 别 名 在 其 中 指 定 编 辑 状 态 或 删 除 状 态
n W o rkArea



表
或 临 时 表 的 工 作 区 使 用 SETFLDSTATE ( ) 时 如 果 不 带 可 选
的cTableAlias 或 nWorkArea 参 数 则 为 当 前 选 定 工 作 区 中 打
开 的 表 或 临 时 表指 定 字 段 状 态 值 或 删 除 状 态 值
说 明


Visual
FoxPro 用字段状态值确定表或临时表的哪个字段被更新 SETFLDSTATE ( )
允许您 控制 Visual FoxPro 的字段状态
而不管表或临时表中哪个字段进行了编辑
示 例











下面示例演示如何用
SETFLDSTATE ( ) 改变字段状态 将 MULTILOCKS 设置为ON 是表缓冲的要求
然后打开 testdata 数据库中的 customer 表 并用CURSORSETPROP( )
把缓冲方式设置成开放式表缓冲 (5) GETFLDSTATE( ) 用来获取字段状态
这时显示一个值 (1) 表明 cust_id 字段未修改 在 cust_id 字段用REPLACE
修改之后 再次使用 GETFLDSTATE( ) 这时显示一个值 (2) 它表明cust_id
字段已修改 SETFLDSTATE( ) 用来把 cust_id 字段的状态改回 1 (未修改 )



调用
GETFLDSTATE( ) 后 显示值为 1 这 与 用 SETFLDSTATE( ) 指定的 cust_id
字段状态相对应 TABLEREVERT( ) 用来恢复表的原始状态
CLOSE DATABASES
SET MULTILOCKS ON && 为表缓冲必须设置为 ON SET PATH TO (HOME( 2 ) + data\') && 设置数据库的路径OPEN DATABASE testdata && 打开 testdata 数 据 库 USE Customer && 打开 Customer 表
= CURSORSETPROP('Buffering', 5, 'customer') && 启用表缓冲
Clear
?
GETFLDSTATE('cust_id') && 显示 1 未修改
REPLACE cust_id WITH '***' && 更改字段内容
?
GETFLDSTATE('cust_id') && 返回 2 字段已修改
= SETFLDSTATE('cust_id', 1) && 更改字段状态
?
GETFLDSTATE('cust_id') && 显示 1 未修改
= TABLEREVERT(.T.) && 放弃所有对表的修改
请 参 阅
DELETED ( ) , DISPLAY STRUCTURE , FIELD( ) , GETFLDSTATE( )
