请各位大侠不吝赐教
APPEND FROM ARRAY 命令
对数组中的每一行,添加一条记录到当前选定表中,并从相应的数组行中取出数据添加到记录中。
APPEND FROM ARRAY ArrayName [FOR lExpression]
[FIELDS FieldList | FIELDS LIKE Skeleton | FIELDS EXCEPT Skeleton]
参数
ArrayName
Specifies指定数组名,该数组包含要复制到新记录中的数据。命令将把数组中所有的行都添加到表中。
FOR lExpression
为数组中用于追加的记录指定条件。在 lExpression 条件表达式中必须包含目标字段名。在数据中的行追加到表中的记录之前,先检查与 lExpression 中指定的目标字段对应的数组元素是否满足 lExpression中的条件。如果数组元素满足条件,则将记录追加到表中。如果数组元素不满足条件,这一数组行不追加到表中,并继续检查下一行。
FIELDS FieldList
指定只有 FieldList 列表中的字段才从数组进行更新。列表中的第一个字段用湖组第一个元素的内容更新,第二个字段用第二个元素更新,依次类推。
FIELDS LIKE Skeleton
指定从数组中更新与字段梗概 Skeleton 匹配的字段。
FIELDS EXCEPT Skeleton
指定从数组中更新所有与字段梗概 Skeleton 不匹配的字段。字段梗概 Skeleton 支持通配符。例如,为了指定从数组更新所有以字母 A 和 P 开头的字段,可以使用下面语句: 复制代码
APPEND FROM ARRAY aMyArray FIELDS LIKE A*,P*
LIKE 子句可以与 EXCEPT 子句组合使用: 复制代码
APPEND FROM ARRAY aMyArray FIELDS LIKE A*,P* EXCEPT PARTNO*
说明
APPEND FROM ARRAY 命令忽略 备注型、通用型 和 大二进制对象型(Blob) 字段。*NEW
如果表处于打开状态并被共享使用,在追加记录时,APPEND FROM ARRAY 命令将锁定表头。
如果数组是一维的,则 APPEND FROM ARRAY 只在表中添加一条记录。第一个数组元素的内容将填充到新添加记录的第一个字段,第二个元素的内容将填充到记录的第二个字段,依次类推。
如果一维数组元素的个数多于表字段数,则忽略多于的元素。如果表字段数多于数组元素的个数,多出的字段将初始化为默认的空值。下面是每种字段类型对应的默认空值:
字段类型 默认值
字符型
空格
货币型
0
日期型
空日期 (如 CTOD(""))
日期时间型
空的日期时间 (如 CTOT(""))
双精度型
0
浮点型
0
整型
0
逻辑型
假 (.F.)
备注型
空 (无内容)
数值型
0
如果数组是二维的, APPEND FROM ARRAY 为数组中的每一行在表中添加一条新记录。例如,如果数组有4行,则在表中追加4条新记录。
数组中第一列的内容填充到新添加记录的第一个字段,第二列内容填充到新添加记录的第二个字段,依次类推。例如,如果数组有4行3列,数组中的第一列元素分别填充到4条新记录的第一个字段。
如果二维数组的列数多于表中的字段数,多于的列将被忽略。如果表字段数多于数组列数,多出的字段将初始化为空值。
如果数据元素数据与相应的字段数据类型兼容,那么即使相应的数组元素的数据类型与字段数据类型不匹配,APPEND FROM ARRAY 也能够填充该字段。如果数据不兼容,字段将被初始化为空值。
如果目标表中使用了自动增量(autoincrement),当 SET AUTOINCERROR 为 ON时则APPEND FROM ARRAY 会失败,除非 FIELDS 选项中省略了 AUTOINC 列。设置 AUTOINCERROR 为 OFF 或用 CURSORSETPROP( ) 关闭了目标表的自动增量(autoincrement) ,则允许 APPEND FROM ARRAY 取得成功。目标表的自动增量(autoincrementing)字段 或按指定值递增的字段,和源表中的值不适用。*NEW
示例
本示例创建一张表,然后使用 APPEND FROM ARRAY 命令向新表中添加一条记录。
LOCAL ARRAY aNewRec(3)
* 创建自由表Test
CREATE TABLE Test FREE (Object C(10), Color C(16), SqFt n(6,2))
SCATTER TO aNewRec BLANK && 从表中创建一个新数组
aNewRec[1]="Box" && 填充数组
aNewRec[2]="Red"
aNewRec[3]=12.5
APPEND FROM ARRAY aNewRec && 添加包含数组内容的记录
&& 到表中