天天看點

vfp學習第二天 APPEND FROM ARRAY 指令

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 隻在表中添加一條記錄。第一個數組元素的内容将填充到新添加記錄的第一個字段,第二個元素的内容将填充到記錄的第二個字段,依次類推。

如果一維數組元素的個數多于表字段數,則忽略多于的元素。如果表字段數多于數組元素的個數,多出的字段将初始化為預設的空值。下面是每種字段類型對應的預設空值:

字段類型 預設值
字元型 空格
貨币型
日期型 空日期 (如 CTOD(""))
日期時間型 空的日期時間 (如 CTOT(""))
雙精度型
浮點型
整型
邏輯型 假 (.F.)
備注型 空 (無内容)
數值型

如果數組是二維的, 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   && 添加包含數組内容的記錄
          && 到表中