将当前选定表中当前记录的数据替换为某个数组、一组内存变量或对象中的数据。
- GATHER FROM ArrayName | MEMVAR | NAME ObjectName
- [FIELDS FieldList | FIELDS LIKE Skeleton | FIELDS EXCEPT Skeleton]
- [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 开头的字段,可以使用下面的命令:
- GATHER FROM gamyarray FIELDS LIKE A*,P*
实例:
下例使用 GATHER 将数据复制到表的新记录中。创建Test
表之后,用 SCATTER 命令创建一组基于表中字段的变量。然后对每个字段赋值并向表中添加一条空记录。 - CREATE TABLE Test FREE ;
- (Object C(10), Color C(16), SqFt n(6,2))
- SCATTER MEMVAR BLANK
- m.Object="Box"
- m.Color="Red"
- m.SqFt=12.5
- APPEND BLANK
- GATHER MEMVAR
- BROWSE
下例用 GATHER 和 NAME 子句将数据复制到表的新记录。在创建 Test
表之后,用 SCATTER 创建具有基于表中字段属性的对象。然后为对象属性赋值,并向表添加一条空记录。
- CREATE TABLE Test FREE ;
- (Object C(10), Color C(16), SqFt n(6,2))
- SCATTER NAME oTest BLANK
- oTest.Object="Box"
- oTest.Color="Red"
- oTest.SqFt=12.5
- APPEND BLANK
- GATHER NAME oTest
- RELEASE oTest
- BROWSE
来自