S C A T T E R 命 令

S C A T T E R 命 令 - 图1S C A T T E R 命 令 - 图2从当前记录中 把数据复制到一组变量或数组中

语 法

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

S C A T T E R 命 令 - 图3S C A T T E R 命 令 - 图4S C A T T E R 命 令 - 图5S C A T T E R 命 令 - 图6S C A T T E R 命 令 - 图7S C A T T E R 命 令 - 图8S C A T T E R 命 令 - 图9S C A T T E R 命 令 - 图10指 定 字 段 命 令 将 其 内 容 传 送 到 变 量 或 数 组 中 如 果 省 略 FIELDS FieldNameList 则 传 送 所 有 字 段 如 果 在 字 段 列 表 后 放 一 个 关 键 字 M E M O 则 字 段 列 表 中 可 以 包 含 备 注 字 段 SCATTER 总 是 忽 略 通 用 和 图 片 字 段 即使 包 括 了 M E M O 关 键 字 也 是 如 此

FIELDS LIKE Skeleton | FIELDS EXCEPT Skeleton

S C A T T E R 命 令 - 图11S C A T T E R 命 令 - 图12S C A T T E R 命 令 - 图13S C A T T E R 命 令 - 图14S C A T T E R 命 令 - 图15S C A T T E R 命 令 - 图16S C A T T E R 命 令 - 图17通 过 LIKE 和 EXCEPT 子 句 有 选 择 地 把 字 段 中 的 内 容 传 送 到 变 量 或 数 组中 如 果 包 括 LIKE 子 句 那 么 与 Skeleton 相 匹 配 的 字 段 被 传 送 到 变 量 或数 组 中 如 果 包 括 EXCEPT Skeleton 那 么 除 了 与 Skeleton 相 匹 配 的 字 段 外其 他 所 有 字 段 都 传 送 到 变 量 或 数 组 中

S C A T T E R 命 令 - 图18S C A T T E R 命 令 - 图19S C A T T E R 命 令 - 图20Skeleton 支 持 通 配 符 例 如 如 果 要 把 所 有 以 A 和 P 字 母 开 头 的 字 段 传 送 到变 量 或 数 组 中 去 可 以 使 用 如 下 命 令 :

SCATTER FIELDS LIKE A *,P* TO myarray

S C A T T E R 命 令 - 图21可 以 同 时 使 用 LIKE 和 EXCEPT 子 句 如 :

SCATTER FIELDS LIKE A *,P* EXCEPT PARTNO* TO myarray

M E M O

S C A T T E R 命 令 - 图22S C A T T E R 命 令 - 图23S C A T T E R 命 令 - 图24S C A T T E R 命 令 - 图25S C A T T E R 命 令 - 图26S C A T T E R 命 令 - 图27S C A T T E R 命 令 - 图28S C A T T E R 命 令 - 图29S C A T T E R 命 令 - 图30S C A T T E R 命 令 - 图31S C A T T E R 命 令 - 图32S C A T T E R 命 令 - 图33S C A T T E R 命 令 - 图34S C A T T E R 命 令 - 图35指 定 字 段 列 表 中 包 含 了 备 注 字 段 默 认 情 况 下 SCATTER 不 处 理 备 注 字 段将很大的备注字段传送到变量或数组时 必须有足够的内存 如果缺乏足够的内存Visual FoxPro 将产生相应的错误信息 如果某一备注字段太大 内存中装不下 那么该字段及字段列表中的其他备注字段的内容都不会传送 如果没有传送备注字段 那么对应的变量或数组元素设置为 假 (.F.)

TO ArrayName

S C A T T E R 命 令 - 图36S C A T T E R 命 令 - 图37S C A T T E R 命 令 - 图38指 定 接 受 记 录 内 容 的 数 组 从 第 一 个 字 段 起 SCATTER 按 顺 序 将 每 个 字 段的 内 容 复 制 到 数 组 的 每 个 元 素 中

S C A T T E R 命 令 - 图39S C A T T E R 命 令 - 图40S C A T T E R 命 令 - 图41S C A T T E R 命 令 - 图42S C A T T E R 命 令 - 图43S C A T T E R 命 令 - 图44如 果 指 定 数 组 的 元 素 比 字 段 数 多 则 多 余 数 组 元 素 的 内 容 不 发 生 变 化 如 果指 定 数 组 不 存 在 或 者 它 的 元 素 个 数 比 字 段 数 少 则 系 统 自 动 创 建 一 个 新 数组 数 组 元 素 与 对 应 字 段 具 有 相 同 的 大 小 和 数 据 类 型

TO ArrayName B L A N K

S C A T T E R 命 令 - 图45S C A T T E R 命 令 - 图46S C A T T E R 命 令 - 图47创 建 一 个 数 组 它 的 元 素 与 表 中 字 段 具 有 相 同 大 小 和 数 据 类 型 但 没 有 内 容

