T A B L E U P D A T E 函 数 - 图1T A B L E U P D A T E 函 数 - 图2T A B L E U P D A T E 函 数

T A B L E U P D A T E 函 数 - 图3T A B L E U P D A T E 函 数 - 图4执行对缓冲行 缓冲表或临时表的修改

语 法

T A B L E U P D A T E 函 数 - 图5TABLEUPDATE [ nRows [, lForce ]] [, cTableAlias | nWorkArea ] [,

cErrorArra y] T A B L E U P D A T E 函 数 - 图6

返 值 类 型

逻辑型

参 数 描 述

nRows

T A B L E U P D A T E 函 数 - 图7T A B L E U P D A T E 函 数 - 图8T A B L E U P D A T E 函 数 - 图9T A B L E U P D A T E 函 数 - 图10T A B L E U P D A T E 函 数 - 图11T A B L E U P D A T E 函 数 - 图12确 定 实 施 对 表 或 临 时 表 的 哪 些 更 改 如 果 nRows 是 0 或 . F . 并 且 启 用行 或 表 缓 冲 那 么 只 实 施 对 表 或 临 时 表 中 当 前 记 录 的 更 改

T A B L E U P D A T E 函 数 - 图13T A B L E U P D A T E 函 数 - 图14T A B L E U P D A T E 函 数 - 图15T A B L E U P D A T E 函 数 - 图16T A B L E U P D A T E 函 数 - 图17T A B L E U P D A T E 函 数 - 图18T A B L E U P D A T E 函 数 - 图19T A B L E U P D A T E 函 数 - 图20如 果 nRows 是 1 并 且 启 用 表 缓 冲 那 么 实 施 对 表 或 临 时 表 中 所 有 记 录 所 做的 更 改 如 果 nRows 是 1 或 . T . 并 且 启 用 行 缓 冲 那 么 只 实 施 对 表 或临 时 表 中 当 前 记 录 所 做 的 更 改

T A B L E U P D A T E 函 数 - 图21T A B L E U P D A T E 函 数 - 图22T A B L E U P D A T E 函 数 - 图23T A B L E U P D A T E 函 数 - 图24T A B L E U P D A T E 函 数 - 图25T A B L E U P D A T E 函 数 - 图26T A B L E U P D A T E 函 数 - 图27T A B L E U P D A T E 函 数 - 图28T A B L E U P D A T E 函 数 - 图29如 果 nRows 是 2 则 对 表 或 临 时 表 实 施 的 更 改 方 式 与 nRows 是 1 的 情 况 相同 但 是 当 不 能 实 施 一 处 更 改 时 不 产 生 一 个 错 误 并 且 V isual FoxPro 继续 处 理 表 或 临 时 表 中 的 其 他 记 录 如 果 包 含 了 cErrorArray 则 当 产 生 一 个 错误 时 创 建 一 个 包 含 错 误 信 息 的 数 组

T A B L E U P D A T E 函 数 - 图30nRows 的 默 认 值 是 0

lForce

T A B L E U P D A T E 函 数 - 图31T A B L E U P D A T E 函 数 - 图32T A B L E U P D A T E 函 数 - 图33决 定 是 否 覆 盖 网 络 上 的 其 他 用 户 对 表 或 临 时 表 的 修 改 如 果 lForce 是 真

T A B L E U P D A T E 函 数 - 图34T A B L E U P D A T E 函 数 - 图35T A B L E U P D A T E 函 数 - 图36T A B L E U P D A T E 函 数 - 图37.T . 那 么 网 络 上 其 他 用 户 表 或 临 时 表 的 任 何 更 改 都 被 覆 盖

T A B L E U P D A T E 函 数 - 图38T A B L E U P D A T E 函 数 - 图39T A B L E U P D A T E 函 数 - 图40T A B L E U P D A T E 函 数 - 图41T A B L E U P D A T E 函 数 - 图42T A B L E U P D A T E 函 数 - 图43T A B L E U P D A T E 函 数 - 图44T A B L E U P D A T E 函 数 - 图45T A B L E U P D A T E 函 数 - 图46T A B L E U P D A T E 函 数 - 图47如 果 lForce 是 假 .F. V isual FoxPro 从 表 或 临 时 表 的 第 一 个 记 录 开始 对 记 录 逐 条 实 施 更 改 直 到 表 或 临 时 表 的 结 束 如 果 遇 到 某 个 记 录 被 网络 上 别 的 用 户 修 改 过 V isual FoxPro 将 产 生 错 误

