SETFLDSTATE() 函 数

SETFLDSTATE() 函 数 - 图1为表或临时表中的字段或记录指定字段状态值或删除状态值

语 法

SETFLDSTATE ( cFieldName | nFieldNumber , nFieldState

[, cTableAlias | n W o rkArea ])

返 值 类 型逻辑型 参 数 描 述

cFieldName | nFieldNumber

SETFLDSTATE() 函 数 - 图2SETFLDSTATE() 函 数 - 图3SETFLDSTATE() 函 数 - 图4SETFLDSTATE() 函 数 - 图5SETFLDSTATE() 函 数 - 图6SETFLDSTATE() 函 数 - 图7指 定 的 字 段 名 或 字 段 编 号 对 此 字 段 指 定 编 辑 或 删 除 状 态 字 段 编 号nFieldNumber 为 字 段 在 表 或 临 时 表 结 构 中 的 位 置 DISPLAY STRUCTURE 或 FIELD( ) 可 以 用 来 确 定 一 个 字 段 的 编 号 要 给 记 录 设 置 删 除 状 态 把 字段 编 号 设 置 为 0

nFieldState

SETFLDSTATE() 函 数 - 图8SETFLDSTATE() 函 数 - 图9为 字 段 状 态 或 删 除 状 态 指 定 一 个 值 下 表 列 出 字 段 状 态 值 或 删 除 状 态 值 以 及相 应 的 编 辑 或 删 除 状 态

nFieldState 编 辑 或 删 除 状 态

  1. 字段没有被编辑或删除状态没有改变

  2. SETFLDSTATE() 函 数 - 图10SETFLDSTATE() 函 数 - 图11字段已被编辑或删除状态已改变

  3. SETFLDSTATE() 函 数 - 图12追加记录的字段没有被编辑或追加记录的删除状态没有改变

  4. SETFLDSTATE() 函 数 - 图13追加记录的字段已被编辑或追加记录的删除状态已改变

cTableAlias

SETFLDSTATE() 函 数 - 图14SETFLDSTATE() 函 数 - 图15表 或 临 时 表 的 别 名 在 其 中 指 定 编 辑 状 态 或 删 除 状 态

n W o rkArea

SETFLDSTATE() 函 数 - 图16SETFLDSTATE() 函 数 - 图17SETFLDSTATE() 函 数 - 图18SETFLDSTATE() 函 数 - 图19表 或 临 时 表 的 工 作 区 使 用 SETFLDSTATE ( ) 时 如 果 不 带 可 选 的cTableAliasnWorkArea 参 数 则 为 当 前 选 定 工 作 区 中 打 开 的 表 或 临 时 表指 定 字 段 状 态 值 或 删 除 状 态 值

说 明

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

示 例

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

SETFLDSTATE() 函 数 - 图35SETFLDSTATE() 函 数 - 图36SETFLDSTATE() 函 数 - 图37SETFLDSTATE() 函 数 - 图38调用 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

SETFLDSTATE() 函 数 - 图39? GETFLDSTATE('cust_id') && 显示 1 未修改

REPLACE cust_id WITH '***' && 更改字段内容

SETFLDSTATE() 函 数 - 图40? GETFLDSTATE('cust_id') && 返回 2 字段已修改

= SETFLDSTATE('cust_id', 1) && 更改字段状态

SETFLDSTATE() 函 数 - 图41? GETFLDSTATE('cust_id') && 显示 1 未修改

= TABLEREVERT(.T.) && 放弃所有对表的修改

请 参 阅

DELETED ( ) , DISPLAY STRUCTURE , FIELD( ) , GETFLDSTATE( )