M E M V A R

S C A T T E R 命 令 - 图48S C A T T E R 命 令 - 图49S C A T T E R 命 令 - 图50S C A T T E R 命 令 - 图51S C A T T E R 命 令 - 图52把 数 据 传 送 到 一 组 变 量 而 不 是 数 组 中 SCATTER 为 表 中 每 个 字 段 创 建 一 个变 量 并 把 当 前 记 录 中 各 个 字 段 的 内 容 复 制 到 对 应 的 变 量 中 新 创 建 的 变 量与 对 应 字 段 具 有 相 同 的 名 称 大 小 和 数 据 类 型

S C A T T E R 命 令 - 图53S C A T T E R 命 令 - 图54如 果 SCATTER 命 令 中 包 括 字 段 列 表 则 为 字 段 列 表 中 每 个 字 段 都 创 建 一个 变 量

S C A T T E R 命 令 - 图55S C A T T E R 命 令 - 图56要引用与当前表中字段有相同名称的变量 应在变量名前加上限定符 M .

S C A T T E R 命 令 - 图57S C A T T E R 命 令 - 图58S C A T T E R 命 令 - 图59重 要 提 示 在 使 用 M E M V A R 时 不 要 加 入 TO 如 果 加 入 了 TO Visual FoxPro

S C A T T E R 命 令 - 图60创 建 一 个 名 为 M E M V A R 的 数 组

M E M V A R B L A N K

S C A T T E R 命 令 - 图61S C A T T E R 命 令 - 图62S C A T T E R 命 令 - 图63S C A T T E R 命 令 - 图64S C A T T E R 命 令 - 图65创 建 一 组 空 变 量 每 个 变 量 与 相 应 的 字 段 有 相 同 的 名 称 数 据 类 型 以 及 相 同的 大 小 如 果 SCATTER 中 包 含 一 字 段 列 表 则 为 字 段 列 表 中 的 每 一 个 字段 创 建 一 个 变 量

N A M E objectName [BLANK]

S C A T T E R 命 令 - 图66S C A T T E R 命 令 - 图67S C A T T E R 命 令 - 图68S C A T T E R 命 令 - 图69S C A T T E R 命 令 - 图70S C A T T E R 命 令 - 图71S C A T T E R 命 令 - 图72S C A T T E R 命 令 - 图73S C A T T E R 命 令 - 图74S C A T T E R 命 令 - 图75S C A T T E R 命 令 - 图76它 创 建 一 个 对 象 如 果 不 包 含 BLANK 关 键 字 则 对 象 的 属 性 与 表 中 字 段具 有 相 同 名 称 每 个 对 象 属 性 的 值 都 是 表 中 对 应 字 段 的 内 容 如 果 包 含BLANK 关 键 字 则 属 性 为 空 请 参 阅 EMPTY 函 数 以 了 解 不 同 字 段类 型 所 对 应 的 空 属 性 S C A T T E R 命 令 - 图77 对 于 表 中 的 备 注 或 通 用 字 段 不 能 创 建 属 性

S C A T T E R 命 令 - 图78S C A T T E R 命 令 - 图79S C A T T E R 命 令 - 图80要 引 用 与 打 开 的 表 同 名 的 对 象 属 性 应 在 对 象 名 前 加 上 限 定 符 M . 例 如

USE customer

SCATTER NAME customer

? customer.company && 返回表的值

? M.customer.company && 返回对象属性的值

说 明

S C A T T E R 命 令 - 图81S C A T T E R 命 令 - 图82S C A T T E R 命 令 - 图83S C A T T E R 命 令 - 图84S C A T T E R 命 令 - 图85SCATTER 和 COPY TO ARRAY 相似 所不同的是 COPY TO ARRAY 把多个记录复制到一个数组 而 SCATTER 只将一个记录复制到数组或一组变量 并且在数组或变量不存在时 SCATTER 能自动创建

S C A T T E R 命 令 - 图86使用 GATHER 命令可以将变量或数组元素中的内容复制到表记录中

示 例

示例 1

S C A T T E R 命 令 - 图87此 示例 使用了 SCATTER 语句创建了一系列基于 test 表中字段的变量 然后为每个

S C A T T E R 命 令 - 图88S C A T T E R 命 令 - 图89字段赋值并向表添加了一个空记录 使用 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

S C A T T E R 命 令 - 图90S C A T T E R 命 令 - 图91S C A T T E R 命 令 - 图92此 示例 使用 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

请 参 阅

S C A T T E R 命 令 - 图93ALINES S C A T T E R 命 令 - 图94 , APPEND FROM ARRAY , COPY TO ARRAY , DECLARE , DIMENSION , GATHER