T A B L E U P D A T E 函 数 - 图48T A B L E U P D A T E 函 数 - 图49T A B L E U P D A T E 函 数 - 图50T A B L E U P D A T E 函 数 - 图51T A B L E U P D A T E 函 数 - 图52T A B L E U P D A T E 函 数 - 图53T A B L E U P D A T E 函 数 - 图54当 V isual FoxPro 产 生 该 错 误 时 可 以 用 ON ERROR 例 程 来 处 理 O N ERROR 例 程 调 用 TABLEUPDATE 函 数 并 把 lForce 设 置 成 真

T A B L E U P D A T E 函 数 - 图55T A B L E U P D A T E 函 数 - 图56T A B L E U P D A T E 函 数 - 图57T A B L E U P D A T E 函 数 - 图58T A B L E U P D A T E 函 数 - 图59T A B L E U P D A T E 函 数 - 图60.T . 从 而 实 施 对 记 录 的 更 改 或 者 如 果 正 处 理 一 个 事 务 那 么 O N

T A B L E U P D A T E 函 数 - 图61T A B L E U P D A T E 函 数 - 图62T A B L E U P D A T E 函 数 - 图63ERROR 例 程 可 以 处 理 发 生 的 错 误 并 且 调 用 ROLLBACK 命 令 把 表 或 临时 表 恢 复 成 原 来 的 状 态

T A B L E U P D A T E 函 数 - 图64T A B L E U P D A T E 函 数 - 图65T A B L E U P D A T E 函 数 - 图66T A B L E U P D A T E 函 数 - 图67T A B L E U P D A T E 函 数 - 图68lForce 的 默 认 值 是 假 .F.

cTableAlias

T A B L E U P D A T E 函 数 - 图69T A B L E U P D A T E 函 数 - 图70T A B L E U P D A T E 函 数 - 图71指 定 要 实 施 更 改 的 表 或 临 时 表 的 别 名 如 果 包 含 了 表 或 临 时 表 的 别 名 也 必须 包 含 lForce 参 数

n W orkArea

T A B L E U P D A T E 函 数 - 图72指 定 要 实 施 更 改 的 表 或 临 时 表 所 在 的 工 作 区

cErrorArray

T A B L E U P D A T E 函 数 - 图73T A B L E U P D A T E 函 数 - 图74T A B L E U P D A T E 函 数 - 图75T A B L E U P D A T E 函 数 - 图76T A B L E U P D A T E 函 数 - 图77T A B L E U P D A T E 函 数 - 图78T A B L E U P D A T E 函 数 - 图79指 定 当 nRows 是 2 并 且 不 能 实 施 对 一 个 记 录 的 更 改 时 所 创 建 的 数 组 该数 组 只 包 含 一 列 其 中 包 含 不 能 实 施 更 改 的 记 录 的 编 号 如 果 包 含 了 一 个 数组 名 也 必 须 包 含 表 或 临 时 表 的 别 名 cTableAlias 或 工 作 区 编 号n W o rkArea

T A B L E U P D A T E 函 数 - 图80T A B L E U P D A T E 函 数 - 图81T A B L E U P D A T E 函 数 - 图82注 意 如 果 在 更 新 记 录 时 发 生 了 一 个 非 简 单 的 提 交 错 误 时 cErrorArray 的 第 一个 元 素 将 包 含 – 1 还 可 以 运 用 AERROR T A B L E U P D A T E 函 数 - 图83 T A B L E U P D A T E 函 数 - 图84 函 数 判 断 更 新 不 被 认 可 的 原因

说 明

T A B L E U P D A T E 函 数 - 图85T A B L E U P D A T E 函 数 - 图86T A B L E U P D A T E 函 数 - 图87T A B L E U P D A T E 函 数 - 图88T A B L E U P D A T E 函 数 - 图89T A B L E U P D A T E 函 数 - 图90T A B L E U P D A T E 函 数 - 图91T A B L E U P D A T E 函 数 - 图92如果实施了对所有记录所做的更改 则 TABLEUPDATE 函数返回 真 .T.

