USE 命 令
打开一个表及其相关索引文件 或打开一个 SQL 视图
语 法
USE[[ DatabaseName !] Table |SQLViewNam e|?] [IN n W orkArea |cTableAlias ]
[ONLINE] [ADMIN] [AGAIN ]
[NOREQUERY [ nDataSessionNumber ]] [NODATA]
[INDEX IndexFileLis t|?
[ORDER [ nIndexNumbe r |IDXF ileName
|[TAG ]TagName [OF CDXFileNam e] [ASCENDING|DESCENDING]]]]
[ALIAS cTableAlias ] [EXCLUSIVE]
[SHARED] [NOUPDATE]
参 数 描 述
[ DatabaseNam e!] TableName
指 定 要 打 开 的 表 的 名 称 尽 管 在 W indows95 和 W indowsNT 中 文 件 名 内 的空 格 是 有 意 义 的 但 要 避 免 在 V isualFoxPro 中 的 TableName 内 使 用 空 格 符如 果 表 名 中 含 有 空 格 请 用 括 号 或 括 住 表 名
要想打开一个不在当前数据库中的表 在表名前加数据库的名称 中间用叹号分隔 如果不包含数据库的名称 MicrosoftVisualFoxPro 只能在当前数据库中打开表 如果数据库名或表名或者两者中都含有空格 请用括号 或 括住数据库存名和表名
SQLViewName
指 定 位 于 当 前 数 据 库 内 要 打 开 的 SQL 视 图 的 名 称 SQL 视 图 可 以 用CREATESQLVIEW 命 令 创 建 SQLViewName 可 作 为 使 用CREATEOFFLINE() 创 建 的 游 离 视 图 的 名 称
?
显 示 使 用 对 话 框 可 以 从 对 话 框 中 选 择 要 打 开 的 表
IN n W orkArea
指 定 要 打 开 表 所 在 的 工 作 区 带 有 IN 子 句 和 工 作 区 编 号 的 USE 命 令 可 以关 闭 指 定 工 作 区 中 的 表
在 IN 子句中 0 可作为工作区号 指定 0 可以在最低可用的工作区中打开表 例如 如果工作区 1 至工作区 10 中都有表打开 那么下面的命令将在工作区 11 中打开
customer 表
USEcustomerIN0
IN cTableAlias
指 定 在 当 前 工 作 区 中 打 开 表 打 开 表 的 别 名 用 cTableAlias 指 定如果省略 nWorkArea 和 cTableAlias 参数 则在当前工作区中打开表ONLINE
打 开 一 个 游 离 视 图 ( offlineview) 有 关 游 离 视 图 的 创 建 请 参 见
CREATEOFFLINE() 要 打 开 的 游 离 视 图 的 名 称 由 SQLViewName 指 定 使 用ONLINE 打 开 游 离 视 图 后 您 可 用 TABLEUPDATE() 将 它 的 改 变 更 新 到 服 务器 中
使用 ONLINE 打开游离视图只能采用独占方式 所以应在 USE 命令中同时使用
EXCLUSIVE 子句 或在 USE 命令前使用 SETEXCLUSIVEON
ADMIN
打 开 一 个 游 离 视 图 而 且 打 开 的 目 的 是 为 了 操 作 其 中 的 数 据 而 不 是 将 游 离视 图 中 的 更 改 更 新 到 服 务 器 中 有 关 游 离 视 图 的 创 建 请 参 见CREATEOFFLINE() 使 用 A D M IN 打 开 游 离 视 图 后 可 以 对 它 进 行 修 改 而不 会 影 响 服 务 器 中 的 数 据
AGAIN
若 要 同 时 在 多 个 工 作 区 中 打 开 一 个 表 可 以 按 以 下 方 法 操 作
-
选
择 另 一 个 工 作 区 并 且 执 行 带 有 表 名 和 AGAIN 子 句 的 USE 命 令
-
执
行 带 有 表 名 和 AGAIN 子 句 的 USE 命 令 并 且 用 IN 子 句 指 定 一 个 不 同
的 工 作 区
当在另一个工作区中再次打开一个表时 在新工作区中的表继承了原工作区中的表的属性 例如 如果一个表以只读或独占访问方式打开 然后又在另一个工作区中打开 那么在新的工作区中该表也以只读或独占访问方式打开
当再次打开表时 如果没有打开索引 则使用为原表打开的索引文件 在再次打开该表的工作区中 设置索引序号为 0
即使初始表没有打开索引 也可以在再次打开该表时打开索引 这将把初始表的索引序号设置成 0
再次打开的表被赋予工作区的默认别名 在多个工作区中打开一个表时 每次可以包含一个别名 只要这些别名不重复就可以
在 VisualFoxPro 中 在另一个工作区中再次打开某个表并不占用额外的文件句柄
NOREQUERY [ nDataSessionNumber ]
指 定 远 程 SQL 视 图 的 数 据 不 再 下 载 NOREQUERY 仅 用 于 SQL 视 图 并 且主 要 用 在 当 AGAIN 子 句 再 次 打 开 一 个 SQL 视 图 的 时 候 包 含NOREQUERY 子 句 可 以 增 加 大 型 数 据 集 合 的 操 作 性 能 因 为 数 据 不 需 要 再 次下 载
nDataSessionNumber 可以指定在某一数据工作期中的远程 SQL 视图内的数据不被再次下载 如果省略了 nDataSessionNumber 则不下载在当前数据工作期中打开的视图
有关 NOREQUERY 子句的详细内容 请参阅 MicrosoftVisualFoxPro6.0 中文版程序员指南 的第八章 创建视图
N O D A T A
指 定 仅 下 载 SQL 视 图 的 结 构 不 下 载 SQL 视 图 的 数 据 NODATA 提 供 了 确定 SQL 视 图 结 构 的 最 快 捷 方 法
有关 NODATA 子句的详细内容 请参阅 MicrosoftVisualFoxPro6.0 中文版程序员指南 的第八章 创建视图
INDEX IndexFileList
指 定 一 组 和 表 一 起 打 开 的 索 引 如 果 表 具 有 结 构 复 合 索 引 文 件 该 索 引 文 件自 动 与 表 一 起 打 开
IndexFileList 可以包含任何 .IDX 单项索引文件和 .CDX 复合索引文件的文件名 除非在索引文件列表中的 .IDX 和 .CDX 索引文件具有相同的文件名 否则无须为索引文件加扩展名
在索引文件列表中的第一个索引文件是主控索引文件 该文件控制表中的记录如何访问和显示 然而 如果第一个索引文件是一个 .CDX 复合索引文件 则表中的记录按记录的物理顺序显示和访问
INDEX?
显 示 打 开 对 话 框 列 出 所 有 可 供 选 择 的 索 引 文 件
ORDER [ nIndexNumber ]
指 定 一 个 主 控 的 .ID X 单 项 索 引 文 件 或 .CDX 复 合 索 引 文 件 标 识 而 不 是 使 用在 IndexFileList 中 指 定 的 第 一 个 索 引 文 件 或 索 引 标 识 作 为 主 控 索 引
索引编号按如下方式 首先编号 .IDX 索引文件 编号顺序是其出现在索引文件列表中的顺序 然后对结构复合索引文件 如果存在 中的标识按其创建顺序编号 最后
对任何独立的复合索引文件的标识按其创建顺序编号 也可以使用 SETORDER 来指定
主控索引文件或标识 有关索引文件和标识编号的详细内容 请参阅 SETORDER
如果 nIndexNumber 为 0 表中的记录将按物理记录顺序显示和访问 且各索引继续保持打开状态 尽管包含 ORDER0 将以记录号顺序展现文件 但仍允许对已打开索引文件的更新 不加 nIndexNumber 的 ORDER 子句与 ORDER0 意义相同
ORDER [ IDXF ileName ]
指 定 一 个 .ID X 单 项 索 引 文 件 作 为 主 控 索 引 文 件
ORDER[TAG TagNam e ][OF CDXFileNam e]
指 定 .CDX 复 合 索 引 文 件 中 的 主 控 标 识 标 识 名 可 以 是 来 自 结 构 复 合 索 引 文件 或 任 何 其 他 打 开 的 复 合 索 引 文 件 如 果 在 已 打 开 的 各 复 合 索 引 文 件 中 存 在相 同 的 标 识 名 则 应 包 含 O F CDXFileName 并 且 指 定 复 合 索 引 文 件 名
ASCENDING
指 定 表 中 的 记 录 按 升 序 访 问 和 显 示
DESCENDING
指 定 表 中 的 记 录 按 降 序 访 问 和 显 示
包含 ASCENDING 或 DESCENDING 子句并不改变索引文件或标识 而仅仅改变记录显示和访问的顺序
ALIAS cTableAlias
创 建 表 的 别 名 可 以 在 需 要 或 支 持 别 名 的 命 令 和 函 数 中 用 别 名 来 引 用 表
打开表时 系统自动给它指定一个别名 如果不含 ALIAS 子句 那么就用该表的名称作为表的别名 但也可以包含 ALIAS 子句和一个新别名来为表创建一个不同的别名
在 VisualFoxPro 中 别名可以包含多达 254 个字母 数字或下划线 并且必须以字母或
下划线开头 在 其 他 FoxPro 版本中 别名最多可包含 10 个字母 数字或下划线 并且必须以字母或下划线开头
如果使用 AGAIN 子句在多个工作区中同时打开一个表 并且在每个工作区中打开该表
时不指定别名 那么每次将自动赋给该表一个默认的别名 指定的别名发生冲突时 也赋给该表一个默认的别名 例如CLOSEDATABASES
OPENDATABASE(HOME(2)+'Data\testdata') ACTIVATEWINDOWView&& 打开查看窗口USEcustomerALIASordersIN1&& 别名是 ORDERS USEordersIN3&& 冲突 别名是 C
EXCLUSIVE
在 网 络 上 以 独 占 使 用 方 式 打 开 表 有 关 表 的 独 占 使 用 的 详 细 内 容 请 参 阅
SETEXCLUSIVE SHARED
在 网 络 上 以 共 享 使 用 方 式 打 开 表 用 SHARED 子 句 打 开 一 个 表 时 即 使
EXCLUSIVE 设 置 成 ON 此 表 也 将 以 共 享 方 式 使 用
NOUPDATE
禁 止 更 改 表 及 其 结 构
说 明
如果不加表名执行 USE 命令 并且在当前工作区中已经打开了一个表文件 则关闭这个表 同样 在一个工作区中打开另一个表时 原来在该工作区中打开的表自动关
闭 不能在同一个工作区中同时打开多个表
示 例
下面的示例在三个不同的工作区中打开了三个表 数据工作期 窗口也被打开以显示打开表的地点和每个表的别名
CLOSEDATABASES
OPENDATABASE(HOME(2)+'Data\testdata') ACTIVATEWINDOWView
USE customerIN 0&& 打开 Customer 表USE employee IN 0&& 打开 Employee 表USE products IN 0&& 打开 Products 表
请 参 阅
CREATE ,CREATESQLVIEW ,CREATETABLE- SQL , CREATEOFFLINE() ,DBF() ,INDEX , USED()