将当前选定表中当前记录的数据替换为某个数组、一组内存变量或对象中的数据。

 
  1. GATHER FROM ArrayName | MEMVAR | NAME ObjectName 
  2.    [FIELDS FieldList | FIELDS LIKE Skeleton | FIELDS EXCEPT Skeleton] 
  3.    [MEMO] 

参数

FROM
ArrayName
指定一个数组,用它的数据替换当前记录中的数据。从数组的第一个元素起,各个元素的内容依次替换记录中相应字段的内容。第一个数组元素的内容替换记录的第一个字段的内容;第二个数组元素的内容替换记录第二个字段的内容,以此类推。如果数组的元素少于表的字段数目,则忽略多余的字段。如果数组的元素多于表的字段数目,则忽略多余的数组元素。
MEMVAR
指定一组内存变量或数组,把其中的数据复制到当前记录中。内存变量的数据将传送给与此内存变量同名的字段。如果没有与某个字段同名的内存变量,则不替换此字段。

在 SCATTER 命令中包含 MEMVAR 或 BLANK 子句,可以创建与字段同名的内存变量。

NAME
ObjectName
指定一个对象,其属性与表的字段同名。每个字段的内容分别替换为与字段同名的属性的值。如果没有与某个字段同名的属性,则此字段的内容不做替换。
FIELDS
FieldList
指定字段,用数组元素或内存变量的内容替换指定字段的内容。只替换用
FieldList 指定的字段的内容。
FIELDS LIKE
Skeleton | FIELDS EXCEPT
Skeleton
通过包含 LIKE 子句或 EXCEPT 子句,或同时包含二者,可以有选择的将字段内容替换为数组元素或内存变量的内容。如果包含 LIKE
Skeleton,Visual FoxPro 将替换与
Skeleton 匹配的字段。如果包含 EXCEPT
Skeleton,Visual FoxPro 将替换与
Skeleton 不匹配的所有字段。
Skeleton 支持通配符(* 和 ?)。例如,要替换所有以字母 A 和 P 开头的字段,可以使用下面的命令:
 
  1. GATHER FROM gamyarray FIELDS LIKE A*,P* 
MEMO
指定用数组元素或内存变量的内容替换备注字段或大对象型(Blob)字段的内容。如果省略 MEMO,则在用数组或内存变量的内容替换字段内容时,GATHER 命令将跳过备注型和大对象型(Blob)字段。即使包含了 MEMO 关键字,GATHER 命令也忽略通用字段和图片字段。

实例:

下例使用 GATHER 将数据复制到表的新记录中。创建
Test 表之后,用 SCATTER 命令创建一组基于表中字段的变量。然后对每个字段赋值并向表中添加一条空记录。
 
  1. CREATE TABLE Test FREE ; 
  2.    (Object C(10), Color C(16), SqFt n(6,2)) 
  3. SCATTER MEMVAR BLANK 
  4. m.Object="Box" 
  5. m.Color="Red" 
  6. m.SqFt=12.5 
  7. APPEND BLANK 
  8. GATHER MEMVAR 
  9. BROWSE 

下例用 GATHER 和 NAME 子句将数据复制到表的新记录。在创建 Test 表之后,用 SCATTER 创建具有基于表中字段属性的对象。然后为对象属性赋值,并向表添加一条空记录。

 
  1. CREATE TABLE Test FREE ; 
  2.    (Object C(10), Color C(16), SqFt n(6,2)) 
  3.  
  4. SCATTER NAME oTest BLANK 
  5. oTest.Object="Box" 
  6. oTest.Color="Red" 
  7. oTest.SqFt=12.5 
  8. APPEND BLANK 
  9. GATHER NAME oTest 
  10. RELEASE oTest 
  11. BROWSE 

来自