append from array 命令
對數組中的每一行,添加一條記錄到當前選定表中,並從相應的數組行中取出數據添加到記錄中。
語法
APPEND FROM ARRAY ArrayName
[FOR lExpression]
[FIELDS FieldList
| FIELDS LIKE Skeleton
| FIELDS EXCEPT Skeleton]
參數
ArrayName
指定數組名,該數組包含要複製到新記錄中的數據。命令將把數組中所有的行都追加到表中。
FOR lExpression
為數組中用於追加的記錄指定條件。在 lExpression 條件表達式中必須包含目標欄位名。
在數組中的行追加到表中的記錄之前,先檢查與 lExpression 中指定的目標欄位對應的數組元素是否滿足 lExpression 中的條件。如果數組元素滿足條件,則將記錄追加表中。
如果數組元素不滿足條件,這一數組行不追加到表中,並繼續檢查下一行。
FIELDS FieldList
指定只有 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 命令中,備註欄位和通用欄位將被忽略。如果表處於打開狀態並被共享使用,在追加記錄時,APPEND FROM ARRAY 命令將鎖定表頭。
如果數組是一維的,append from array 命令只在表中添加一個記錄。第一個數組元素的內容將填充到新添加記錄的第一個欄位,第二個元素的內容將填充到記錄的第二欄位,… 依此類推。
如果一維數組元素的個數多於表字段數,將忽略多餘的元素。如果表欄位數多於數組元素的個數,多出的欄位將初始化為默認的空值。下面給出了各種欄位類型對應的默認空值。
欄位類型 默認值
字元型 空格
數值型 0
貨幣型 0
浮點型 0
整型 0
雙精度型 0
日期型 空日期 例如 CTOD(''))
時間型 空的日期時間型 例如 CTOT(''))
邏輯型 假(.F.)
備註型 空 無內容
當指定數組為二維數組,則為數組中的每一行在表中添加一個新記錄。例如,如果數組有 4 行,則在表中追加 4 個新記錄。
數組中第一列的內容賦值給新添加記錄的第一個欄位,第二列內容賦值給新記錄的第二個欄位,依此類推。例如,數組有四行三列,數組中的第一列元素分別賦值給四個新記錄的第一個欄位。
如果二維數組的列數多於表中的欄位數,多餘的列將被忽略。如果表欄位數多於數組列數,多出的欄位將初始化為空值 (empty value)。
例如數組元素數據與相應的欄位數據類型兼容,那么即使相應的數組元素的數據類型與欄位數據類型不匹配,APPEND FROM ARRAY也能填充欄位。如果數據不兼容,欄位將被初始化為空值。
append from array示例
下面的示例將複製備註欄位 notes的內容到名為test.txt 的檔案中。 test.txt 則被追加到備註欄位的內容中。最後, test.txt 的內容替換了備註欄位的現有內容。
close databases
open database (home(2) + 'data\testdata')use employee && 打開 employee 表
wait window 'employee notes memo field - press esc' nowait
modify memo notes noedit && 打開 notes 備註欄位
copy memo notes to test.txt && 從備註欄位創建 test檔案
wait window 'test.txt text file - press esc' nowait
modify file test.txt noedit && 打開 text檔案
wait window 'employee notes now appended - press esc' nowait
append memo notes from test.txt && 將text 檔案的內容加入
modify memo notes noedit && 再次顯示備註欄位
wait window 'overwrite employee notes- press esc' nowait