S C A T T E R 命 令

从当前记录中
把数据复制到一组变量或数组中
语 法
SCATTER
[FIELDS FieldNameList
| FIELDS LIKE Skeleton | FIELDS EXCEPT Skeleton ] [ M E M O ] TO ArrayName | TO ArrayName BLANK | M E M V A R | M E M V A R
BLANK
| N A M E Ob jectName [BLANK]
参 数 描 述
FIELDS FieldNameList







指
定 字 段 命 令 将 其 内 容 传 送 到 变 量 或 数 组 中 如 果 省 略
FIELDS FieldNameList 则 传 送 所 有 字 段 如 果 在 字 段 列 表 后 放
一 个 关 键 字 M E M O 则 字 段 列 表 中 可 以 包 含 备 注 字 段
SCATTER 总 是 忽 略 通 用 和 图 片 字 段 即使 包 括 了 M E M O 关 键
字 也 是 如 此
FIELDS LIKE Skeleton | FIELDS EXCEPT Skeleton






通
过 LIKE 和 EXCEPT 子 句 有 选 择 地 把 字 段 中 的 内 容 传 送 到 变
量 或 数 组中 如 果 包 括 LIKE 子 句 那 么 与 Skeleton 相 匹 配 的
字 段 被 传 送 到 变 量 或数 组 中 如 果 包 括 EXCEPT Skeleton 那 么
除 了 与 Skeleton 相 匹 配 的 字 段 外其 他 所 有 字 段 都 传 送 到
变 量 或 数 组 中


Skeleton
支 持 通 配 符 例 如 如 果 要 把 所 有 以 A 和 P 字 母 开 头 的 字 段
传 送 到变 量 或 数 组 中 去 可 以 使 用 如 下 命 令 :
SCATTER FIELDS LIKE A *,P* TO myarray
可 以
同 时 使 用 LIKE 和 EXCEPT 子 句 如 :
SCATTER FIELDS LIKE A *,P* EXCEPT PARTNO* TO myarray
M E M O













指
定 字 段 列 表 中 包 含 了 备 注 字 段 默 认 情 况 下 SCATTER 不 处 理
备 注 字 段将很大的备注字段传送到变量或数组时 必须有足够的内存
如果缺乏足够的内存Visual FoxPro 将产生相应的错误信息
如果某一备注字段太大 内存中装不下
那么该字段及字段列表中的其他备注字段的内容都不会传送
如果没有传送备注字段 那么对应的变量或数组元素设置为 假 (.F.)
TO ArrayName


指
定 接 受 记 录 内 容 的 数 组 从 第 一 个 字 段 起 SCATTER 按 顺 序 将
每 个 字 段的 内 容 复 制 到 数 组 的 每 个 元 素 中





如
果 指 定 数 组 的 元 素 比 字 段 数 多 则 多 余 数 组 元 素 的 内 容
不 发 生 变 化 如 果指 定 数 组 不 存 在 或 者 它 的 元 素 个 数 比 字
段 数 少 则 系 统 自 动 创 建 一 个 新 数组 数 组 元 素 与 对 应 字 段
具 有 相 同 的 大 小 和 数 据 类 型
TO ArrayName B L A N K


创
建 一 个 数 组 它 的 元 素 与 表 中 字 段 具 有 相 同 大 小 和 数 据
类 型 但 没 有 内 容
M E M V A R




把
数 据 传 送 到 一 组 变 量 而 不 是 数 组 中 SCATTER 为 表 中 每 个 字
段 创 建 一 个变 量 并 把 当 前 记 录 中 各 个 字 段 的 内 容 复 制 到
对 应 的 变 量 中 新 创 建 的 变 量与 对 应 字 段 具 有 相 同 的 名 称
大 小 和 数 据 类 型

如
果 SCATTER 命 令 中 包 括 字 段 列 表 则 为 字 段 列 表 中 每 个 字 段
都 创 建 一个 变 量

要引用与当前表中字段有相同名称的变量
应在变量名前加上限定符 M .


重
要 提 示 在 使 用 M E M V A R 时 不 要 加 入 TO 如 果 加 入 了 TO
Visual FoxPro
创 建
一 个 名 为 M E M V A R 的 数 组
M E M V A R B L A N K




创
建 一 组 空 变 量 每 个 变 量 与 相 应 的 字 段 有 相 同 的 名 称 数
据 类 型 以 及 相 同的 大 小 如 果 SCATTER 中 包 含 一 字 段 列 表 则
为 字 段 列 表 中 的 每 一 个 字段 创 建 一 个 变 量
N A M E objectName [BLANK]










它
创 建 一 个 对 象 如 果 不 包 含 BLANK 关 键 字 则 对 象 的 属 性 与
表 中 字 段具 有 相 同 名 称 每 个 对 象 属 性 的 值 都 是 表 中 对 应
字 段 的 内 容 如 果 包 含BLANK 关 键 字 则 属 性 为 空 请 参 阅 EMPTY
函 数 以 了 解 不 同 字 段类 型 所 对 应 的 空 属 性
对 于 表 中 的 备 注 或 通 用 字 段 不 能 创 建 属 性


要
引 用 与 打 开 的 表 同 名 的 对 象 属 性 应 在 对 象 名 前 加 上 限
定 符 M . 例 如
USE customer
SCATTER NAME customer
? customer.company && 返回表的值
? M.customer.company && 返回对象属性的值
说 明




SCATTER
和 COPY TO ARRAY 相似 所不同的是 COPY TO ARRAY
把多个记录复制到一个数组 而 SCATTER 只将一个记录复制到数组或一组变量
并且在数组或变量不存在时 SCATTER 能自动创建
使用
GATHER 命令可以将变量或数组元素中的内容复制到表记录中
示 例
示例 1
此 示例
使用了 SCATTER 语句创建了一系列基于 test 表中字段的变量 然后为每个

字段赋值并向表添加了一个空记录
使用 GATHER 命令 将数据复制到表中
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
示例 2


此
示例 使用 SCATTER 命令及其后跟着的 NAME
子句创建了一个具有基于表中字段属性的对象
然后为对象的属性赋值并向表添加一个空记录 使用 GATHER 命令及NAME
子句将数据复制到表的新记录中
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
请 参 阅
ALINES
, APPEND FROM ARRAY , COPY TO ARRAY , DECLARE , DIMENSION , GATHER
