Show/Hide Toolbars

XSharp

Note该命令在头文件中定义,将由 X# 预处理器预处理为函数调用。如果禁用标准头文件 (-nostddefs),该命令将不可用。如果告诉编译器使用不同的标准头文件(-stddef ),则此命令也可能不可用。

用途

根据指定的键值,用另一个工作区的值替换当前工作区中的字段。

语法

UPDATE FROM <xcAlias> ON <uKeyValue> [RANDOM]REPLACE <idField> WITH <uValue>         [, <idField> WITH <uValue>...]

参数

FROM <xcAlias>用于更新当前工作区记录的工作区别名标识符。 如果没有与指定别名相关联的开放数据库文件,则会出现运行时错误。

 

ON <uKeyValue>定义 FROM 工作区中匹配记录的表达式。

 

REPLACE <idField>用新值更新当前工作区中的一个字段。

 

WITH <uValue>用于更新当前字段的值。 您必须使用正确的别名引用 FROM 工作区中包含的任何字段。

 

RANDOM如果指定,则当前工作区必须按 <uKeyValue> 排序(使用索引顺序),但 FROM 工作区记录可以按任意顺序排列。 如果未指定,则当前工作区和 FROM 工作区都必须按 <uKeyValue> 排序(逻辑上或物理上)。

描述

UPDATE 只能更新当前工作区中具有唯一键值的记录。 当一个键值有多个实例时,只能更新具有该键值的第一条记录。 然而,FROM 工作区可以有重复的键值。

 

UPDATE 在功能上等同于 DBUpdate()。

备注

已删除记录:  如果 SetDeleted() 为 FALSE,则会同时处理两个文件中的已删除记录。 被更新文件中的记录保留其已删除状态,不受 FROM 文件中记录的删除状态影响。

 

可见性:  如果 SetDeleted() 为 TRUE,则删除的记录不可见,因此不会被处理。 同样,过滤记录(使用 DbSetFilter() 或条件控制命令)也不会被处理。

 

共享模式:  对于共享数据库,UPDATE 需要对当前数据库文件加锁。 FROM 数据库文件可以在任何模式下打开。

示例

此示例用未清发票金额更新 CUSTOMER 数据库文件:

USE invoices NEW
USE customer INDEX customer NEW
UPDATE FROM Invoices ON Last;
  REPLACE Owed WITH Owed + Invoices->Amount RANDOM

程序集

XSharp.RT.DLL

参见

DBCreateIndex(), DBUpdate(), FLock(), INDEX, JOIN, REPLACE, SetUnique(), SORT, TOTAL