T A B L E U P D A T E 函 数 - 图93T A B L E U P D A T E 函 数 - 图94T A B L E U P D A T E 函 数 - 图95T A B L E U P D A T E 函 数 - 图96T A B L E U P D A T E 函 数 - 图97T A B L E U P D A T E 函 数 - 图98T A B L E U P D A T E 函 数 - 图99T A B L E U P D A T E 函 数 - 图100T A B L E U P D A T E 函 数 - 图101T A B L E U P D A T E 函 数 - 图102T A B L E U P D A T E 函 数 - 图103T A B L E U P D A T E 函 数 - 图104否则 TABLEUPDATE 函数返回 假 .F. 记录指针指向不能实施更改的记录 可以发出 AERROR 函数确定对此记录所做更改不能实施的原因

T A B L E U P D A T E 函 数 - 图105T A B L E U P D A T E 函 数 - 图106T A B L E U P D A T E 函 数 - 图107T A B L E U P D A T E 函 数 - 图108T A B L E U P D A T E 函 数 - 图109T A B L E U P D A T E 函 数 - 图110T A B L E U P D A T E 函 数 - 图111对于没有启用行缓冲的表或没有启用表缓冲的临时表 TABLEUPDATE 函数不能实施对它们的更改 如果在没有启用行或表缓冲的情况下 调用 TABLEUPDATE

T A B L E U P D A T E 函 数 - 图112T A B L E U P D A T E 函 数 - 图113T A B L E U P D A T E 函 数 - 图114T A B L E U P D A T E 函 数 - 图115T A B L E U P D A T E 函 数 - 图116T A B L E U P D A T E 函 数 - 图117T A B L E U P D A T E 函 数 - 图118T A B L E U P D A T E 函 数 - 图119T A B L E U P D A T E 函 数 - 图120函数 Visual FoxPro 将产生错误信息 然而 TABLEUPDATE 函数仍然可以对具有有效性规则的表或临时表实施更改 使用函数 CURSORSETPROP 可以启用或废止行或表缓冲

T A B L E U P D A T E 函 数 - 图121T A B L E U P D A T E 函 数 - 图122T A B L E U P D A T E 函 数 - 图123T A B L E U P D A T E 函 数 - 图124如果不带可选参数 cTableAliasnWorkArea 调用 TABLEUPDATE 函数 那么只对当前所选工作区中打开的表或临时表实施更改

T A B L E U P D A T E 函 数 - 图125T A B L E U P D A T E 函 数 - 图126T A B L E U P D A T E 函 数 - 图127T A B L E U P D A T E 函 数 - 图128T A B L E U P D A T E 函 数 - 图129如果使用了表缓冲 并且更新了多个记录 则 TABLEUPDATE 将记录指针移动到更新的最后一个记录

T A B L E U P D A T E 函 数 - 图130注 意 对 于 不 使 用 关 键 字 段 的 本 地 表 或 视 图 调 用 TABLEUPDATE T A B L E U P D A T E 函 数 - 图131 T A B L E U P D A T E 函 数 - 图132 会 产

T A B L E U P D A T E 函 数 - 图133T A B L E U P D A T E 函 数 - 图134T A B L E U P D A T E 函 数 - 图135T A B L E U P D A T E 函 数 - 图136T A B L E U P D A T E 函 数 - 图137T A B L E U P D A T E 函 数 - 图138T A B L E U P D A T E 函 数 - 图139T A B L E U P D A T E 函 数 - 图140T A B L E U P D A T E 函 数 - 图141T A B L E U P D A T E 函 数 - 图142T A B L E U P D A T E 函 数 - 图143T A B L E U P D A T E 函 数 - 图144T A B L E U P D A T E 函 数 - 图145生 一 个 长 W H E R E 子 句 以 查 找 更 新 的 行 W H E R E 子 句 中 支 持 的 字段 默 认 数 是 40 如 果 得 到 错 误 1812 - SQL 语 句 太 长 可 以 为 更 新 使用 关 键 字 段 或 者 用 SYS 3055 来 增 加 W H E R E 子 句 的 复 杂 程 度如 果 使 用 SYS 3055 其 值 增 加 到 表 中 字 段 数 量 的 8 倍

= SYS T A B L E U P D A T E 函 数 - 图146 3055, 8 * MIN T A B L E U P D A T E 函 数 - 图147 40, FCOUNT T A B L E U P D A T E 函 数 - 图148 T A B L E U P D A T E 函 数 - 图149 T A B L E U P D A T E 函 数 - 图150

示 例

T A B L E U P D A T E 函 数 - 图151T A B L E U P D A T E 函 数 - 图152T A B L E U P D A T E 函 数 - 图153下面的示例演示了如何用 TABLEUPDATE 提交对缓冲表所做的更改 创建表

T A B L E U P D A T E 函 数 - 图154T A B L E U P D A T E 函 数 - 图155employees 然后用 INSERT SQL 在 cLastName 字段中插入值 “ Smith ”

T A B L E U P D A T E 函 数 - 图156T A B L E U P D A T E 函 数 - 图157T A B L E U P D A T E 函 数 - 图158T A B L E U P D A T E 函 数 - 图159T A B L E U P D A T E 函 数 - 图160T A B L E U P D A T E 函 数 - 图161T A B L E U P D A T E 函 数 - 图162作为对表缓冲的要求 MULTILOCKS 应设置为 ON 用 CURSORSETPROP 将缓冲模式设置成最佳表缓冲 5

T A B L E U P D A T E 函 数 - 图163T A B L E U P D A T E 函 数 - 图164T A B L E U P D A T E 函 数 - 图165T A B L E U P D A T E 函 数 - 图166T A B L E U P D A T E 函 数 - 图167T A B L E U P D A T E 函 数 - 图168T A B L E U P D A T E 函 数 - 图169T A B L E U P D A T E 函 数 - 图170T A B L E U P D A T E 函 数 - 图171T A B L E U P D A T E 函 数 - 图172T A B L E U P D A T E 函 数 - 图173T A B L E U P D A T E 函 数 - 图174T A B L E U P D A T E 函 数 - 图175T A B L E U P D A T E 函 数 - 图176显 示 cLastName 字段 Smith 的最初值 然后用 REPLACE 修改它 显示cLastName 字段的新值 Jones 用 TABLEUPDATE 提交更改到表中 用TABLEREVERT 代替了放弃更改 显示 cLastName 字段更新后的 值

T A B L E U P D A T E 函 数 - 图177T A B L E U P D A T E 函 数 - 图178T A B L E U P D A T E 函 数 - 图179Jones

CLOSE DATABASES

CREATE TABLE employee T A B L E U P D A T E 函 数 - 图180 cLastName C T A B L E U P D A T E 函 数 - 图181 10 T A B L E U P D A T E 函 数 - 图182 T A B L E U P D A T E 函 数 - 图183 SET MULTILOCKS ON && 表缓冲必须为 ON

T A B L E U P D A T E 函 数 - 图184T A B L E U P D A T E 函 数 - 图185= CURSORSETPROP 'Buffering', 5, 'employee' && 激活表缓冲

T A B L E U P D A T E 函 数 - 图186INSERT INTO employee T A B L E U P D A T E 函 数 - 图187 cLastName T A B L E U P D A T E 函 数 - 图188 VALUES T A B L E U P D A T E 函 数 - 图189 'Smith'

CLEAR

? 'Original cLastName value: '

T A B L E U P D A T E 函 数 - 图190T A B L E U P D A T E 函 数 - 图191?? cLastName && 显示 cLastName 当前值 Smith

REPLACE cLastName WITH 'Jones'

? 'New cLastName value: '

T A B L E U P D A T E 函 数 - 图192T A B L E U P D A T E 函 数 - 图193?? cLastName && 显示 cLastName 新值 Jones

T A B L E U P D A T E 函 数 - 图194T A B L E U P D A T E 函 数 - 图195= TABLEUPDATE .T. && 接受更新

? 'Updated cLastName value: '

T A B L E U P D A T E 函 数 - 图196T A B L E U P D A T E 函 数 - 图197?? cLastName && 显示 cLastName 当前值 Jones

请 参 阅

T A B L E U P D A T E 函 数 - 图198T A B L E U P D A T E 函 数 - 图199T A B L E U P D A T E 函 数 - 图200CURSORSETPROP T A B L E U P D A T E 函 数 - 图201 , CURVAL T A B L E U P D A T E 函 数 - 图202 T A B L E U P D A T E 函 数 - 图203 , O L D V A L T A B L E U P D A T E 函 数 - 图204 T A B L E U P D A T E 函 数 - 图205 , TABLEREVERT