关于使用 Microsoft Query 检索外部数据

本主题包含以下信息：

关于 Microsoft Query

建立数据源

定义查询

在 Microsoft Excel 中处理数据

关于 Microsoft Query

Microsoft Query 是用于将数据从外部数据源检索到其他 Microsoft Office 程序（特别是 Microsoft Excel）中的一种程序。通过使用 Query 可以从企业的数据库和文件中检索数据，而不必重新键入需要在 Excel 中分析的数据。也可以在每次更新数据库时，自动通过源数据库中的数据来更新 Excel 报表和汇总数据。

可访问的数据库类型 可从以下类型的数据库中检索数据：Microsoft Access、Microsoft SQL Server 和 Microsoft SQL Server OLAP Services。也可以从 Excel 清单和文本文件中检索数据。请参阅可访问的数据库类型列表。

在 Excel 中，也可从网页上检索数据，但并不需要用 Query 进行此项工作。有关从网页上检索数据的信息，请参阅 Excel 的“帮助”。

从数据库中选择数据 通过创建查询，用户可以从外部数据库上检索数据，形象地说，查询就是向外部数据库提出的一个问题，用以了解数据的存储情况。例如，对于存储在 Access 数据库中的数据，如果要了解不同地区内某一产品的销售数据，则可以仅检索需要的数据，方法是：选择只与要分析的地区和产品有关的数据，而省略其他不需要的数据。

在 Query 中选择数据的示例

用户通过 Query 可选择所需的数据列，并仅向 Excel 中引入所需的数据。

使用一步操作更新工作表 在 Excel 工作表中引入外部数据后，无论何时更改了数据库，都可以刷新数据以更新分析结果，而不需要重新创建汇总报表和图表。例如，可以创建每月销售汇总，并在每月产生新的销售数字时进行刷新。

使用 Query 检索数据 通过 Query 向 Excel 中引入外部数据需要以下三步：首先建立数据源以连接数据库，然后使用“查询向导”选择所需数据，最后将数据返回到 Excel 中，在 Excel 中用户可以设置数字的格式、进行汇总计算并根据数据创建报表。

返回页首

建立数据源

关于数据源 数据源是一组使 Microsoft Excel 和 Microsoft Query 连接到外部数据库的存储信息。使用 Query 建立数据源时，应该先为数据源设置一个名称，然后给出数据库或服务器的名称和位置、数据库的类型以及密码和登录信息。这些信息还包括 ODBC 驱动程序或数据源驱动程序的名称，ODBC 驱动程序或数据源驱动程序是用于连接到特定类型数据库的一种程序。对于有些类型的外部数据库（OLAP 多维数据集），只要建立数据源后就可检索数据了。

Query 如何使用数据源 如果已为特定数据库建立了数据源，则每次要从该数据库中选择或检索数据时，您都可以使用该数据源，而不必重新键入所有的连接信息。Query 通过数据源连接到外部数据库并显示可用的数据。在创建了查询并将数据返回给 Excel 后，Query 就会检索数据并为 Excel 工作簿提供该查询和数据源的信息，这样在每次刷新数据时，就可以重新连接到该数据库上。

数据源是 Query 和 Excel 连接特定数据库和检索数据的途径。

返回页首

定义查询

多数查询使用“查询向导” “查询向导”是 Microsoft Query 的一部分，它是为要创建查询的新用户设计的。使用该向导可以轻松地从数据库的不同表和字段中选择和检索数据。在选择完数据后，也可以使用该向导对查询结果进行筛选和排序。可以使用“查询向导”创建一个完整的查询，或者也可以用它来启动一个查询，而用户可以直接在 Qurey 中对查询进行更改。

直接在 Query 中使用其他类型的查询 如果对创建查询很熟悉或想要创建复杂查询，则可以直接使用 Query。可以用 Query 查看和更改在“查询向导”中创建的查询，或者也可以不使用向导新建查询。

在要创建执行以下任务的查询时，请直接使用 Query：

  • 选择某个字段中的特定数据 在较大的数据库中，有时需要选择某个字段中的某些数据而忽略不需要的数据。例如，对于一个包含很多产品的字段，用户可能只需要两种产品的数据，那么您可以使用条件仅选择所需的两种产品的数据。请查阅使用条件。
  • 每次运行查询时根据不同条件检索数据 如果需要为相同外部数据的多个区域创建相同的 Excel 报表或汇总（例如：每个地区的单独销售报表），则可以创建一种称为参数查询的查询。运行参数查询时，查询将提示用户输入用于选择记录的条件数据。例如，参数查询可提示用户输入特定的地区，这样，就可以重复使用此查询来创建各个地区的销售报表。请了解参数查询。
  • 以不同方式合并数据 可以使用 Query 合并或连接来自数据库中不同表的数据。例如，如果有一张产品销售信息表和一张顾客信息表，则可以按某种方式连接这些表，用以显示哪些顾客最近没有购买物品。请了解连接表。

通过查询得到的数据创建 OLAP 多维数据集 联机分析处理 (OLAP) 是一种组织数据的方式，它用于查询和制作报表，而不用于处理事务。在 OLAP 数据库中，数据按分级结构组织并存储在多维数据集（而不是表）中。

可以利用 Query 通过查询获得的数据创建 OLAP 多维数据集，这使得用户通过该数据创建 Microsoft Excel 报表变得既省时又省力。若要创建 OLAP 多维数据集，请在“查询向导”或直接从 Query 中运行“OLAP 多维数据集”。可以将数据作为数据透视表返回 Excel。请了解根据查询数据创建 OLAP 多维数据集。

其他信息

何时使用“查询向导”与 Microsoft Query

返回页首

在 Microsoft Excel 中处理数据

不论在“查询向导”还是在 Microsoft Query 中创建查询后，都可以将检索到的数据返回 Microsoft Excel 工作表。这些数据将成为可设置格式、进行分析和刷新的外部数据区域或数据透视表。

设置数据格式和分析数据 用户可以在 Excel 中使用熟悉的工具（例如“图表向导”或自动分类汇总）来显示和汇总数据。还可以设置数据的格式，在刷新来自源数据库的外部数据时这些格式会被保留。如果向外部数据区域中添加公式列时，这些公式会自动复制到任意新行中，这些新行是在刷新数据时添加到数据区域中的。用户可以使用自己的列标志而不使用字段名，系统还会自动添加行号。有关控制外部数据区域中格式和布局的详细信息，请参阅 Excel 中的“帮助”。

重新使用和共享查询 在“查询向导”和 Query 中，可以保存 .dqy 查询文件，用户可以修改、重新使用和共享此文件。Excel 可以直接打开 .dqy 文件，这使得用户可以根据同一个查询创建新增的外部数据区域。

如果要共享基于外部数据的汇总或报表，则可以向其他用户提供含有外部数据区域的工作簿，或是创建报表模板。报表模板使得用户可以在不保存外部数据的前提下保存汇总或报表，这样文件会小一些。而每当用户打开报表模板时，就会检索外部数据。有关创建报表模板的详细信息，请参阅 Excel 中的“帮助”。

刷新外部数据 刷新外部数据时，可以运行查询来检索满足指定条件的新数据或已更改的数据。Excel 提供了多种选项来更新查询，其中包括：在打开工作簿时刷新数据和每隔一段时间自动刷新数据。刷新数据时，用户可以继续使用 Excel，也可以检查刷新时的状态。有关在 Excel 中刷新外部数据的详细信息，请参阅 Excel 中的“帮助”。

返回页首


获取关于 Microsoft Query 的程序信息

  • 在 Microsoft Query 的“帮助”菜单上，单击“关于 Microsoft Query”。

    程序信息（包括版本号）将出现在“关于 Microsoft Query”对话框内。


使用 Microsoft Query 中的快捷键

请选择：

用快捷键在 Microsoft Query 的窗格中移动

用快捷键选定数据和条件

用快捷键编辑数据和条件

Microsoft Query 的功能键

在“OLAP 多维数据集向导”中使用快捷键


用快捷键在 Microsoft Query 的窗格中移动

本主题中的部分内容可能不适用于某些语言。

在“表”窗格中移动

按 | 到
Tab | 在表之间移动
向上键或向下键 | 移到并选定表中的字段名称
Shift+向上键或 Shift+向下键 | 在表中选择连续的字段或取消选择。

在“数据”窗格或“条件”窗格的行或列之间移动

按 | 到
按 F5，在“记录”框内键入记录编号，然后按 Enter | 移到“数据”窗格中的特定记录（行）
Tab、Enter 或向右键 （从选定单元格开始） | 移到“数据”窗格的下一列
Shift+Tab、Shift+Enter 或向左键 （从选定单元格开始） | 移到当前行的前一列或上一条记录的最后一个字段
End | 移到当前行的最后一列
Ctrl+End | 移到最后一行中的最后一列上
Home | 移到当前行中的第一列上
Ctrl+Home | 移到第一行中的第一列上
向下键 | 移到下一行中的当前列上
Ctrl+向上键 | 移到最后一行中的当前列上
向上键 | 移到上一行中的当前列上
Ctrl+向上键 | 移到第一行中的当前列上

在“数据”窗格或“条件”窗格的单元格的值内移动插入点

按 | 到
F2 | 取消选定区域并在选定单元格内显示插入点
向右键 | 右移一个字符
Ctrl+向右键 | 右移一个单词
向左键 | 左移一个字符
Ctrl+向左键 | 左移一个单词
End | 在单行值或多行值内移到当前行的行尾
Ctrl+End | 移到多行值的末尾
Home | 在单行值或多行值内移到当前行的行首
Ctrl+Home | 移到多行值的开头

在“数据”窗格或“条件”窗格的屏幕之间移动

按 | 到
Page Down | 在窗格内下移一屏
Page Up | 在窗格内上移一屏
Ctrl+Page Down | 在窗格内右移一屏
Ctrl+Page Up | 在窗格内左移一屏


用快捷键选定数据和条件

选定列内的值

按 | 到
F2 | 选定当前值，或取消选定并显示插入点
Tab、Enter 或向右键（从选定单元格开始） | 选定下一列中的值
Shift+Home | 选定从插入点到开头的部分
Shift+End | 选定从插入点到结尾的部分
Shift+向右键 | 将选定部分向右扩展一个字符，或将选定部分左边一个字符取消选定
Ctrl+Shift+向右键 | 将选定部分向右扩展一个单词，或将选定部分左边一个单词取消选定
Shift+向左键 | 将选定部分向左扩展一个字符，或将选定部分右边一个字符取消选定
Ctrl+Shift+向左键 | 将选定部分向左扩展一个单词，或将选定部分右边一个单词取消选定

选定行

按 | 到
Shift+空格键 | 选定当前行
向下键 | 在当前行处于选定状态的情况下，选定下一行
向上键 | 在当前行处于选定状态的情况下，选定上一行
Shift+向下键 | 将选定区域向下扩展一行，或将选定区域顶部的一行取消选定
Shift+向上键 | 将选定区域向上扩展一行，或将选定区域底部的一行取消选定
Shift+Page Down | 将选定区域向下扩展一屏
Shift+Page Up | 将选定区域向上扩展一屏
Ctrl+Shift+空格键 | 选定整个结果集

选定列

按 | 到
Ctrl+空格键 | 选定当前列
向右键 | 在当前列处于选定状态的情况下，选定右边一列
向左键 | 在当前列处于选定状态的情况下，选定左边一列
Shift+向左键 | 将选定区域向左扩展一列，或将选定区域右边的一列取消选定
Shift+向右键 | 将选定区域向右扩展一列，或将选定区域左边的一列取消选定
Ctrl+Shift+Page Down | 将选定区域向右扩展一屏
Ctrl+Shift+Page Up | 将选定区域向左扩展一屏


用快捷键编辑数据和条件

复制、剪切、粘贴或删除

按 | 到
Ctrl+C | 将当前选定区域的内容复制到剪贴板上
Ctrl+V | 将剪贴板上的内容粘贴到插入点后
Ctrl+X | 剪切当前选定区域的内容，并将其复制到剪贴板上
Backspace | 删除当前选定区域的内容，或删除插入点左边的一个字符
Delete | 删除当前选定区域的内容，或删除插入点右边的一个字符

在“数据”窗格中放大字段以便进行编辑

按 | 到
Shift+F2 | 打开“缩放字段”对话框可更方便地在“数据”窗格的较小输入区中输入数据


Microsoft Query 的功能键

本主题中的部分内容可能不适用于某些语言。

按 | 到
F1 | 切换到“帮助”窗口
Shift+F1，再按 Enter | 获取当前选定对象的快捷帮助
F2 | 选定或取消当前选定的值
Alt+Shift+F2 或 Shift+F12 | 用“保存”命令保存查询
Alt+F2 或 F12 | 用“另存为”命令保存查询
Shift+F2 | 打开“缩放字段”对话框，在“数据”窗格的较小输入区内方便地输入数据
Ctrl+F4 | 关闭活动查询
Alt+F4 | 退出 Microsoft Query
按 F5，在“记录”框内键入记录编号，然后按 Enter | 移到“数据”窗格中的特定记录（行）
F6 | 移到查询窗口的下一窗格
Shift+F6 | 移到查询窗口的上一窗格
Ctrl+F6 | 切换到打开的下一个查询窗口
Ctrl+Shift+F6 | 切换到打开的上一个查询窗口
F9 | 运行当前打开的查询


在“OLAP 多维数据集向导”中使用快捷键

使用这些键来完成“OLAP 多维数据集向导”中的步骤 2。

若要将字段从“源”字段列表中移动到“维”框中

  1. 按 Tab 选择“源字段”列表。
  2. 按向上键或向下键选择要移动的字段。
  3. 按 Tab 选择“>”按钮，再按 Enter。
  4. 重复操作步骤 1 到步骤 3 以移动其他字段。

若要在“维”框中将字段移动到维中的更低或更高级别

  1. 按 Tab 选择“维”框。
  2. 按向上键或向下键选择要移动的字段。
  3. 按 Ctrl+X。
  4. 按向上或向下键选择将字段移动的目标位置。
  5. 按 Ctrl+V。


安装 ODBC 驱动程序以便访问外部数据源

安装 Query 时，Microsoft 在 Microsoft Query 中所提供的 ODBC 驱动程序也会全部安装到计算机上。请参阅随 Query 安装的 ODBC 驱动程序列表。

如果这些 ODBC 驱动程序并不支持要访问的外部数据库，则需要从第三方供应商（如数据库制造商）获取并安装与 Microsoft Office 兼容的 ODBC 驱动程序。有关安装说明，请与数据库经销商联系。

注释 OLAP 数据库并不需要 ODBC 驱动程序。在安装 Query 时，就已经安装了一些驱动和支持程序，可用于访问 Microsoft SQL Server OLAP Services 创建的数据库。若要连接到其他 OLAP 数据库，则需要安装数据源驱动程序和用户端软件。请了解第三方 OLAP 提供程序。


安装 OLAP 提供程序

若要连接提供 OLAP 数据和服务的第三方产品，则需要安装 OLAP 提供程序软件。该软件中包含附加的数据源驱动程序和用户端软件，以允许用户连接服务器上的第三方 OLAP 数据库。

如果要利用 Microsoft Office 功能处理 OLAP 数据，则第三方 OLAP 提供程序必须与 Office 兼容。该提供程序可能支持或不支持脱机多维数据集文件。可以通过第三方 OLAP 数据库所提供的源数据创建 Microsoft Excel 数据透视表，从而验证该提供程序是否支持脱机多维数据集文件。在数据透视表中，如果提供程序不支持脱机多维数据集文件，则“数据透视表”菜单（“数据透视表”工具栏）上的“用户端-服务器端设置”命令将不可用。

有关安装和使用第三方 OLAP 提供程序的信息，请向系统管理员或该 OLAP 产品的供应商咨询。在安装提供程序后，就可以在 Microsoft Query 中建立数据源以访问提供程序的数据库。


可访问的数据库

Microsoft Office 提供了用于检索如下数据源的驱动程序：

  • Microsoft SQL Server OLAP Services（OLAP 提供程序）7.0 和更高版本
  • Microsoft Access 2000 和更高版本
  • dBASE
  • Microsoft FoxPro
  • Microsoft Excel
  • Oracle
  • Paradox
  • SQL Server
  • 文本文件数据库

注释 可以使用其他厂商提供的 ODBC 驱动程序或数据源驱动程序以便从其他没有在此处列出的数据库中获得信息，其中也包括其他类型的 OLAP 数据库。有关未在此处列出的安装 ODBC 驱动程序或数据源驱动程序的详细信息，请参阅该数据库的文档或与数据库供应商联系。


指定检索数据的来源

  1. 如果当前未显示“选择数据源”对话框，请单击“新建查询” 按钮图像 。
  2. 请执行下列操作之一：

    若要为关系数据库、文本文件数据库或 Microsoft Excel 列表指定数据源，请单击“数据库”选项卡。

    若要指定 OLAP 多维数据集数据源，请单击“OLAP 多维数据集”选项卡。本选项卡只有在从 Microsoft Excel 中运行 Microsoft Query 时才有效。

  3. 双击“新数据源”。
  4. 在步骤 1 中，键入用于标识数据源的名称。
  5. 在步骤 2 中，单击要用作数据源的数据库驱动程序。

    如果没有看到所需的数据库，则可能需要为数据源安装 ODBC 驱动程序或数据源驱动程序。

    操作方法

  6. 单击“连接”，然后提供连接数据库所需的信息。

    对于关系数据库、文本文件数据库和 Excel 列表，所提供的信息将依赖于所选定的数据库的类型。可能会要求用户输入登录名、密码、所用数据库的版本号、数据库所在位置或其他此类数据库的特殊信息。

    对于 Microsoft SQL Server OLAP Services 数据源，请按照“多维连接向导”中的步骤进行操作。

  7. 在输入所需信息后，请单击“确定”或“完成”以返回“创建新数据源”对话框。
  8. 如果数据库中含有多张表，并且您希望某张特定的表会自动显示在“查询向导”中，则可在步骤 4 中单击该框，然后单击所需的表。
  9. 如果使用数据源时不想输入登录名和密码，请选中“在数据源定义中保存我的用户标识符和密码”复选框。如果复选框无效，则可以向数据库管理员查询该选项是否被禁用。

    完成这些步骤后，数据源的名称将出现在“选择数据源”对话框中。


建立使用 Microsoft Access 驱动程序的数据源

  1. 如果没有显示“创建新数据源”对话框，则请单击“文件”菜单上的“新建”，再单击“数据库”选项卡，然后双击“新数据源”。在步骤 1 中，键入数据源的名称，然后在步骤 2 中选择“Microsoft Access Driver”。
  2. 在第三步中，单击“连接”。
  3. 在“数据库”之下，单击“选择”，再用“选择数据库”对话框定位数据库文件。

    如果希望 Microsoft Query 以只读方式打开数据库，请选中“只读”复选框。

    如果希望在使用此数据源时，由 Microsoft Query 独占该数据库，请选中“独占”复选框。

  4. 单击“确定”。

    如果需要对数据库设置其他连接参数，请单击“高级”按钮。如果不清楚是否需要更改这些设置，请向数据库管理员咨询。有关高级设置的信息，请单击“取消”，然后单击“ODBC Microsoft Access 安装”对话框内的“帮助”。

  5. 如果希望 Microsoft Query 访问系统数据库，请单击“系统数据库”下的“数据库”，再单击“系统数据库”。在“选择系统数据库”对话框中定位系统数据库文件，然后单击“确定”。
  6. 单击“确定”，然后在“授权”之下输入登录名和密码。如果访问数据库时不想使用登录名和密码，请使“授权”之下的编辑框为空白。

注释 可用“ODBC Microsoft Access 安装”对话框创建、修复和压缩 Microsoft Access 数据库。如果不熟悉这些操作，那么最好只用 Microsoft Access 执行这些操作。有关详细信息，请参阅 Microsoft Access 的“帮助”。


建立使用 Microsoft dBASE 或 FoxPro 驱动程序的数据源

在执行下述步骤之前，最好将所有要用的数据库文件都放在同一文件夹内，从而使 Query 可以找到所有的文件，而不必在每次向查询中添加表时都输入完整路径。如果需要，请将数据库文件放在一个文件夹中，而将索引文件放在另一个文件夹中。

  1. 如果没有显示“创建新数据源”对话框，请单击“文件”菜单上的“新建”，接着单击“数据库”选项卡，再双击“新数据源”。在步骤 1 中输入数据源的名称，在步骤 2 中选择“Microsoft dBase Driver”或“Microsoft Visual FoxPro Driver”。
  2. 在步骤 3 中，单击“连接”。
  3. 请执行下列操作之一：

    对于 Microsoft dBase Driver，请在“版本”列表中单击用于创建数据库文件的 dBASE 或 FoxPro 的版本号。如果数据库文件不在当前文件夹中，请清除“使用当前目录”复选框，然后单击“选择目录”以找到该文件夹。如果数据库的索引文件也在其他文件夹中，请单击“选择索引”以找到该文件夹。

    对于 Microsoft Visual FoxPro Driver，请在“数据库类型”下单击 FoxPro 数据库的选项，然后在“路径”框中输入数据库的路径。


建立使用 Microsoft Excel 驱动程序的数据源

通过使用 Microsoft Excel ODBC 驱动程序，只能访问位于同一文件夹内工作簿中的数据。在执行下列步骤之前，应将所有要访问的工作簿都复制到同一文件夹内，并为所需的工作表区域指定名称，以便 Microsoft Query 能将其识别为一张表。

必须为要访问的数据所在的每个文件夹设置一个单独的数据源。

在建立数据源或运行查询以访问 Excel 工作簿中的数据之前，请先关闭 Excel 中的工作簿。

  1. 如果没有显示“创建新数据源”对话框，请单击“文件”菜单上的“新建”，再单击“数据库”选项卡，然后双击“新数据源”。在步骤 1 中键入数据源的名称，在步骤 2 中选择“Microsoft Excel Driver”。
  2. 在步骤 3 中，单击“连接”。
  3. 在“版本”框中，选择用于创建工作簿的 Excel 的版本号。如果工作簿是用 Excel 97、Excel 2000 或更高版本创建的，请单击“Excel 97-2000”。如果工作簿是用 Excel 95（Excel 7.0 版）创建的，请单击“Excel 5.0/95”。
  4. 单击“选择工作簿”，然后定位工作簿文件。


建立使用 Microsoft ODBC for Oracle 驱动程序的数据源

通过使用 Microsoft ODBC for Oracle 驱动程序，可以连接支持 SQL*Net 2.3 或更高版本的 Orocle 数据库。有关该支持的信息，请参阅 Orocle 文档。

在建立使用该驱动程序的数据源之前，必须先安装 clientOracle 7.3 或更高版本的客户端和网络组件。这些组件可从 Oracle 或 Oracle 销售商处获得。

  1. 如果没有显示“创建新数据源”对话框，请单击“文件”菜单中的“新建”命令，再单击“数据库”选项卡，然后双击“新数据源”。在步骤 1 中，为该数据源键入名称，在步骤 2 中，选择“Microsoft ODBC for Oracle Driver”。
  2. 在步骤 3 中，单击“连接”。
  3. 在“数据库”之下，单击“选择”。
  4. 在“用户名”框中，输入数据库登录名。
  5. 输入 Oracle 服务器的名称以及所有用于连接服务器的其他必要信息。有关以上信息的详细说明，请与 Oracle 数据库管理员联系。有关设置选项的详细信息，请单击设置对话框中的“帮助”。
  6. 输入登录 ID 和密码，再单击“确定”两次。


建立使用 Microsoft Paradox 驱动程序的数据源

执行下述步骤之前，最好将所有要用的数据库文件都放在同一文件夹内，从而使 Query 可以找到所有的文件，而不必在每次向查询中添加表时都输入完整路径。

  1. 如果没有显示“创建新数据源”对话框，请单击“文件”菜单上的“新建”，再单击“数据库”选项卡，然后双击“新数据源”。 在步骤 1 键入数据源的名称，在步骤 2 选择“Microsoft Paradox Driver”。
  2. 在步骤 3 中，单击“连接”。
  3. 在“版本”框内，选择创建数据库文件时所用的 Paradox 的版本号。
  4. 如果数据库文件不在当前文件夹内，请清除“使用当前目录”复选框，然后单击“选择目录”以定位数据库所在的文件夹。
  5. 如果需要对数据库设置高级选项，请单击“选项”。有关是否需要更改这些设置的信息，请向数据库管理员咨询。有关高级设置的信息，请单击“ODBC Paradox 安装”对话框内的“帮助”。


建立使用 Microsoft SQL Server 驱动程序的数据源

  1. 如果没有显示“创建新数据源”对话框，请单击“文件”菜单上的“新建”，再单击“数据库”选项卡，然后双击“新数据源”。在步骤 1 中键入数据源的名称，在步骤 2 中选择“SQL Server”。
  2. 在步骤 3 中，单击“连接”。
  3. 在“服务器”编辑框内，输入网络上的 SQL Server 的名称。如果要查阅“服务器”框的可用选项的信息，请单击“帮助”。
  4. 单击“选项”，并设置数据库所需的其他选项。如果不清楚应修改哪些设置，请向数据库管理员咨询。有关选项设置的信息，请单击“帮助”。
  5. 输入登录 ID 和密码，再单击“确定”两次。


建立使用 Microsoft SQL Server OLAP Services 驱动程序的数据源

可以使用该驱动程序为服务器数据库和脱机多维数据集文件 (*.cub) 建立数据源，脱机多维数据集文件是在 Microsoft Excel 中通过使用“脱机多维数据集向导”从 Microsoft SQL Server OLAP Services 数据库中建立或是在 Microsoft Query 中通过使用“OLAP 多维数据集向导”从关系数据库的记录中建立的。请了解 OLAP 数据源。

注释 本主题介绍如何为 Microsoft SQL Server OLAP Services 的第一个版本（MSMDCUBE.DLL 7.0 版）建立使用 OLAP 提供程序的数据源。若要为更高版本的 OLAP 提供程序建立数据源，请使用“数据连接向导”而不是 Query。有关建立数据源的其他信息，请参阅当前的 Microsoft SQL Server OLAP Services 的“帮助”。

  1. 如果“创建新数据源”对话框没有显示，请单击“文件”菜单中的“新建”，再单击“OLAP 多维数据集”选项卡，然后双击“新数据源”。在步骤 1 中，为数据源键入名称；然后在步骤 2 中，选择“Microsoft OLE DB Provider for OLAP Services”。

    “OLAP 多维数据集”选项卡只有在从 Excel 中运行 Query 时才可用。

  2. 在“创建新数据源”对话框的步骤 3 中，单击“连接”。
  3. 在“多维连接”对话框的步骤 1 中，请执行下列操作之一：

    若要连接到服务器数据库，请单击“分析服务器”，然后提供服务器名称、登录 ID 和密码。有关数据库中各种设置的信息，请向服务器管理员咨询。

    若要连接到脱机多维数据集文件，请单击“多维数据集文件”，然后在“文件”框中输入 .cub 文件的路径。

  4. 请执行下列操作之一：

    如果正在连接脱机多维数据集文件，请单击“完成”。

    如果连接的是服务器数据库，请单击“下一步”，再选择服务器数据库，然后单击“完成”。在“创建新数据源”对话框的步骤 4 中，选择要从中检索数据的数据库多维数据集的名称。


建立使用 Microsoft 文本驱动程序的数据源

必须为要访问的文本文件所在的每个文件夹设置一个单独的数据源。如果要用同一数据源访问若干文本文件中的数据，那么在执行下述步骤之前，请将所有这些文本文件复制到同一文件夹内。

  1. 如果未显示“创建新数据源”对话框，请在“文件”菜单上，单击“新建”，再单击“数据库”选项卡，然后双击“新数据源”。在步骤 1 中键入数据源名，在步骤 2 中选中“Microsoft Text Driver”。
  2. 在步骤 3 中，单击“连接”。
  3. 如果相应的文本文件不在当前文件夹内，请清除“使用当前目录”复选框，再单击“选择目录”以定位文本文件所在的文件夹。

注释 可以访问若干种格式的文本文件中的数据，包括由空格、逗号或制表符分隔的数据。有关可以使用的文本文件格式的详细信息，请单击“ODBC Text 安装”对话框中的“帮助”。


关于新建查询

查询是一种查找记录的方法，而这些记录回答了用户对数据库中所存储的数据提出的特殊问题。在创建查询时，既可以使用“查询向导”，也可以直接使用 Microsoft Query。创建查询的方法取决于用户在选择所需数据时需要使用的功能。

何时使用“查询向导” 创建简单的查询时可以使用“查询向导”。通过使用“查询向导”，可以选择要包含的表和字段。当向导发现某个表中的主键字段与另一个表中的某字段同名时，将自动创建内部连接。

还可以使用向导对结果集进行排序和简单筛选。在向导的最后一个步骤中，可以选择将数据返回到 Microsoft Excel、更进一步地完善 Query 中的查询或创建这些数据的 OLAP 多维数据集。在创建了查询之后，就可以在 Excel 或 Query 中运行该查询。如何使用“查询向导”。

何时使用 Microsoft Query 当需要创建较为复杂的查询时，可以使用 Query。这种方法赋予了用户最大的控制能力，这是因为此时既可创建内部连接，也可创建外部连接，还可使用表达式和复杂的条件，以使结果集变得更为精炼。所谓表达式是指用运算符、函数、字段名和常量所构成的计算式。如果使用条件，则还可以进行较为复杂的筛选。

在 Query 中，可以查看结果集，并且如果确认结果集中包含所需数据，则可以将数据返回到 Excel 中。也可以在 Query 中创建 OLAP 多维数据集。在创建查询之后，就可以在 Excel 或 Query 中运行该查询。如何在 Microsoft Query 中创建查询。

何时使用参数查询 当需要创建查询以检索具有不同条件的数据时，可以使用参数查询。例如，若要每次检索一种产品的销售数据，则可以将产品名作为条件使用。如果数据库太大，以致系统资源不足以一次检索所有数据，则可以用参数查询来检索数据库中的部分数据。

参数查询将在运行时提示输入条件。只能在 Query 中创建参数查询，而不能在“查询向导”中创建参数查询。输入的条件用于从所查询的表中检索数据。创建完查询后，可在 Excel 或 Query 中运行该查询。如何创建参数查询。


新建查询

请选择：

用“查询向导”创建查询

用 Microsoft Query 创建较为复杂的查询

创建参数查询

无法确定选择以上哪一项


创建参数查询

  1. 为所需记录创建含有表和字段的查询。

    操作方法

  2. 确保没有按下“自动查询” 按钮图像 。
  3. 请确认按下了“显示/隐藏条件” 按钮图像 ，以显示“条件”窗格。
  4. 单击“条件字段”行中的第一个单元格，再单击单元格中的箭头，以在列表中选择要作为查询参数的字段。
  5. 单击“值”行中的第一个单元格。键入“[”（左方括号〕，接着键入运行 Microsoft Query 要显示的文本，然后键入“]”（右方括号）。请看下面的示例。

    尽管提示文字中包含字段名，但是必须不同于字段名。

    若要为该查询创建多个参数，请在条件窗格中随后的列内重复进行第 4 步和第 5 步，以添加所需的参数。

    有关可用于精确定义查询的条件的详细信息，请单击 按钮图像 。

  6. 按 Enter。
  7. 若要运行该查询，请单击“立即查询” 按钮图像 。

注释 完成对数据的检索之后，可将结果集返回到 Microsoft Excel。有关详细信息，请单击 按钮图像 。


打开一个查询

  1. 单击“打开查询” 按钮图像 ，再单击要打开的查询文件，然后单击“打开”。

    查询文件的扩展名为“.dqy”或“.qry”。

  2. 如果提示输入登录名、密码或其他信息，请按提示进行操作。这些信息是数据源所要求的。
  3. 如果提示输入查询的参数值，请按提示进行操作，再单击“确定”。如果不知道有效的参数值，请与创建该查询的人联系。

注释 用户还可以打开通过“OLAP 多维数据集向导”创建的 .oqy 多维数据集定义文件。打开此类型文件时会启动向导，以便用户更改多维数据集定义。请了解使用“OLAP 多维数据集向导”创建多维数据集。


保存查询

如果希望保留格式，或者希望在以后或在其他工作簿中使用相同的查询，则请保存查询。有关在 Microsoft Excel 中打开查询文件的详细信息，请参阅 Excel 中的“帮助”。如果要将数据返回到 Excel 中，则不必保存查询。

  1. 单击“保存文件” 按钮图像 。
  2. 在“文件名”框中，键入所需的名称。
  3. 在“保存类型”列表中，Microsoft Query 将自动选择“查询文件 (*.dqy)”。如果希望在 Microsoft Query 97 以前版本的 Query 中使用该查询，请单击“查询文件 (*.qry)”。

    参数查询只能保存为“*.dqy”格式，且不能在 Microsoft Query 97 以前版本的 Query 中使用。

  4. 在“保存位置”列表中，单击要存放该查询的文件夹。
  5. 单击“保存”。

注释

  • 保存查询文件时，Query 并不保存显示在“数据”窗格中的当前结果集。在显示“另存为”对话框之前，即便未按下“自动查询” 按钮图像 按钮，结果集将自动刷新。
  • 如果要防止 Query 在保存查询或将数据返回到 Excel 之前就运行查询，请单击“编辑”菜单上的“选项”，然后清除“保存或返回数据前验证查询”复选框。
  • 查询文件的默认位置是 Application Data\Microsoft\Queries 文件夹中的用户配置文件夹。如果将查询保存在该位置，则在 Microsoft Query 中打开新的查询或在 Excel 中使用“运行保存的查询”命令（“数据”菜单上的“导入外部数据”子菜单）时，这些查询的文件名将出现在“查询”选项卡上。


运行、查看或编辑 SQL 命令、SQL 过程或 SQL 语句

如果熟悉结构化查询语言 (SQL)，就可以使用 SQL 编辑查询的 SQL SELECT 语句。有关 SQL 的详细信息，请参阅所用数据库的文档。

  1. 创建新查询。不向 Microsoft Excel 返回所得结果。

    操作方法

  2. 单击“显示 SQL” 按钮图像 。

    此时 Microsoft Query 将显示“SQL”对话框，该对话框内包含相应于指定查询的 SQL SELECT 语句。

  3. 键入要对 SQL 语句所做的修改，再单击“确定”。

    若要在“SQL 语句”框内添加新行，请按 Enter。

注释

  • 如果要更改或替换 SQL 语句，请使用 Microsoft Query 使用的 SQL 语法或数据源支持的 SQL 语法。Microsoft Query 将试图解释用户所用的语法，并显示查询设计及其结果集。
  • 即使由于 Microsoft Query 无法解释用户所用的 SQL 语法的一部分而导致无法显示查询设计，Microsoft Query 仍将显示结果集。但是，在这种情况下，用户就只能更改结果集的格式，例如显示字体和列宽。用户无法编辑数据，并且只能在“SQL”对话框内更改查询的定义（例如，添加或删除字段）。


自动运行查询，或稍后再运行查询

每次向“数据”窗格中添加字段，或者在“条件”窗格中添加或更改条件时，Microsoft Query 都要自动运行查询，并更新结果集中的数据。如果查询中包含了大量的记录，则可能希望等到完成对查询所进行的更改之后，再运行查询。

  • 若要在每次添加新字段或新条件后都自动运行查询，请确认按下了“自动查询” 按钮图像 按钮。
  • 若要等到向查询添加新字段或新条件完成以后再运行查询，请确认未按下“自动查询” 按钮图像 按钮。当准备好运行查询以后，请单击“立即查询” 按钮图像 。


将结果集返回 Microsoft Excel

  1. 如果当前未显示“将数据返回 Microsoft Excel”对话框，请单击“将数据返回 Excel” 按钮图像 ，如果出现提示，请输入相应的查询参数值。
  2. 单击“属性”以控制格式选项和版式选项，这些选项用于控制外部数据如何输入到 Microsoft Excel 中。有关详细信息，请参阅 Microsoft Excel “帮助”。
  3. 若要将结果集置于选定的工作表上，请单击“现有工作表”。在该工作表中，单击要放置结果集的左上角的单元格，再单击“确定”。

    若要将结果集置于新建的工作表上，请单击“新工作表”，再单击“确定”。Microsoft Excel 将向工作簿中添加新的工作表，并自动将结果集置于新工作表的左上角。

    若要在数据透视表中使用外部数据，请单击“数据透视表”，再单击“确定”。

注释

  • 在 Query 中，结果集会在“将数据返回 Microsoft Excel”对话框显示之前自动进行刷新，即使未按下“自动查询” 按钮图像 按钮。如果要防止 Query 在将数据返回到 Excel 之前运行该查询，请单击 Query 的“编辑”菜单上的“选项”，再清除“保存或返回数据前验证查询”复选框。
  • 可以检查那些需要过长时间才能返回数据的查询的状态。在 Excel 中，请单击“外部数据”工具栏上的“更新状态” 按钮图像 。如果要取消返回数据，请单击“取消刷新”。


执行 SQL 语句或过程

如果熟悉结构化查询语言 (SQL)，则可用 SQL 执行 SQL SELECT 语句。有关 SQL 的详细信息，请参阅所用数据库的文档。

  1. 在“文件”菜单上，单击“执行 SQL”。

    若要在其他数据源的表上执行 SQL 语句，请单击“数据源”按钮，再单击所需的数据源，然后单击“确定”。此处可指定新的数据源。

    操作方法

  2. 在“SQL 语句”框中，键入要运行的 SQL 语句。

    如果要运行已有的 SQL 语句，请单击“打开”，再单击 SQL 文件，然后单击“打开”。

    如果要运行存放在外部数据库的 SQL 过程，请单击“过程”，然后在“查询”框中选择所需过程，再单击“粘贴”以将其复制到“SQL 语句”框中。

  3. 单击“执行”。

    Microsoft Query 将运行该 SQL 语句。如果该查询检索数据花费的时间过长，可按 Esc 取消该查询。

    若要保存该 SQL 语句，请单击“保存”。

注释

  • 若要更改或替换 SQL 语句，请用 Microsoft Query 使用的 SQL 语法或数据源支持的 SQL 语法。Microsoft Query 将试图解释用户使用的语法，并将显示查询设计及其结果集。
  • 即使由于 Microsoft Query 无法解释用户所用的 SQL 语法的一部分而导致其无法显示查询设计，Microsoft Query 仍将显示结果集。不过，在这种情况下，用户就只能更改结果集的格式，例如显示字体和列宽。用户无法编辑数据，并且只能在“SQL”对话框内对查询的定义作出更改（例如添加或删除字段）。
  • 如果该查询返回多个结果集，那么 Microsoft Query 将在“数据”窗格内显示第一个结果集，而不显示其他的结果集。
  • 如果查询运行成功，但该查询不返回结果集，那么 Microsoft Query 将显示一条指出该语句已成功地运行完毕的消息。如果该查询影响了基础表中的行，则显示的消息还将指出受影响的行数。
  • 如果查询运行不成功，则 Microsoft Query 将显示相应于所出现的问题的 SQL 错误消息。若要显示“执行 SQL”对话框并修正错误语句，请单击“确定”。


关于 OLAP 查询

利用 Microsoft Query，用户可以通过建立数据源、创建关系数据的 OLAP 多维数据集并保存 OLAP 多维数据集定义文件来创建和处理联机分析处理 (OLAP) 数据库中的数据。本主题解释了如何使用 Microsoft Query 为 Microsoft Excel 数据透视表和数据透视图报表准备 OLAP 数据。

本主题提供以下信息：

什么是 OLAP？

连接 OLAP 数据库

通过查询中的记录创建 OLAP 多维数据集

保存 OLAP 查询文件

什么是 OLAP？

OLAP 是一种组织大型商用数据库的方法。OLAP 数据由数据库管理员进行组织，它符合用户分析和管理数据的方式，因而使用 OLAP 可以花费较少的时间和精力创建报表。

明细数据级别 OLAP 数据库会按明细数据级别组织数据，使用与用户分析数据时所用的相同分类。例如，某公司产品在全世界范围内销售信息的数据库可能由多个单独的字段组成，分别标识国家/地区、地区、市/县和销售地点。在 OLAP 数据库中，这种地理信息可以按明细数据级别从低到高排列如下：

地理维中的级别

该组织方式既便于显示较高级别的销售汇总（例如，整个国家/地区或地区的销售汇总），也便于显示每个销售势头好或坏的销售地点的明细数据。在 Microsoft Excel 数据透视表或数据透视图报表中，可以按不同级别显示汇总数据，并且在查看包含大量明细数据的级别时，还可以仅显示感兴趣的项。

维和多维数据集 包含某类数据的一组级别（如地理区域）称为维。与此类似，有关销售时间的信息可以组织为时间维，其中包括年、季度、月和日级别。OLAP 数据库之所以称为多维数据集，是因为该数据库中结合了多个维（例如时间、地理和产品）和汇总数据（例如销售或存货数据）。OLAP 数据库为每一维的每一级别的交叉点计算汇总值，例如：每个销售点、地区和国家/地区以及每种产品和每条生产线的每日、每月和每年的总销售额。

返回页首

连接 OLAP 数据库

OLAP 提供程序 若要连接 OLAP 数据库，需要有支持特定类型 OLAP 数据库的 OLAP 提供程序。Microsoft Office 中包含 Microsoft OLAP 服务器产品的 OLAP 提供程序软件，即 Microsoft SQL Server OLAP Services。对于其他提供 OLAP 数据和服务的产品，则需要安装其他驱动程序和用户端软件。有关使用第三方 OLAP 提供程序的信息，请向系统管理员或 OLAP 产品的供应商咨询。请了解安装 OLAP 提供程序。

数据源 OLAP 用户端软件包含了 OLAP 数据库的数据源驱动程序。Office 中包含名为“Microsoft OLE DB Provider for OLAP Services”的驱动程序，通过它可以访问由 Microsoft SQL Server OLAP Services 创建的数据库。当通过 Microsoft Query 创建多维数据集或脱机多维数据集文件时，同时也会创建访问多维数据集的数据源。

当运行 Microsoft Query 以连接 OLAP 数据库或脱机多维数据集文件时，会像处理其他类型的数据一样新建数据源，除非用户使用“选择数据源”对话框中的“OLAP 多维数据集”选项卡来命名数据源，并指定 OLAP 提供程序的数据源驱动程序，然后再连接数据库。如何建立数据源。

将数据返回 Excel 在建立并选定 OLAP 数据源后，就不能像处理其他类型的数据一样创建查询来选择表和字段。数据源将提供对 OLAP 多维数据集中所有数据的访问。数据字段将立即作为数据透视表返回到 Excel 中。

返回页首

通过查询中的记录创建 OLAP 多维数据集

通过使用 Microsoft Query 和随 Microsoft Office 一起提供的 OLAP 用户端软件，可以利用从关系数据库（如 Microsoft SQL Server）中查询到的数据创建自己的 OLAP 多维数据集或脱机多维数据集文件。创建 OLAP 多维数据集可以更高效地访问大量的关系数据，并有助于在报表中组织数据。不需要 OLAP 服务器产品就可以创建和使用此类型的 OLAP 多维数据集。

为多维数据集检索数据 如果要创建自己的多维数据集，首先应为关系数据库建立数据源，然后创建查询以检索数据，最后运行“OLAP 多维数据集向导”为查询得到的数据定义多维数据集结构，并且，还可以选择保存为脱机多维数据集文件。

创建内存中的多维数据集 在“OLAP 多维数据集向导”中，每次打开基于多维数据集的报表时，都可以创建位于内存中的临时多维数据集。有关何时创建此类型多维数据集的详细信息，请参阅“OLAP 多维数据集向导”中的“帮助”。请了解运行向导以创建 OLAP 多维数据集。

创建脱机多维数据集文件 “OLAP 多维数据集向导”也允许用户创建脱机多维数据集 (.cub) 文件，该文件可以保存在本地磁盘或网络共享目录中。如果保存在本地磁盘上，则在网络连接断开或服务器不可用时，仍可以使用 .cub 文件继续处理数据。如果保存在网络共享目录中，则其他用户和自己都可以建立数据源以访问该脱机多维数据集文件，并基于该脱机多维数据集文件创建报表。请了解运行向导以创建脱机多维数据集文件。

返回页首

保存 OLAP 查询文件

OLAP 数据源 当使用“选择数据源”对话框中的“OLAP 多维数据集”选项卡建立数据源，则 Microsoft Query 会将 .oqy 文件保存在 Application Data\Microsoft\Queries 文件夹的用户配置文件夹中。除了当在 Excel 中创建数据透视表或数据透视图报表时指定数据源以外，用户可以直接在 Excel 中打开 .oqy 文件以创建数据透视表。如果 .oqy 文件连接到了 OLAP 服务器数据库或网络共享目录中的脱机多维数据集文件，则可以使其他用户也能使用 .oqy 文件，这样，其他用户就可打开该文件来创建报表，而不必建立自己的数据源了。

“OLAP 多维数据集向导”的多维数据集 在完成“OLAP 多维数据集向导”的最后一步后，向导将提示用户使用 .oqy 扩展名保存多维数据集定义文件。该文件中包含有关 Excel 在内存中创建多维数据集或连接脱机多维数据集文件（如果创建了该文件）时所需的信息。使用这种方法并不会将查询中的记录返回到 Microsoft Excel 中，用户可以在 Microsoft Excel 中打开该文件来创建数据透视表。用户并不必为 OLAP 多维数据集建立单独的数据源，尽管也可以为脱机多维数据集文件建立单独的数据源（如果希望直接连接多维数据集文件来创建报表）。

保存 .oqy 文件与保存关系数据库记录（用于创建 OLAP 多维数据集的数据库记录）的查询副本不同。如果希望保存查询的副本，以便将来可以向多维数据集中添加数据，则必须将查询保存为数据库查询 (.dqy) 文件。

返回页首


关于创建关系数据的 OLAP 多维数据集

本主题解释了如何通过检索关系数据库（如 Microsoft Access 或 Microsoft SQL Server）中数据的查询创建 OLAP 多维数据集。不需要 OLAP 服务器产品就可以创建和使用这种类型的 OLAP 多维数据集。若要了解和使用 Microsoft Query 的功能，则应首先熟悉如何管理数据库以及如何通过 Microsoft Query 为 Microsoft Excel 数据透视表或数据透视图报表检索数据。

本主题提供以下参考信息：

什么是 OLAP 多维数据集？

为数据创建查询

创建多维数据集

刷新和更改多维数据集

什么是 OLAP 多维数据集？

联机分析处理 (OLAP) 是一种组织数据的方法，它适合于分析和管理数据，这样使用 OLAP 就可以花费较少的时间和精力来创建报表。如果通过查询创建了 OLAP 多维数据集，则可以将一组简单的记录转化为结构化的层次或多维数据集，这样，报表就能着重强调所需级别的明细数据。也可以预定义报表的汇总值，从而提高报表的计算速度。

如果要为 Microsoft Excel 报表提供大量外部数据（尤其是在系统资源的范围内，如果记录的数量超过了 Excel 所能分析的数量），则可创建 OLAP 多维数据集。由于多维数据集允许 Excel 仅检索当前报表视图所需的数据，因此对于大量数据，通过多维数据集创建和更新报表比检索数据库的整个记录集要快。

OLAP 多维数据集中的数据只能作为数据透视表或数据透视图报表返回到 Excel，这一点与查询中的关系数据库记录不同，关系数据库中的记录还可作为工作表上的外部数据区域返回到 Excel。

返回页首

为数据创建查询

若要创建关系数据库中记录的 OLAP 多维数据集，则必须为关系数据库建立数据源，然后创建查询来检索字段和记录，以便为多维数据集提供数据。

为查询选择字段 为确保查询尽可能地高效运行，请在查询中仅包含多维数据集所需的表和字段。但是，请确保添加所有所需字段。创建多维数据集之后，就无法再向查询中添加其他字段以将新字段合并到多维数据集中。如果要向多维数据集中添加其他字段，则必须完全重建多维数据集。

多次添加字段 有些情况下，可能希望在多维数据集中多次使用同一字段。例如，可能希望以两种方式汇总“销售”字段：对销售量求和或对销售次数进行计数。或者，也可能希望包含两种版本的“日期”字段：一种按季度和月组织日期，另一种按季度和周组织日期。如果要在多维数据集中多次使用同一字段，则必须为每种使用方式分别向查询中添加字段。例如，如果计划对“销售额”字段中的值进行求和以及计数，则应向查询中添加两次该字段。

有关何时在查询中多次包含同一字段的详细信息，请参阅“OLAP 多维数据集向导”中的“帮助”。如果在运行该向导时发现需要向查询中添加字段，则可以取消向导，然后在添加完字段后继续运行该向导。

保存查询 如果考虑到将来可能要使用其他字段重新创建多维数据集，则请确保将查询保存为数据库查询 (.dqy) 文件。这样，就可以打开 .dqy 文件，并更改查询，然后通过更改后的查询新建多维数据集。

返回页首

创建多维数据集

若要创建多维数据集，请运行“OLAP 多维数据集向导”。有关向导中每个步骤的指示，请参阅向导中的“帮助”。

临时多维数据集和脱机多维数据集文件 该向导允许用户创建两种类型的多维数据集。第一种类型为多维数据集定义，向导将多维数据集定义保存为 .oqy 文件。如果打开基于 .oqy 类型文件的报表，则会在内存中创建临时多维数据集。第二种类型为单独的脱机多维数据集文件，它存储在本地盘或网络共享目录中。如果存储在本地盘上，则此类型的多维数据集允许用户在断开网络连接时继续处理数据。可以将脱机多维数据集文件建立为报表的数据源。

保存多维数据集定义文件 无论是否保存了单独的脱机多维数据集文件，向导都会保存多维数据集定义 (.oqy) 文件。该文件中包含 Microsoft Query 加载多维数据集时所需的信息，这些信息使得用户可以更改多维数据集，同时该文件中还包含 Excel 在内存中创建多维数据集或连接到脱机多维数据集文件（如果创建了此文件）时所需的信息。

使用多维数据集定义文件创建报表 这种方法并不将关系数据库查询中的记录返回到 Microsoft Excel 中，用户可以在 Excel 中打开 .oqy 文件以创建基于 OLAP 多维数据集的数据透视表。然后，就可以将数据透视表保存在工作簿中，或创建基于数据透视表的数据透视图报表。有关打开 .oqy 文件和创建报表的详细信息，请参阅 Excel 中的“帮助”。

返回页首

刷新和更改多维数据集

刷新 OLAP 多维数据集 若要刷新多维数据集，请在 Microsoft Excel 中打开基于该多维数据集的报表，然后刷新该报表。如果是在内存中创建的临时多维数据集，则进行上述操作时，会将原始数据库中的新数据和已更改数据引入到多维数据集中。如果多维数据集为脱机多维数据集文件，则该文件将使用新数据重建并取代原有文件。如果要创建自己的多维数据集并进行刷新，则必须具有支持以上功能的 OLAP 提供程序，例如 Microsoft SQL Server OLAP Services。有关刷新基于 OLAP 多维数据集的数据透视表或数据透视图报表的过程，请参阅 Excel 中的“帮助”。

更改 OLAP 多维数据集 对于在“OLAP 多维数据集向导”中创建的 OLAP 多维数据集，可以更改 OLAP 多维数据集，从而使用不同的方法组织数据或删除报表中不需要的字段。如果创建了脱机多维数据集文件，则可以将所作更改保存在文件中。

在创建 OLAP 多维数据集之后，将无法从原始关系数据库向多维数据集中添加其他字段。但是可以通过相同的数据库查询 (.dqy) 文件创建新的 OLAP 多维数据集，从而可以使用原始数据库中的不同字段。

返回页首


从关系数据中创建 OLAP 多维数据集

OLAP 多维数据集中的数据仅能作为数据透视表返回到 Microsoft Excel 中，而不能作为工作表上的外部数据区域返回 Microsoft Excel。

  1. 创建查询以检索要在多维数据集中使用的字段。

    操作方法

  2. 请使用下列方法之一运行“OLAP 多维数据集向导”：

    如果在“查询向导”中创建了查询，则请在向导的最后一步中单击“从该查询创建 OLAP 多维数据集”，再单击“完成”。

    如果在 Microsoft Query 中创建了查询，则请单击“文件”菜单上的“创建 OLAP 多维数据集”。

  3. 请按“OLAP 多维数据集向导”中的步骤进行操作。有关步骤说明的特定信息，请参阅“OLAP 多维数据集向导”中的“帮助”。
  4. 在完成向导操作后，Query 将提示用户保存多维数据集定义 (.oqy) 文件。请键入文件名，再单击“保存”。

注释

  • 如果在“OLAP 多维数据集向导”中指定了脱机多维数据集 (.cub) 文件，则单击“保存”后将创建 .cub 文件。保存该文件时可能会花费大量时间，这取决于多维数据集的数据量。在脱机多维数据集文件创建完成以前，不能在 Microsoft Query 中进行其他工作。
  • 如果要让其他 Microsoft Excel 报表基于该多维数据集，则不必将查询的数据返回 Excel。而只需使用 Excel“文件”菜单上的“打开”命令打开 .oqy 文件。
  • 也可以使 Excel 报表基于脱机多维数据集文件，方法是：为该文件建立数据源，然后在运行 Excel 的“数据透视表和数据透视图向导”时指定该数据源。
  • 如果考虑到将来可能会将字段从源数据库添加到多维数据集中，请确保保存数据库查询 (.dqy) 文件，以便使用查询文件来更改多维数据集。


更改 OLAP 多维数据集的内容和设置

可以更改多维数据集中字段的组织方式，也可以删除多维数据集中不需要的字段，但无法向已有的 OLAP 多维数据集中添加其他字段。如果要向多维数据集中添加字段，则必须新建多维数据集。

  1. 在 Microsoft Query 的“文件”菜单中，单击“打开”。
  2. 在“文件类型”列表中，单击“OLAP 多维数据集”。
  3. 定位并双击要更改的多维数据集的多维数据集定义 (.oqy) 文件。
  4. 按照“OLAP 多维数据集向导”中的步骤更改内容和设置。有关步骤说明的详细信息，请参阅“OLAP 多维数据集向导”中的“帮助”。
  5. 在完成本向导之后，Query 将提示用户保存 .oqy 文件。如果要替换现有的 .oqy 文件，请单击“保存”。如果要保存新的 .oqy 文件，请输入新名称，再单击“保存”。

注释

  • 如果在“OLAP 多维数据集向导”中指定了一个脱机多维数据集 (.cub) 文件，则单击“保存”后将创建 .cub 文件。正更改的现有 .cub 文件将完全被重建并被替换。保存该文件可能会花费大量时间，这取决于多维数据集的数据量。在完成 .cub 文件的创建之前，无法在 Microsoft Query 中进行其他工作。
  • 可以使用以下两种方法让 Microsoft Excel 报表基于 .cub 文件：使用 Excel“文件”菜单中的“打开”命令打开 .oqy 文件；或为 .cub 文件建立数据源，然后在运行 Excel 的“数据透视表和数据透视图向导”时指定该数据源。


删除脱机多维数据集文件

如果删除脱机多维数据集 (.cub) 文件，则会从存储该文件的磁盘中永久删除该文件，并释放该文件所占用的磁盘空间。但是，以后就不能再更改基于该文件的报表。如果创建了使用该文件的数据源，则不能再使用这些数据源。

  • 在 Microsoft Windows 中，找到并删除该 .cub 文件。


向查询中添加表

  1. 单击“添加表” 按钮图像 。
  2. 选中要添加的表。
  3. 单击“添加”。

注释 可以向查询中添加任意数量的表。完成添加后，请单击“关闭”。


删除查询中的表

  1. 单击要删除的表。
  2. 在“编辑”菜单上，单击“删除”。


添加或删除字段

字段是一类信息（例如：产品名或订购量），它存储在数据库中由信息所构成的表中。如果添加或删除字段，则查询也将包括或排除该字段中的信息。但用于提供信息的基本数据库则不会更改。

添加字段 若要将单个字段添加到结果集中，请双击要添加到“表”窗格中的字段。

删除字段 若要从结果集中删除字段，则首先请在“数据”窗格中单击要删除字段的列标，然后单击“记录”菜单中的“删除列”。

提示

  • 若要从相同的表中一次添加多个字段，请按住 Ctrl 单击每个字段，然后将选中字段拖到“数据”窗格上。
  • 若要将表中的所有字段都添加到结果集中，请双击“表”窗格中表顶部的“*”（星号）。

    在“表”窗格中选中的星号 (*) 示例


从有连接的多个表中检索记录

本主题提供以下信息：

连接表

内部连接

外部连接

自连接

完全外部连接

减连接

连接表

数据库由多张具有相关信息的表组成。当您向查询中添加两张或多张表时，如果 Microsoft Query 发现某张表中的主键字段与另一张表中的某个字段同名，那么 Microsoft Query 会自动在它们之间创建连接。连接线显示了表中数据之间的关系。

连接线通过连接每张表中的“产品 ID”字段可以将“产品”表连接到“订单明细数据”表上。而“订单明细数据”表与“订单”表也是通过“订单 ID”字段相连接的。

可以使用两种基本的连接类型从多张表中检索记录。内部连接仅检索多张表间的相关联记录。外部连接则检索一张表中的所有记录和另一张表中的所有相关联记录。

除了内部连接和外部连接外，您还可以创建其他三种类型的连接：自连接、完全外部连接和减连接。自连接返回一个结果集，该结果集会合并包含在一张表中的信息。完全外部连接将返回两张表中的所有记录，即使这些记录之间并无关联。减连接仅返回包含于第一张表但不包含于第二张表中的所有记录。

返回页首

内部连接

内部连接是默认的连接类型，它只检索在两张表的连接字段上具有相同值的记录。Microsoft Query 会合并每张表中能够匹配的记录并将它们显示在结果集中。

其他信息

在查询中连接表

更改查询中两张表的连接类型

返回页首

外部连接

外部连接会检索一张表中的所有记录和另一张表中的任意可匹配记录。当两张表中的值相同时，Microsoft Query 会合并可匹配的记录，并将它们作为一个记录显示在结果集中。当提供其所有记录的表中的某一记录无法与另一张表中的记录相匹配时，该记录依然会出现在结果集中。但是，当另一张表中不存在可匹配的记录时，Query 会在相应位置上显示一个空的单元格。

其他信息

在查询中连接表

更改查询中两张表的连接类型

返回页首

自连接

当您希望合并一张表中的信息时，请使用自连接。例如，在雇员表中，每一个雇员的记录都包含其主管经理的雇员 ID。由于主管经理也是作为雇员保存在此相同表中，因此您可以将此表与其自身连接以返回主管经理的姓名和雇员 ID。

通过将此表与自身连接，可以检索到主管经理的 ID 和姓名。

其他信息

使用自连接检索多个字段

返回页首

完全外部连接

如果想要合并两张表中的所有数据，就可以创建一个完全的外部连接查询。这种类型的查询将返回两张表中的所有数据，而不论这些数据是否相关。

例如，如果您有一张“顾客”表和一张“订单”表，那么您可以使用一个完全的外部连接以获得所有未定的订单记录（来自“订单”表）和所有未订货的顾客记录（来自“顾客”表)。

本列表中的前两个名字还未订货。

注释 当您创建一个完全的外部连接时，Query 将只显示查询的结果集，而不显示查询使用的表。

其他信息

组合两张表中的所有数据

返回页首

减连接

当您有两张具有相似数据的表时，例如：两张顾客表，并且每张表中都包含另一张表所没有的顾客信息，那么您可以创建一个减连接。减连接仅返回包含于第一张表而不包含于第二张表中的记录。

具有相似顾客数据的两张表

其他信息

检索两张表中的非公共记录

返回页首


从多张表中检索记录

如果查询中包含多张表，那么通过使用连接可以从多张表中检索相关记录。连接是指两张表之间的一种链接，其中，一张表的某个字段具有与另一张表中某个字段相同的数据。

请选择：

关于用内部连接和外部连接检索数据

创建内部连接

创建外部连接

创建自连接

从两张表中检索所有记录

仅检索两张表中的非公共记录


组合两张表中的所有数据

如果要将两张具有类似数据但数据又不完全相同的表中的所有数据组合起来，例如，两张有关客户信息的列表（表），且每张列表对各个客户都有不同的信息（字段），而每个列表内都有另一个列表所不包括的客户，则可以创建一个包含所有客户的查询。这种类型的查询称为完全外部连接。关于完全外部连接。

  1. 在 Microsoft Query 中创建一个查询，并将两张表都添加到该查询中。
  2. 通过将某一张表中的字段拖到另一张表中，可以将两张表中相匹配的字段（例如，两张表中的“客户 ID”字段）连接起来。

    请选择一个在每一张表中的每一条记录内都有信息的字段。例如，如果两张客户清单中有匹配的“客户 ID”字段，请连接该字段。

  3. 双击两张表之间的连接线。
  4. 在“连接”对话框中，单击选项“2”，再单击“添加”，然后单击“关闭”。
  5. 向查询中添加所需的字段。
  6. 在“视图”菜单上，单击“SQL”。
  7. 选择“SQL 语句”框中的数据，按 Ctrl+C 复制这些语句，再单击“确定”。
  8. 再次双击连接线。
  9. 在“连接”对话框中，单击选项“3”，再单击“添加”，然后单击“关闭”。
  10. 在“视图”菜单上，单击“SQL”。
  11. 在“SQL 语句”框内数据的结尾处单击数据，接着按 Enter，并输入大写的单词“UNION”，再按 Enter。
  12. 按 Ctrl+V 将复制的语句粘贴到单词 UNION 之后。
  13. 单击“确定”，然后当提示查询不能按图形方式显示时，再次单击“确定”。


检索两张表中的非公共记录

如果存在具有类似数据的两张表，例如，两张有关客户信息的清单（表），且每张清单内都具有另一张清单所不包含的客户，则可以创建一个仅返回第一张表中与第二张表的记录不匹配的记录的查询。这种类型的查询称为减查询或减连接。

  1. 在 Microsoft Query 中创建一个查询，并将两张表都添加到该查询中。
  2. 通过将第一张表中的字段拖到第二张表中，可以将两张表中相匹配的字段（例如，两张表中的“客户 ID”字段）连接起来。
  3. 双击两张表之间的连接线。
  4. 在“连接”对话框中，单击选项“2”，再单击“添加”，然后单击“关闭”。
  5. 将被连接的字段添加到查询中。
  6. 将第二张表中的另一个字段（不是连接字段)添加到查询中。此处所选的字段应在第二张表中的每一条记录中都有数据。例如，如果连接了两张表中的“客户 ID”字段，那么此处应添加第二张表中的“客户名”字段。
  7. 在“视图”菜单上，单击“条件”。
  8. 在第一个条件字段中，单击在第 6 步中添加的字段。
  9. 在第一个“值”字段中，键入“Is Null”。
  10. 若要查看只包含在第一张表而不包含在第二张表中的记录，请单击“立即查询” 按钮图像 。
  11. 向查询中添加其他所需的字段，然后将数据返回到 Microsoft Excel。

注释 如果还要查看第二张表中不能与第一张表中记录相匹配的记录，请用上述相同的步骤再创建一个查询，但需要反转表的顺序（使第二张表成为第一张表，反之亦然）。


创建外部连接

外部连接显示了一个表中的所有记录以及另一表中的所有相关记录。

  1. 创建表之间的内部连接。如何创建内部连接。
  2. 双击表之间的连接线。
  3. 单击“运算符”列表中的“=”（等号）。
  4. 请执行下列操作之一：

    若要创建一个使用左表中所有记录的外部连接，请单击“连接内容”下的选项 2。

    若要创建一个使用右表中所有记录的外部连接，请单击“连接内容”下的选项 3。

注释

  • 检索两个表中的所有记录 如果您希望合并两个表中的所有记录，而不管记录是否关联，那么请执行创建完全外部连接。
  • 仅检索两个表中的非公共记录 您可以检索两张表中的所有非公共记录。


创建内部连接

  • 将字段从某张表拖动到另一张表上的等价字段（包含类似数据的相同数据类型的字段）上。

注释 只有当相连接的字段值相等时，Microsoft Query 才能通过内部连接从两个表或查询中选择记录。也可以创建外部连接以从一张表中检索所有记录而从另一张表中检索任意相关记录。


创建自连接

使用此过程可合并同一表的两份副本中的信息，例如，如果有这样一张雇员信息表，该表中包含每个雇员经理的雇员 ID，则可以使用此过程合并经理的 ID 和姓名。此过程可创建称为自连接的查询。关于自连接。

  1. 在 Microsoft Query 中创建查询，然后添加表，该表就是要与自身连接以用于查询的表。
  2. 再次向查询中添加相同的表。
  3. 当系统提示查询中已存在表时，请单击“确定”。
  4. 如果 Query 自动连接这两张表，那么请双击连接线，然后单击“删除”，再单击“关闭”。
  5. 在两张表之间创建内部连接。例如，如果“经理”字段使用雇员 ID 来标识经理，则可以将第一张表的“经理”字段连接到第二张表的“雇员 ID”字段上。
  6. 向查询中添加字段。例如，可以将第一张表的“雇员姓名”和“经理”字段添加到查询中，然后再添加第二张表中的“雇员姓名”字段，这样可查看每位雇员的经理的姓名。


连接中的运算符

可以在连接中使用下列运算符。

运算符 | 说明
=（等于） | 选择连接字段的值相等的记录。
<>（不等于） | 选择连接字段的值不相等的记录。
>（大于） | 选择左边的表内连接字段的值大于右边表内连接字段的值的记录。
>=（大于或等于） | 选择左边的表内连接字段的值大于或等于右边表内连接字段的值的记录。
<（小于） | 选择左边的表内连接字段的值小于右边表内连接字段的值的记录。
<=（小于或等于） | 选择左边的表内连接字段的值小于或等于右边表内连接字段的值的记录。


删除连接

如果查询中包含内部连接或外部连接，但未检索到所需的记录，那么就可能需要删除这些连接。

  1. 在“表”窗格中，单击要删除的连接线。
  2. 按 Delete。

注释

  • 删除连接时，查询的结果集内所包含的记录将有变化。根据删除的连接的类型，记录可能添加到结果集，或从结果集中被删除。
  • 删除某一查询中的连接只会影响到该查询。例如，如果 Microsoft Query 自动在查询中的两张表之间创建了内部连接，然后用户删除了该内部连接，那么当在其他查询中再次使用这两张表时，Microsoft Query 仍将自动在这两张表之间创建内部连接。


关于条件的用法

本主题提供以下信息：

什么是条件？

满足单个条件

满足多个条件

查找类似记录

指定值的范围

计算式的用法

排除特定记录

查找不完整记录

什么是条件？

条件是在数据库或列表中为查找特定记录而指定的条件表达式。通过使用条件，可以限制包含在查询结果集中的记录（或行）。例如，条件“单价 > 30”会选择所有“单价”字段超过 30 的记录。在 Microsoft Query 中，可以直接向窗格中输入条件或是使用“条件”菜单上的“添加条件”命令将条件输入到“条件”窗格中。用于指定条件的字段不一定要包含在结果集中。

由于您的查询中可能包含具有相同字段名的多张表，所以请确保使用的字段来自正确的表。例如，如果您要查找某个特定国家/地区的所有供应商，那么请选择“供应商”表中的“国家/地区”字段，而不是“顾客”表中的“国家/地区”字段。

其他信息

用条件指定检索哪些记录

返回页首

满足单个条件

您可以查找所有满足单个条件的记录。例如：某个特定的国家/地区或产品。下例中显示了一个查询条件，它用来检索“国家/地区”字段中包含“瑞典”的所有记录。

若要指定单个条件，请选择“条件字段”框中的字段名，然后在“值”框中键入您想要查找的值。

其他信息

使用逻辑运算符的表达式示例

返回页首

满足多个条件

在两个或多个字段上满足多重条件 您可以查找所有在一个字段上满足一个条件而在另一个字段中满足另一个条件的记录。例如，您可以查找华盛顿地区的所有美国订单的记录。若要选择这些记录，请在“条件”窗格中键入两组条件。若要指定所有条件都为真的多重条件中，请创建 AND 条件表达式。

满足 AND 条件表达式的条件

若要查找满足两个或多个条件的记录，请为每个条件指定一个条件字段。

在同一字段上满足多重条件 您可以查找在同一字段上满足多重条件的所有记录。例如，您可以查找所有美国和墨西哥的顾客记录。若要选择这些记录，请在“条件”窗格中键入两组条件。若要指定所有条件中只要有一个条件为真的多重条件，请创建 OR 条件表达式。在 OR 条件表达式中，只需多个条件中的一个条件为真。

满足 OR 条件表达式的条件

上面的查询条件查找所有美国或墨西哥的顾客记录。

注释 您也可以在一个条件值中使用 Or 运算符。例如，您可以在“值”框中键入“美国 Or 墨西哥”，而不必在“或”框中键入“墨西哥”。

其他信息

使用逻辑运算符的表达式示例

返回页首

查找类似记录

您可以查找在某个字段中具有相似值的记录，比如查找具有相同国家或地区代码的电话号码。例如，您可以查找所有电话号码的地区代码为 171 或国家代码为 1 和 11 的顾客的记录。

若要使用 Like 运算符，请键入单词 Like，然后在单引号中键入您所要查找的值。

注释 上例中的百分号 (%) 是一个通配符，它代表任意数目的字符。而强调线 (_) 则只代表一个字符。对于不同的数据源，您能使用的通配符也将不同。有关驱动程序所支持的通配符的详细信息，请参阅数据源驱动程序的相关文档。

其他信息

使用其他类型的运算符的表达式示例

返回页首

指定值的范围

您可以查找位于某个值范围或时期范围内的所有记录。例如，您可以检索从 1998 年 11 月 1 日到 1998 年 12 月 31 日之间的所有订单记录。若要指定必须同时满足的两个或多个条件，请创建一个 AND 条件表达式。您可以指定 AND 条件表达式来定义值的范围。

在“条件”窗格中使用了两次相同字段的 AND 条件表达式。

包含 AND 运算符的范围

用 And 运算符分隔上下界的 AND 条件表达式。

注释 当您在“条件”窗格中键入日期时，Query 会将日期转换成可识别的格式。例如，当您键入条件 >10/31/1998 时，Query 会将其转换为 >#10/31/98#。

其他信息

使用比较运算符的表达式示例

返回页首

计算式的用法

您可能需要查找能够匹配某种计算结果的记录，例如查找订单总额超过某个数值的所有记录，而这个数值是根据“价格”字段乘以“数量”字段得到的。

若要查找所有订单总额超过 500 美元的记录，请创建公式来计算订单总额，然后再指定条件。

其他信息

使用算术运算符的表达式示例

返回页首

排除特定记录

您不但可以找到能匹配某个特定值的记录，也可以找到不匹配某个值的记录。例如，您可以使用“非”运算符来查找所有美国以外的供应商的记录。

使用“非”运算符排除记录。

其他信息

使用逻辑运算符的表达式示例

返回页首

查找不完整记录

您可以查找包含空值或不完整值的记录。例如，您可以使用“为空”运算符来查找所有缺少主管人姓名的雇员的记录。

使用“为空”运算符查找包含空字段的记录。

其他信息

使用其他类型的运算符的表达式示例

返回页首


用条件限制检索的记录

可使用条件检索特定的记录。Microsoft Query 使用指定的条件检索所需记录，并将其显示在结果集中。如果要限制检索的记录，那么您可以在结果集中选定某个值，然后查找能匹配该值的其他值。或者，也可以在“条件”窗格中创建特定的条件，然后再检索仅满足该条件的记录。

请选择：

关于条件的用法

检索与特定值相匹配的记录

用条件指定检索哪些记录

可用作条件的表达式示例


用条件指定检索哪些记录

  1. 单击“显示/隐藏条件” 按钮图像 。

    此时 Microsoft Query 将显示“条件”窗格。

  2. 在“条件”窗格中，单击“条件字段”行内的第一个单元格，再在下拉列表框中单击想要应用条件的字段。

    如果查询中使用了若干包含同名字段的表，请确认单击选定的字段来自正确的表。

  3. 在“值”行内，单击在“条件字段”行中选定字段正下方的单元格。
  4. 键入希望 Microsoft Query 用于选择记录的条件，然后按 Enter。

    操作方法

  5. 如果此时还未完成操作，可继续添加希望出现在结果集中的字段。

    操作方法

    如果要显示其他表中的字段，请在查询中将那些表添加到“表”窗格内。有关添加表的详细信息，请单击 按钮图像 。

注释

  • 可向条件窗格内添加另外的条件以进一步限制结果集。例如，可查找所有供应奶酪的挪威和意大利供应商的记录。若要选取这些记录，可在“条件”窗格中键入两组条件。首先应在“条件字段”下拉列表框内单击“国家/地区”字段，再在“值”编辑框内输入“挪威或意大利”。然后应在下一个“条件字段”下拉列表框内单击“类别”字段，再在相应的“值”编辑框内输入“=奶酪”。
  • 如果要用于条件的值已出现在结果集中，请将其复制到条件窗格内。在结果集中，单击要复制的值，再单击“编辑”菜单中的“复制”，然后单击“值”行内要粘贴该值的位置。再单击“编辑”菜单中的“粘贴”。
  • 为避免长时间地等待返回每个字段中的数据，可在向结果集添加完所有的字段之后，再检索数据。若要等待检索数据，请确保尚未按下“自动查询” 按钮图像 按钮。当准备好运行查询以后，可单击“立即查询” 按钮图像 。
  • 如果查询时检索数据花费的时间过长，请按 Esc 取消该查询。


检索与特定值相匹配的记录

  1. 请确认按下了“自动查询” 按钮图像 按钮。
  2. 将想要指定条件的字段添加到“数据”窗格内。

    操作方法

    例如，如果要检索“国家/地区”字段中包含“法国”的记录，就应将“国家/地区”字段添加到数据窗格内。

  3. 在结果集中，请单击包含要匹配的值的单元格。
  4. 单击“相等条件” 按钮图像 。


删除条件以恢复完整的结果集

如果查询中包含许多记录，那么可等到删除所有条件后再刷新该结果集，这样可节省时间。若要等待刷新结果集，请确保未按下“自动查询”按钮 按钮图像 。

  1. 在“条件”窗格中，单击包含要删除的条件的列的列标题。
  2. 按 Delete。

    对每一组要删除的条件重复第 1 步和第 2 步。

    若要同时删除所有条件，请单击“条件”菜单中的“删除所有条件”。

注释 如果未按下“自动查询”按钮，则必需单击“立即查询” 按钮图像 以恢复完整的结果集。


关于表达式

表达式是综合使用了运算符、函数、字段名和常量的一种计算式。

可以将表达式作为条件来选择记录。为了在“条件”窗格中使用表达式，您需要在“条件字段”中选择希望求值的字段，然后在“值”框中输入运算符和值。当您选择条件字段时，请确保该字段来自正确的表。

使用算术运算符的表达式 若要检索基于运算结果的记录，请创建一个使用算术运算符进行加减乘除运算的表达式。请参阅使用算术运算符的表达式中的示例。

使用比较运算符的表达式 比较运算符会对两个值进行比较。例如，若要查找所有销售数量超过 1,000 个单位的订单，请键入 >1000，并将其作为“数量”字段的条件。请参阅使用比较运算符的表达式中的示例。

使用逻辑运算符的表达式 逻辑运算符与比较运算符类似，用于比较值。例如，若要检索法国以外的所有销售记录，请将词组“Not France”作为“国家/地区”字段中的条件。请参阅使用逻辑运算符的表达式中的示例。

使用其他类型运算符的表达式 您可以使用其他运算符来查找与多个值中的某个值相等的值，这样可以确定某个记录的指定字段中是否包含该值，或者您也可以通过通配符查找记录。请参阅使用其他类型运算符的表达式中的示例。


表达式示例

表达式是包含运算符、函数、字段名和常量的计算。可以将表达式作为条件来选择记录。若要在“条件”窗格中选择记录，请在“条件字段”中选择包含要求值的字段，然后在“值”框中输入运算符和值。

请选择：

使用算术运算符的表达式

使用比较运算符的表达式

使用逻辑运算符的表达式

使用其他类型运算符的表达式

无法确定选择以上哪一项


使用算术运算符的表达式示例

算术运算符执行基本的数学运算，如加、减、乘、除等，并得出数字结果。可在“条件”窗格或计算字段内的表达式中使用算术运算符。

算术 运算符 | 含义 | 示例 | 语法
+（加号） | 加法 | 某客户支付的款项总额 | Order_Amt+Freight
–（减号） | 减 | 订货总价格，包括折扣 | Order_Amt-Discount
*（星号） | 乘法 | 某一特定产品的订货总额 | Unit_Price*Quantity
/（正斜线） | 除法 | 单价 | Order_Amt/Quantity


使用比较运算符的表达式示例

如果有些表达式被用作选择记录和限制结果集的条件，则该表达式内可使用比较运算符。

比较 运算符 | 含义 | 示例 | 在“条件字段” 列表框中， 单击 | 在 “值”框中， 键入
=（等号） | 等于 | 查找德国客户的记录 | 国家/地区 | =德国
<>（不等号） | 不相等 | 查找美国之外的供应商的记录 | 国家/地区 | <>美国
>（大于号） | 大于 | 查找某一特定日期之后的订货记录 | 订货日期 | >6/30/2000
<（小于号） | 小于 | 查找某一特定日期之前的订货记录 | 订货日期 | <6/30/2000
>=（大于等于号） | 大于或等于 | 查找某一特定日期及该日期之后的订货记录 | 订货日期 | >=6/30/2000
<=（小于等于号） | 小于或等于 | 查找某一特定日期及该日期之前的订货记录 | 订货日期 | <=6/30/2000


使用逻辑运算符的表达式示例

逻辑运算符用于比较两个值。

逻辑 运算符 | 含义 | 示例 | 在“条件字段”列表框内，单击 | 在 “值”框内， 键入
And | 对结果集中的记录，此条件和另一条件在同一字段内必须同时满足。 | 查找某一特定日期范围内的订货记录 | 订货日期 | >6/5/2000 And <6/23/2000
Or | 对结果集中的记录，此条件或者另一条件必须满足。 | 查找两个地方之一的供应商的记录 | 国家/地区 | 美国或巴西
Not | 结果集中的记录必须不满足此条件。 | 查找不在某一特定国家/地区的供应商的记录 | 国家/地区 | 非加拿大


使用其他类型的运算符的表达式示例

下表所列出的运算符，可用于选择某一范围内的值，查找若干值中的任一值，判断某一记录在指定字段内是否包含有效值，或者用通配符查找记录。

运算符 | 含义 | 示例 | 在“条件字段” 列表框中， 单击 | 在“值” 编辑框中， 键入
Between | 显示介于两个上下限值范围内的值，包括这两个上下限值 | 查找订货量在 1,000 美元到 3,000 美元之间的记录 | Order_Amt | Between 1000 And 3000
In | 判断某值是否等于某清单内的某一值 | 查找波特兰港、西雅图和丹佛的客户记录 | City | In('Portland', 'Seattle', 'Denver')
Is Null | 判断记录的指定字段内是否不包含有效值 | 查找没有主管人姓名数据的雇员的记录。 | Reports_To | Is Null
Is Not Null | 判断记录的指定字段内是否包含有效值 | 查找有主管人姓名数据的雇员的记录。 | Reports_To | Is Not Null
Like | 可将 Like 和通配符 % 用于比较值 | 查找姓以“Sm”开头（例如“Smith”和“Small”）的雇员的记录 | Last_Name | Like 'Sm%'


创建计算字段

可以通过创建称之为计算字段的新字段来显示指定的计算结果。通过输入自己的表达式可以创建计算字段，而表达式是由运算符、函数、字段名和常量构成的计算式。还可以在字段中使用内置函数来计算汇总。

请选择：

使用表达式创建计算字段

使用内置函数创建计算字段


用表达式创建计算字段

  1. 在“数据”窗格中，单击空白的列标题。
  2. 键入计算的表达式，再按 Enter。不要将等号 (=) 放在表达式的开始。

    例如，如果雇员的佣金是其总销售额的 15%，则可将每个雇员的销售额相加，再将所得的和乘以 0.15，就得到了该雇员的佣金。

    若要查阅使用算术运算符的表达式的示例，请单击 按钮图像 。


使用函数创建计算字段

  1. 将包含要进行汇总的值的字段添加到查询中。

    操作方法

  2. 单击要进行汇总的字段内的任意位置，再单击“循环汇总” 按钮图像 。
  3. 继续单击“循环汇总”按钮直至 Microsoft Query 显示所需的汇总类型。

    每次单击“循环汇总”按钮时，Microsoft Query 都将计算并显示不同类型的汇总（所用的函数显示在列标题内）。如果要查阅可用于在计算字段内创建汇总的函数的说明，请单击 按钮图像 。

  4. 当选择完用于生成所需汇总类型的函数之后，单击“立即查询” 按钮图像 以显示计算字段的结果。

注释

  • 如果要将计算从字段中删除，请单击“循环汇总”直至列标题内出现原来的字段名。
  • 如果查询中包含许多记录，可等到选择了所需的函数后再显示计算字段的结果，以节省时间。并确认未按下“自动查询” 按钮图像 。


可在计算字段中使用的函数

函数通过计算或其他操作返回所得结果的值。例如，SUM 函数返回两个或多个值的和。Microsoft Query 支持以下函数。对于某一数据源，事实上可用的函数类型依赖于该数据源所用的 ODBC 驱动程序。若要查看数据源有哪些函数可用，请单击某一数字字段，再单击“循环汇总” 按钮图像 。

要返回的值为 | 请使用
字段内某一组值的平均值 | AVG
记录的总个数 | COUNT
字段内某一组值中的最大值 | MAX
字段内某一组值中的最小值 | MIN
字段内某一组值的和 | SUM


更改结果集的布局

当插入字段或更改字段的排列顺序时，对结果集的布局所做的更改将在使用 Microsoft Query 时，以及将结果集返回到 Microsoft Excel 时保留。

请选择：

更改结果集内的字段的顺序

将字段插入结果集


设置 Microsoft Query 中的数据格式

本主题中的部分内容可能不适用于某些语言。

保存查询时，Microsoft Query 将保存对查询所做的更改。如果在 Query 中设置数据的格式，那么在将结果集返回给 Microsoft Excel 后这些格式将不起作用。但是如果更改结果集中字段的顺序或字段本身，那么当将结果集返回给 Excel 后，这些变化将保留。

请选择：

更改字段的列标题，使之更具描述性

更改列宽或行高

更改结果集内文本的字体、字形或字号

隐藏或显示结果集内的字段

更改结果集的布局


在结果集内转到某一特定的记录

  1. 在“记录”菜单上，单击“定位”。
  2. 键入要定位到的记录的编号。


对查询中的记录排序

  1. 请确认按下了“自动查询” 按钮图像 按钮。
  2. 在结果集中单击要排序的字段。
  3. 若要以升序的排序次序排列记录，请单击“升序排序” 按钮图像 。

    若要以降序的排序次序排列记录，请单击“降序排序” 按钮图像 。

注释

  • 如果要同时对若干列进行排序，应首先将这些列在“数据”窗格内按排序的次序从左至右调整好。按住 Shift 单击列标题，选定要排序的列，然后再单击“升序排序”按钮或“降序排序”。
  • 如果要将记录恢复到原来的次序，请单击“记录”菜单上的“排序”。然后在“查询中的排序”列表框中，单击要恢复到原来次序的列，再单击“删除”。
  • 完成对记录的排序之后，如果改变了结果集中列的次序，排序的结果将不受影响。


在查询中查看不同字段

  1. 在“格式”菜单上，单击“显示列”。
  2. 若要临时地在“数据”窗格中隐藏某一列，请在此处单击该列，再单击“隐藏”。

    若要重新显示某一列，请单击该列的名称，再单击“显示”。

注释 向 Microsoft Excel 返回结果集时，隐藏的列也包括在结果集中。如果不希望将隐藏列返回到 Microsoft Excel 中，那么请在返回结果集之前，从数据窗格内删除该列。


关于更改用于查询的数据库中的数据

更改从中检索过数据的数据库 有些情况下，可以使用 Microsoft Query 更改外部数据库中的数据或删除外部数据库中的数据。当更改查询结果时，Microsoft Query 也会更改用于查询的基础表中的数据。

不能更改数据库的情况 在下列情况下，不能更改用于查询的数据库中的数据：

  • 数据源被写保护或不允许更改。
  • 查询中包含多张表。
  • 查询中包含汇总或自定义表达式。
  • 要更改的字段已锁定或禁用，或字段位于某个锁定的记录中。
  • 输入的数据不是数据库中的有效数据类型。根据要更改的数据库，请在字段中输入特定类型的数据。
  • 管理员已设置为禁止修改数据库。


更改用于查询的数据库中的数据

请选择：

关于更改用于查询的数据库

更改用于查询的数据库中的数据

删除用于查询的数据库中的数据

撤消对用于查询的数据库中的数据所做的更改


用动态数据交换 (DDE) 与 Microsoft Query 通信

本主题中的部分内容可能不适用于某些语言。

Microsoft Query 支持动态数据交换 (DDE)，动态数据交换是一种通信方式，可用该方式在两个程序之间交换数据。可以在 Visual Basic for Applications 中使用 DDE 方法，以便在 Microsoft Query 和其他程序（如 Microsoft Excel）之间通信并来回传送数据。

使用 DDE

打开 DDE 通道

执行 DDE 命令

DDE 命令

获取状态信息和其他信息

检索数据

使 Microsoft Query 退出 DDE

关闭 DDE 通道

与其他程序共用 Microsoft Query


DDE 命令

单击命令或请求以显示参考信息

Activate

AddParameters

AllowEdit

BuildODBC

BuildSQL

Close

Command

EnableParameters

EnableTensor

Exit

Fetch and Fetch.Advise

Fetch.Unadvise

Logoff

Logon

LogonNow

ODBCLogon

Open

ParameterNames2

QueryNow

QueryType

SaveAs

SetParameterName

SetQueryName

SetQueryType

SetWindowState

UserControl

UserControl2

ViewPane


Microsoft Query 疑难解答

本主题中的部分内容可能不适用于某些语言。

创建和使用数据源

无法创建新的数据源

无法找到或删除数据源

为何数据源旁有星号

以前可正常使用的 ODBC 驱动程序现在不能正常工作了

创建查询

无法找到所需的表

无法创建所需的连接

连接未能给出预期的记录

无法编辑 SQL 过程的参数类型

无法编辑查询

检索数据

有消息提示数据库路径无效

Microsoft Query 一再超时，无法连接到数据库上

无法通过 Microsoft Query 访问 Microsoft Excel 工作表中的列表

即使当前不在数据库上工作，Microsoft Query 也在使用连接资源

Microsoft Query 未返回所有可用的记录

使用 Microsoft Query

为什么无法在 Microsoft Query 中继续工作了

在查询中所做的更改或所设置的格式未被保留

无法用 Microsoft Query 打印结果集

无法用 Microsoft Query 创建邮件标签

无法将结果集保存为数据库中的表

无法添加、复制或移动数据库中的记录


OLAP 查询和多维数据集疑难解答

多维数据集数据所需的汇总函数不可用

日期或时间字段的划分不正确

在保存脱机多维数据集文件时，磁盘空间不足

无法向 OLAP 多维数据集中添加字段

无法更改 OLAP 多维数据集

更改 OLAP 多维数据集时，有消息显示数据已丢失

有消息显示“OLAP 多维数据集向导”无法打开 .oqy 文件


Microsoft Query 如何处理 2000 年的日期

建议使用四位数字表示年份 为正确检索和解释年份值，请确保外部数据库尽可能以四位数字保存年份值（例如：用 2001 而不是 01 表示年份）。

Query 和 Microsoft Excel 以一致方式解释用两位数字表示的年份 Query 和 Excel 以相同方法解释用两位数字表示的年份。当用户在 Query 中查看包含两位数字年份值的数据并将这些数据返回到 Excel 中时，这些年份值对于这两个程序都是相同的。

Query 如何解释用两位数字表示的年份 当 Query 从外部数据库中检索用两位数字表示的年份值时，它会按以下规则解释年份：

  • 为 00 到 29 之间的年份值 如果年份值的范围在 00 到 29 之间，则会被解释为 2000 到 2029。例如，如果 Query 从外部数据库中检索到日期“19-5-28”，则它表示“2019 年 5 月 28 日”。
  • 为 30 到 99 之间的年份值 如果年份值的范围在 30 到 99 之间，则会被解释为 1930 到 1999。例如，如果 Query 从外部数据库中检索到日期“98-5-28”，则它表示“1998 年 5 月 28 日”。

管理员可以更改年份的解释规则 系统管理员可以自定义 Microsoft Office，这样就会有不同的解释规则来解释数据。例如，管理员可以将用于确定界限（这之前的年份将被解释为 2000 年以后的年份）的以两位数字表示的年份值由 29 更改为另一数字。若要了解系统是否使用了自定义的日期解释方法，可向系统管理员咨询。


无法执行查询，是否要查看 SQL 语句？

Microsoft Query 无法运行 SQL 语句，原因是 SQL 语句引用的某一对象当前处于无效状态。例如，该语句可能引用了一张已经不存在的表。若要查看 SQL 语句并进行必要的更改，请单击“确定”。


表 <name> 已存在于查询中，是否要再次添加该表？

试图向查询中添加一张已存在于“表”窗格中的表。

  • 若要添加该表，以创建自连接，那么请单击“确定”。
  • 若不想添加该表，请单击“取消”。


数据格式错误，无法粘贴

由于没有足够的内存，Microsoft Query 无法粘贴剪贴板上的数据。

关闭 Microsoft Query 中不用的窗口或其他程序。如果再次出现本错误，请重新启动 Microsoft Windows，然后再复制和粘贴数据。


无法存入已打开的文件中

要存入的文件已打开。在存入该文件之前应先将其关闭。


其他应用程序处于忙碌状态

动态数据交换 (DDE) 对话中的另一个应用程序处于忙碌状态，无法执行 DDE 操作。请等到该应用程序空闲时再进行操作。


“GROUP”后缺少“BY”

SQL 语句中包含的是 GROUP 从句，而不是 GROUP BY 从句。可能错拼或缺少了“BY”。


“ORDER”后缺少“BY”

SQL 语句中应包含 ORDER BY 从句，而不是 ORDER 从句。可能错拼或缺少了“BY”。


无法打开剪贴板

剪贴板没有响应，可能是因为其他程序正在使用它。请关闭该程序，然后再试一次。


无法打开文件 <name>

Microsoft Query 无法打开或读取要打开的文件，或无法保存文件。可能出现了磁盘错误，或该文件已损坏。


无法启动 Microsoft Query，请再试一次

产生了系统错误，或者内存不足而无法启动 Microsoft Query。

再次启动 Microsoft Query 或关闭其他程序。如果再次出现本错误，请重新启动 Microsoft Windows 之后再重复本操作。


列 <name> 无法使用运算符 <operator>

数据源不允许在该字段上使用指定的运算符，因为该字段的数据类型不能使用该运算符。请参阅数据源的文档，以了解在此种数据类型的字段上能使用哪种类型的运算符。


列 <name> 无法用于指定条件

在这种数据类型的列（字段）上无法指定条件。


由于内存不足或未正确地安装 Microsoft Windows 或 Microsoft Query，因此无法显示“帮助”

若要释放内存，请关闭其他窗口或程序。如有必要，请重新安装 Microsoft Windows 或 Microsoft Query。


无法粘贴

剪贴板没有响应。其他程序可能正在使用它，或者 Microsoft Query 无法识别剪贴板上的数据格式，或者没有足够的内存来粘贴这些数据。

关闭 Microsoft Query 中不用的窗口或其他程序。如果再次出现本错误，请重新启动 Microsoft Windows，然后再复制和粘贴数据。


无法退出 Microsoft Query

Microsoft Query 正在通过动态数据交换 (DDE) 与其他程序进行通信。请等到 DDE 操作结束后再退出 Microsoft Query。


无法显示条件

指定的条件无效。


无法将表达式 <name> 添加到排序列表中

所用的数据源不允许对显示表达式结果的字段进行排序。


无法进行表总计

在“字段”框内键入了星号 (*)，而未指定要进行汇总的某一特定字段。请删除“*”，再输入字段的名称。


无法将 * 指定为字段。若要添加所有字段，请将 * 拖到网格内

在“条件”窗格的“条件字段”单元格内键入了星号 (*)。如果要为查询中的所有字段指定条件，请使用下列方法之一，而不要键入星号。

  • 将表内的 * 拖动到“条件”窗格中。
  • 双击表内的星号。
  • 逐个添加所有字段。


函数 <name> 无法用于 <column name>

所选函数不能对此字段内的数据类型进行计算。例如，如果“SHIP_CNTRY”字段内所包含的是文本数据，就不能计算该字段的平均值。


不支持剪贴板内的数据格式

Microsoft Query 无法识别剪贴板上的数据格式。


有些查询正在使用 <connection name>，是否仍要关闭？

有一个或多个查询正在使用要删除的数据源。

  • 若要删除数据源并关闭正在使用该数据源的查询，请单击“确定”。
  • 若要保留数据源，并使正在使用该数据源的查询继续保持打开状态，请单击“取消”。


删除 <number> 条记录

用户要删除指定数目的记录。

注释 如果此处出现的记录数目大于指定的记录数，就表示 Microsoft Query 基于“数据”窗格中的字段找到了重复的记录。如果要避免出现重复记录，请在删除记录之前将所有的字段添加到“数据”窗格内。

  • 若要删除记录，请单击“确定”。
  • 若不想删除记录，请单击“取消”。


<Number> 条记录与所做的选择相匹配，是否要将其全部删除？

因为“数据”窗格内不包含能够唯一地识别各个记录的字段，如“客户 ID”字段或“订单 ID”字段，所以结果集内包含与要删除的记录相匹配的其他记录。如果删除了选定的记录，Microsoft Query 也将删除其他相同的记录。

为了在编辑数据之前区别这些记录，请确保已将基础表中的所有字段添加到了“数据”窗格内，或在表中创建了唯一的索引。


更新 <Number> 条记录

“数据”窗格内包含与修改记录相匹配的其他记录。这样，Microsoft Query 将自动用相同的改动来更新匹配的记录。

  • 若要避免在“数据”窗格内出现重复记录，请在修改数据之前将所有字段添加到“数据”窗格内。
  • 若要更新所有匹配的记录，请单击“确定”。
  • 若不想更新任何记录，请单击“取消”。


无法创建文件

Microsoft Query 无法创建指定的查询文件。可能是因为出现了磁盘错误，或该文件已损坏。


成功地创建了表 <name>

Microsoft Query 用选定的数据源创建了所定义的表。


创建唯一索引失败，是否要亲自创建该索引？

Microsoft Query 无法创建该表的唯一索引，即使要保存为新表的结果集所基于的表中包含了唯一索引。

  • 若要显示“创建索引”对话框，以便创建该表的唯一索引，请单击“是”。
  • 若不想创建唯一索引，请单击“否”。


指定的长度必须大于 0（零）

在“表定义”对话框内的“长度”框中指定的长度必须大于 0（零）。


Activate 命令 (DDE)

激活指定的查询窗口。当打开了若干个窗口时，可用此命令更改活动窗口。该命令只能用于系统通道。

语法

Activate(queryname)

queryname 要激活的查询窗口的名称。

示例

本示例执行了两个查询，创建了两个查询窗口。执行完第二个查询后，本示例使第一个查询所创建的查询窗口成为活动窗口。

DDEExecute chan, "[BuildSQL('Select * From Customers')]"
DDEExecute chan, "[QueryNow()]"
stQueryname1 = DDERequest(chan, "Query")
DDEExecute chan, "[BuildSQL('Select * From ORDERS')]"
DDEExecute chan, "[QueryNow()]"
stQueryName2 = DDERequest(chan, "Query")
DDEExecute chan, "[Activate('" & stQueryname1(1) & "')]"


AddParameters 命令 (DDE)

向活动查询添加用于数据透视表的参数。

语法

AddParameters(field1, field2, …)

field1, field2, … 要作为参数添加到条件中的列的名称。新参数的名称定义为字段名称本身。如果指定的字段名称在活动查询中无效，将产生错误。

说明

即使在 Microsoft Query 中禁用了参数输入，仍然可以使用 AddParameters 命令。

通过请求 ODBCSQLStatement 项可返回修改后的 SQL 字符串。

若要重新设置参数，就必须重新设置整条 SQL 字符串。


AllowEdit 命令 (DDE)

决定在查询窗口中是否允许编辑。此命令既能用于系统通道，也能用于查询通道。它等价于“记录”菜单内的“允许编辑”命令。

语法 1

AllowEdit(allowedit, locked)

语法 2

Allow.Edit(allowedit, locked)

这两种形式的语法是等价的。

allowedit 决定在查询窗口中是否允许编辑。该值可为 True 或 False。

locked 当“用户控制”起作用时，本参数决定是否禁用“记录”菜单上的“允许编辑”命令。该值可为 True 或 False。

示例

本示例执行预先建立的 SQL 语句。然后本示例向 Microsoft Query 发送“允许编辑”命令和“用户控制”命令，以使用户只能查看而不能编辑数据源中的数据（“用户控制”起作用后，将禁用“允许编辑”菜单命令）。

DDEExecute chan,"[BuildSQL(""" & sql & """)]")
DDEExecute chan,"[QueryNow()]")
DDEExecute chan,"[AllowEdit(False, True)]")
DDEExecute chan,"[UserControl(""&Return Data"", 3, False)]")


BuildODBC 命令 (DDE)

建立任意长度的连接字符串，每次一段。

语法

BuildODBC([connectstring])

connectstring 有效连接字符串的一段。如果 connectstring 为 0（零）或省略，则连接字符串被清除。


BuildSQL 命令 (DDE)

在 DDE 通道中，每次一条地建立 SQL 语句以新建查询。此命令只能用于系统通道。

语法

BuildSQL[(sqltext)]

sqltext 有效的 SQL 语句。如果 sqltext 为 0（零）或省略，则 SQL 语句被清除。

说明

建立较长的 SQL 语句时，BuildSQL 十分有用。例如，如果某一条 SQL 过长，无法在一条指令内发送完，就可以将其分成几条较短的部分来发送。

SQL 语句建立完成后，可用 QueryNow 命令执行它。

示例

本示例使用 QueryDefinition 请求项返回用于定义查询的 SQL 语句。

sql = DDERequest(chan,"QueryDefinition")

本示例使用 BuildSQL 命令，将所返回的 SQL 字符串连同附加的 WHERE 从句重新发送。

DDEExecute chan, "[BuildSQL(""" & sql & """)]"
DDEExecute chan, "[BuildSQL("WHERE Freight > 10")]"
DDEExecute chan, "[QueryNow()]


Close 命令 (DDE)

关闭当前的查询。此命令既能用于系统通道，也能用于查询通道。

语法

Close( )


关闭 DDE 通道

若要关闭 DDE 通道，请用 DDETerminate 方法。该方法仅有一个参数，即要关闭的 DDE 通道的通道号。使用 DDETerminate 方法时，相应通道上所有打开的查询都将自动关闭，并且将从所有连接的数据源上注销。

如果使用的通道号无效，将返回错误。


Command 命令 (DDE)

向 Microsoft Query 发送“打开”命令。有些程序限制用于 DDEExecute 函数的字符串长度，本命令就是为这些程序提供的。

此命令只能用于系统通道。

语法

Command(opnum, execstring)

opnum 决定 Microsoft Query 接受命令的方式。可为以下值之一。

值 | 说明
1 | 用 execstring 初始化 Microsoft Query 的缓冲区（如果缓冲区内已有内容，请将其清除），但不执行查询。
2 | 将 execstring 连接到缓冲区的尾部。
3 | 将 execstring 连接到缓冲区的尾部，并执行命令缓冲区内的所有命令。因为执行该命令后，命令缓冲区的内容将被清除，所以无法重复执行 execstring。

execstring 指定“打开”命令的段。整个字符串必须用单引号或双引号引起来。

Microsoft Query 只支持用 Command 命令发送“打开”命令。

说明

本命令只是为 Q+E 兼容性而提供。建议在可能的情况下尽量使用 BuildSQL 命令来发送较长的 SQL 语句。


EnableParameters 命令 (DDE)

控制用户是否可以在条件窗格和 SQL 窗口中指定参数。默认情况下，用户无法指定参数。如果用户已输入了参数，就不能再禁用参数指定了。

语法

EnableParameters(flag)

flag 决定用户是否可以指定参数。可以是 0（零）（表示禁用指定参数）或 1（表示启用指定参数）。


EnableTensor 命令 (DDE)

指示目标程序是否支持 OLAP 数据源。此命令仅在系统通道中有效。

语法

EnableTensor(flag)

flag 如果该值为 True，则可以将 OLAP 数据源返回给目标程序。如果该值为 False 或将其省略，则只可将非 OLAP 数据源返回给目标程序。


执行 DDE 命令

可用 DDEExecute 方法向 Microsoft Query 发送命令。这些命令是专门用于 Microsoft Query 的，有些命令相应于 Microsoft Query 的菜单命令，而有些命令则不是。例如，Open 命令和 SaveAs 命令与 Microsoft Query 中的等价菜单命令执行同样的功能，而 ODBCLogon 命令和 UserControl 命令则没有等价的菜单命令。如果要查阅有效的菜单命令的清单，请单击 按钮图像 。

DDEExecute 语句有两个参数。

参数 | 说明
channel | 由 DDEInitiate 返回的 DDE 通道号。
command | 要发送到 Microsoft Query 的命令。

若要让用户自己在 Microsoft Query 中建立查询，可执行 UserControl 命令。下例将“My Exit Command”设为 Microsoft Windows 或 Macintosh 的“文件”菜单中的“退出”命令。

DDEExecute Chan,"[UserControl('&My Exit Command',3,True)]"

DDE 通道号已被预先赋给了变量 Chan，发送到 Microsoft Query 的命令是 UserControl。请注意，UserControl 命令及其参数应当用双引号 ("") 和方括号 ([ ]) 括起来。


Exit 命令 (DDE)

退出 Microsoft Query。此命令只能用于系统通道。

语法

Exit(exitall)

exitall 当通道中除执行 Exit 命令的查询之外其他所有的查询均处于打开状态时，本参数决定是否退出 Microsoft Query。该值可为 True 或 False。

如果该值为 True，则不论打开了哪些查询，都将退出 Microsoft Query。如果 Microsoft Query 通过另一条通道处于用户控制状态下（即执行了 UserControl 命令），则该设置将关闭该通道，并将控制返回到启动 Microsoft Query 的程序中。

如果该值为 False，则仅在所有打开的查询都是由执行 Exit 命令的通道打开的情况下，才退出 Microsoft Query。

说明

此 DDE 命令也可用于退出 Macintosh 操作系统中的 Microsoft Query。


使 Microsoft Query 退出 DDE

本主题中的部分内容可能不适用于某些语言。

若要退出 Microsoft Query，程序可以使用 Exit 命令，而不必单击“文件”菜单中的“退出”命令。

命令 | 说明
Exit (False) | 仅当其他通道上不存在打开的查询时，才退出 Microsoft Query。
Exit (True) | 不论有无其他打开的查询，都退出 Microsoft Query。


Fetch 命令和 Fetch.Advise 命令 (DDE)

Fetch 命令从 Microsoft Query 中检索数据，并将检索到的数据直接发送到目标程序中。

Fetch.Advise 命令不仅在发送 Fetch.Advise 命令时自动更新目标应用程序，而且当 Microsoft Query 中的数据发生变化时，也将自动更新。

这些命令既能用于系统通道，也能用于查询通道。

语法 1

Fetch.Advise(appname, topic, range, values)

语法 2

Fetch(appname, topic, range, values)

appname 数据要发往的目标应用程序的名称。下面是用于 Office 应用程序的 appname 参数：

程序 | appname 的值
Microsoft Access | MSAccess
Microsoft Excel | Excel
Microsoft Word | WinWord

topic 数据要发往的工作表、文档或控件的名称。

range 数据要发往的工作表、文档或控件中的区域。

values 要从 Microsoft Query 中检索的数据。（有关有效的取值的详细信息，请参阅下表）。

注释 注意 Fetch.Advise 命令只自动更新查询区域，而不自动更新请求项或 row#col# 引用。

可为以下值之一：

值 | 说明
Request_item | 要返回的信息，如 QueryDefinition。
row#col# | 要检索的特定行或特定列的引用，如 Microsoft Excel 的 R3C5。
/Headers | 检索列名称。
/Rownum | 检索行号。
All | 检索所有记录。

说明

对于 Fetch.Advise 命令，为向目标程序返回数据而创建的通道将保持打开状态，直到发送了 Fetch.Unadvise 命令或 Close 命令。

示例

本示例使用 NumRows 和 NumCols 请求项以返回查询中的行数和列数，然后又将数据连同列标一起返回到 Microsoft Excel 的工作表 Sheet1 中。

rows=REQUEST(Chan,"NumRows")
cols=REQUEST(Chan,"NumCols")
DDEExecute chan, "[Fetch(""Excel"", ""Data.xls!Sheet1"", _
    ""R1C1:R"&rows&"C"&cols&""", ""All/Headers"")]"


检索数据

与 DDERequest 命令将数据返回到程序相比，Fetch 命令和 Fetch.Advise 命令值得一提的地方在于，它们将从 Microsoft Query 中检索到的数据直接送到工作表或文档中。Fetch 命令和 Fetch.Advise 命令用作 DDEExecute 方法的命令参数。

Fetch.Advise 命令与 Fetch 命令类似，但是由 Fetch.Advise 命令所打开的通道，在第一次数据检索完成之后，并不立即关闭。Microsoft Query 可继续对数据进行修改，直到原 DDE 通道关闭或 Microsoft Query 收到 Fetch.Unadvise 命令。


Fetch.Unadvise 命令 (DDE)

删除由 Fetch.Advise 命令设置的自动更新功能，并关闭由 Microsoft Query 打开的用于向目标程序传递数据的通道。此命令既能用于系统通道，也能用于查询通道。

注释 Fetch.Unadvise 命令的参数必须与 Fetch.Advise 命令以前使用的参数相匹配。

语法

Fetch.Unadvise(appname, topic, range, values)

appname 数据要发往的目标应用程序的名称（有关示例的详细信息，请参阅 Fetch.Advise 命令）。

topic 数据要发往的工作表、文档或控件的名称。

range 数据要发往的工作表、文档或控件中的区域。

values 要从 Microsoft Query 检索的数据（有关有效取值的清单的详细信息，请参阅 Fetch.Advise 命令）。


<filename> 的版本不兼容，Microsoft Query 无法运行

“Ddeml.dll”文件过旧，或没有该文件。请重新安装 Microsoft Query 或 Microsoft Windows。


Logoff 命令 (DDE)

注销指定的数据源。此命令只能用于系统通道。

语法

Logoff(source)

source 要中断连接的数据源的名称。


Logon 命令 (DDE)

显示使用户登录到数据源的对话框。此命令只能用于系统通道。

语法

Logon(source)

source 要连接的数据源的名称。


LogonNow 命令 (DDE)

如果已用 BuildODBC 命令建立了连接字符串，则本命令就用缓冲区内的连接字符串登录。如果缓冲区内没有连接字符串，将产生错误。

语法

LogonNow([dialog])

dialog 决定在登录时是否显示对话框。可为以下值之一。

值 | 说明
0（零） | 不显示任何对话框。如果省略本参数，则默认值为 0（零）。
1 | 显示对话框以提示用户输入未在连接字符串中指明的信息。
2 | 显示对话框，以连接字符串中指明的信息作为对话框内的默认值。
3 | 等同于 1，但那些对于连接数据源不是必需的信息，在对话框中将变灰显示。


ODBCLogon 命令 (DDE)

使程序连接到数据源。可以指定登录时是否将对话框显示给用户。此命令只能用于系统通道。

语法

ODBCLogon(connectstring, dialog)

connectstring 该字符串提供驱动程序连接到数据源所需的信息（例如数据源名称、用户 ID 和密码）。本参数必须遵循相应的驱动程序所要求的格式（有关连接字符串的详细信息，请参阅数据源的文档）。

注释 由于 Microsoft Query 支持文件 DSN（Data Source Name，数据源名称），因此可用 ConnectionString 请求项获取由文件 DSN 创建的查询的无 DSN 的连接字符串。然后就可用该连接字符串重新连接到任意计算机上的数据源。

dialog 决定在登录时是否显示对话框。可为以下值之一。

值 | 说明
0（零） | 不显示任何对话框。
1 | 显示对话框以提示用户输入未在连接字符串中指明的信息。
2 | 显示对话框，以连接字符串中指明的信息作为对话框内的默认值。
3 | 等同于 1，但那些对于连接数据源不是必需的信息，在对话框中将变灰显示。

示例

本示例使用 ConnectionString 请求项返回用于连接到数据源的字符串。在用户已登录到数据源后，本示例将保存连接字符串，以后用 ODBCLogon 命令再次连接到该数据源时，就不需要用户输入信息了。

connstr = DDERequest(chan, "ConnectionString")
' intervening code
DDEExecute chan, "[ODBCLogon (connstr(1), 0)]"


打开 DDE 通道

若要打开 DDE 通道，VB 过程应当使用 DDEInitiate 方法。DDEInitiate 方法有两个参数：源程序的名称和 DDE 对话的“话题”（称为主题）。Microsoft Query 的程序名是“MSQuery”。

Microsoft Query 的主题列于下表中。

主题 | 说明
query_window_name | 打开的查询窗口的名称。只有在 Microsoft Query 正在运行并且打开了一个窗口时，才能指定该打开窗口的名称。
System | 常规主题，使目标程序连接到 Microsoft Query 本身，而不只是某一查询窗口、某一个文件或某一条 SQL SELECT 语句。

当 Microsoft Query 收到一个 DDE 对话请求，并能够识别该请求的主题以后，它就将作出应答，并打开通道。DDEInitiate 方法将返回一个 DDE 通道号，该通道号可赋给某一变量，并可用于该通道的后续操作中。

如果要在单个通道中打开多个窗口，请用 System 主题。用 System 主题打开 DDE 通道后，只能激活该通道上已打开的窗口。


Open 命令 (DDE)

打开并执行查询以及在“数据”窗格上显示数据。此命令仅用在系统通道上。

语法

Open(query)

query Microsoft Query 文件（对于 Windows 而言，其扩展名为 .dqy）或包含查询的 Q+E 文件（仅用于 Windows，文件扩展名为 .qef）的文件名，或要执行的 SQL SELECT 语句。

示例

本示例打开名为“Sales”的查询。

DDEExecute chan, "[Open(""c:\msquery\sales.dqy"")]")

这是在 Macintosh 下的相同示例。

DDEExecute chan, "[Open(""drivename:msquery:sales"")]")

此语句用 SQL SELECT 语句执行一个新的查询。

DDEExecute chan, "[Open(""SELECT * FROM pubs.dbo.titles"")]")


ParameterNames2 请求 (DDE)

对于参数查询，返回参数信息。此请求仅用于系统通道。

语法

ParameterNames2( )

对于每个参数，ParameterNames2 都将返回参数的名称、数据类型和最近使用的值。ParameterNames2 会以 xlTable 的格式返回一个 3 列 N 行的数组，其格式如下：

列 1 | 列 2 | 列 3
参数名称 | 列数据类型 | 最近使用的参数值，如不存在则返回 null

有关 xlTable 格式的信息，请参阅 Microsoft Excel 的 Visual Basic“帮助”。

ParameterNames2 请求可以在任何时刻使用，即使通过 EnableParameters 命令禁止了参数在查询中的使用。如果查询没有参数，ParameterNames2 将返回一个空数组。


QueryNow 命令 (DDE)

执行打开的 DDE 通道中的活动查询。如果已用 BuildSQL 命令建立了查询，本命令就执行命令缓冲区中的 SQL 语句，并打开查询窗口。此命令既能用于系统通道，也能用于查询通道。

语法

QueryNow( )

示例

本示例保存某一查询的 SQL 语句，稍后又将该语句重新发送并再次执行。

sql = DDERequest(Chan, "QueryDefinition")
DDEExecute chan, "[BuildSQL(""" & sql & """)]"
DDEExecute chan, "[QueryNow()]"


QueryType 请求 (DDE)

返回某个查询的数据源的信息。此请求仅用于系统通道。

语法

QueryType( )

QueryType 请求以 xlTable 的格式返回一个二元数组。第一个元素中包含查询数据源的类型，ODBC 或 OLE/DB。第二个元素中包含数据源能够接受的命令类型：SQL、Cube 或 Cancel，如下所示：

QueryType | CommandType | 说明
ODBC | SQL | 数据源是 SQL 兼容的 ODBC。
OLEDB | Cube | 数据源是 OLAP 多维数据集。SQL 语句中包含多维数据集的名称。
ODBC | Cancel | 用户已取消查询并返回目标程序。

有关 xlTable 格式的信息，请参阅 Microsoft Excel 的 Visual Basic“帮助”。

QueryType 请求只能用作执行完 UserControl2 命令后的第一个请求。

如果 QueryType 指示数据源为 OLAP 多维数据集，那么可用 ODBCSQLStatement 和 ConnectionString 请求来检索数据源信息。请了解如何使用 DDE 请求。


获取状态信息和其他信息

打开了与 Microsoft Query 之间的 DDE 通道以后，就可以用 DDERequest 方法返回结果集或其他信息。

DDERequest 方法有两个参数。

参数 | 说明
channel | 由 DDEInitiate 方法返回的 DDE 通道号。
request_item | 要返回的数据。该数据可以是查询窗口中的字段或字段区域的内容，或者其他类型的信息（如查询窗口中记录的数目）。

请求项在查询通道和系统通道上都可以使用。在查询通道上，只能返回有关查询的信息，如行数或列数、查询的定义。而在系统通道上，则可以返回有关 Microsoft Query 的常规信息，如当前的连接、主题名称和程序状态，以及活动查询的特定信息。

查询通道的请求项或系统通道上活动查询的请求列于下表中。

请求项 | 返回的信息
ColumnTitles | 列标题的数组。列标题与字段名称相同，除非用户在 Microsoft Query 中修改了列标题。
ConnectionString | 由构成活动查询窗口的连接字符串的各段所组成的数组（每段最长可达 255 个字符）。如果查询是用文件 DSN 创建的，则本请求项返回无 DSN 的连接字符串。
ConnectionString/n | 由构成活动查询窗口的连接字符串的各段所组成的数组（每个段最长可达 n 个字符）。如果查询是文件 DSN 创建的，则本请求项返回无 DSN 的连接字符串。
DataSourceName | 活动查询所用的数据源的名称 (DSN)。
ErrorText | 如果最近执行的 SQL 语句产生了错误，则本请求项将返回该错误的说明文字。可多次重复使用本请求项，以获得所产生的所有错误的信息。当所有的错误信息都检索完之后，本请求项将返回空字符串。如果最近执行的 SQL 语句没有引发错误，本请求项将返回 null 字符串，即使以前执行的 SQL 语句曾引发了错误，也是如此。
FieldDef | 返回数组，该数组中的值说明了查询窗口中各列（即各字段）的表达式和数据类型。数组中的每一行说明查询中的一个字段。该数组以列的格式返回如下数据：字段名、字段的 Q+E 数据类型、字段宽度、字段精度以及字段的 SQL 数据类型。
GetUniqueItems | 由查询结果的给定列中的唯一数据项构成的数组。实际使用本请求项时，必须在“GetUniqueItems”后面附加以零为最小编号的列编号（例如，第二列中的唯一项用“GetUniqueItems1”返回）。如果某一列未包含在查询中，就不能请求该列内的唯一数据项。 该数据项返回的值，与对被请求的列使用 SELECT DISTINCT 语句所得的结果相同。使用该语句时，所有的连接从句和条件从句都起作用，不包括带参数的条件从句。
NameSeparator | 用作 ODBC 识别符名称的分隔符的单个字符。
NumCols | 查询中的列（字段）数。
NumRows | 查询中的行（记录）数。
ODBCSQLStatement | 由构成查询的 ODBC SQL 语句的各 SQL 段组成的数组（每段最长可达 255 个字符）。使用此字符串时，可向 ODBC 直接发送并执行一条 ODBC SQL 语句，而不必经由 Microsoft Query。
ODBCSQLStatement/n | 由构成查询的 ODBC SQL 语句的各 SQL 段组成的数组（每段最长可达 n 个字符）。可用本请求项将一条 ODBC SQL 语句保存在若干较小的段内。
ParameterNames | 查询中的各参数组成的数组。如果查询中不包含参数，则返回空数组。本请求项可在任意时候使用，即使参数在查询中被禁用。
Query | 查询的名称。
QueryDefinition | 由构成查询的定义（即一条 SQL 语句，由 Microsoft Query 所定义）的各段组成的数组（每段最长可达 255 个字符）。可检索并保存本请求项，以便将其用于以后的查询。
QueryDefinition/n | 由构成查询的定义（即一条 SQL 语句，由 Microsoft Query 所定义）的各段组成的数组（每段最长可达 n 个字符）。
Recest | 对每次检索到的记录数目的粗略估计。
TierType | 表示数据源类型的单个数字：1 表示只能包含一张表的文件；2 表示能包含一张或多张表的数据库文件；3 表示数据不能浏览。如果程序需要提供“打开”对话框以便浏览硬盘上的数据，就要使用本请求项。

在系统通道上使用上述请求项时，返回的是有关在 DDE 操作中最近使用的查询窗口的信息。

对于系统通道，除上述请求项外，还可以使用下列请求项。

请求项 | 返回的信息
Sources | 当前所有的数据源连接（仅返回 DSN）。
Logon | 能够连接到的所有远程数据库（注册表中的 DSN 项）。
Logoff | 当前所连接的所有远程数据库（仅返回 DSN）。
Tables/source/user/database | 指定的 DSN 连接、用户和数据库的所有表。请注意，source 必须是有效的 DSN。
Users/source/database | 指定的 DSN 连接和数据库的所有用户。请注意，source 必须是有效的 DSN。
Database/source | 指定的 DSN 连接的所有数据库。请注意，source 必须是有效的 DSN。
Username/source/database | 指定的 DSN 连接和数据库的用户名。请注意，source 必须是有效的 DSN。
Topics | 在系统通道上打开的各主题的名称，包括 System。
Status | 程序的状态，可以是“就绪”或“忙”。“就绪”表示程序可以与 Microsoft Query 进行 DDE 对话。“忙”表示 Microsoft Query 还不能进行 DDE 对话。

本示例将请求项 NumRows 所返回的值插入到 Microsoft Excel 中的单元格 A10 中。

ActiveWorksheet.Range("A10").Value = DDERequest(chan, "NumRows")


SaveAs 命令 (DDE)

保存新建查询的设计，或以另外的名称保存已有查询的设计。该命令与“文件”菜单内的“另存为”命令所执行的功能一样。该命令既能用于系统通道，也能用于查询通道。

语法 1

SaveAs(queryname)

语法 2

Save.As(queryname)

这两种形式的语法是等价的。

queryname 查询的新名称。


SetParameterName 命令 (DDE)

设置传递到 Microsoft Query 的查询字符串接收的参数的名称。SetParameterName 命令应在 BuildSQL 命令发送之后发送。

语法

SetParameterName(index, name)

index 参数的编号。

name 参数的名称。

说明

如果由 BuildSQL 命令发送的 SQL 语句包含参数，但又未接收到 SetParameterName 命令，那么 Query 将以“Parameter n”的形式赋予参数默认的名称，其中 n 为递增的数值。如果用 SetParameterName 命令发送的参数名称的数目不够，那么剩余的参数将命名为“Parameter n”。如果所发送的参数名称过多，就忽略多余的参数名称。


SetQueryName 命令 (DDE)

设置活动查询的名称，如果当前没有活动查询，则用指定的名称创建查询。该名称将出现在查询窗口的标题栏内。

语法

SetQueryName(name)

name 查询的名称。


SetQueryType 命令 (DDE)

本主题中的部分内容可能不适用于某些语言。

根据不同的数据源类型来决定 Microsoft Query 为各个查询所采取的操作。该命令仅用于系统通道。

语法

SetQueryType(QueryType, CommandType)

参数 QueryType 和 CommandType 的有效组合如下所示：

QueryType | CommandType | 说明
ODBC | SQL | 在 Microsoft Query 中编辑查询。如果省略该参数，那么这些值将作为默认值使用。
OLEDB | Cube | 运行“OLAP 多维数据集向导”来改变多维数据集的定义。

使用 SetQueryType(OLEDB, Cube) 命令时，Microsoft Query 会忽略所有的 LogonNow、EnableParameters 和 SetQueryName 命令，同时也会忽略 UserControl2 参数，在“OLAP 多维数据集向导”中对多维数据集定义进行编辑的上下文环境中，这些参数将无效。


SetWindowState 命令 (DDE)

指定活动窗口打开时是处于普通状态、最小化状态还是最大化状态。此命令既能用于系统通道，也能用于查询通道。

语法

SetWindowState(state)

state 活动窗口的状态。可为以下值之一。

值 | 说明
1 | 普通状态
2 | 最小化状态（仅用于 Microsoft Windows）
3 | 最大化状态


UserControl2 命令 (DDE)

激活 Microsoft Query，并允许用户创建、打开或编辑查询，就如同独立地运行 Microsoft Query 一样。

此命令只能用于系统通道。

注释 UserControl 命令与 UserControl2 命令之间的区别在于：UserControl2 命令允许向“文件”菜单内添加一条命令，该命令用于关闭所有在 Microsoft Query 中创建的查询，并不带数据返回目标程序中。

语法

UserControl2(exittext, canceltext, appstate, newquery)

exittext Exit 命令的名称，该命令用于在 DDE 对话结束之后退出 Microsoft Query。如果省略该参数，则使用“Return”。

canceltext 用于取消当前会话的菜单项的名称。将该命令添加到 Microsoft Query 的“文件”菜单的底部。如果省略本参数，则不创建新的菜单项。

appstate 程序的状态。可为以下值之一。

值 | 说明
1 | 普通状态
2 | 最小化状态（仅用于 Microsoft Windows）
3 | 最大化状态

如果省略本参数，就使用 Microsoft Query 的当前状态。

newquery 指定在 DDE 对话期间启动 Microsoft Query 时，是否显示“选择数据源”对话框。该值可为 True 或 False。

如果 newquery 为 True，则显示“选择数据源”对话框，提示用户选择一个数据源。如果 newquery 为 False（默认值），则不显示对话框，而相应的通道中所有打开的查询都是可以访问的。


UserControl 命令 (DDE)

激活 Microsoft Query，并允许用户创建、打开或编辑查询，就如同独立地运行 Microsoft Query 一样。

此命令仅能用于系统通道。

语法

UserControl(exittext, appstate, newquery)

exittext Exit 命令的名称，该命令用于在 DDE 对话结束之后退出 Microsoft Query。如果省略该参数，则使用“Return”。

appstate 程序的状态。可为以下值之一。

值 | 说明
1 | 普通状态
2 | 最小化状态（仅用于 Microsoft Windows）
3 | 最大化状态

如果省略本参数，就使用 Microsoft Query 的当前状态。

newquery 指定在 DDE 对话期间启动 Microsoft Query 时，是否显示“选择数据源”对话框。该值可为 True 或 False。

如果 newquery 为 True，则显示“选择数据源”对话框，提示用户选择一个数据源。如果 newquery 为 False（默认值），就不显示对话框，而相应的通道中所有打开的查询都是可以访问的。

说明

在 Windows 或 Macintosh 中，当用户单击“文件”菜单内的“退出”命令时，就结束用户控制。然后 Microsoft Query 将返回其原有的程序状态，并将控制返回到目标程序中。

要点 不要让具有超时功能的程序在用户控制结束之前超时。

当 Microsoft Query 在用户控制下运行时，任何新建的或已有的查询都将在同一个 DDE 通道中打开。

示例

本示例启动 Microsoft Query，使其最大化，并将“文件”菜单上的“退出”命令（或者是 Macintosh 的“文件”菜单上的“退出”命令）替换为“将数据返回到 Microsoft Excel”命令。然后本示例将显示“选择数据源”对话框。

DDEExecute chan, "[UserControl(""&Return To Excel"",3,True)]")


使用 DDE

两个程序可通过在 DDE 通道上进行 DDE 对话的方式来相互交换信息。一个程序可以与 Microsoft Query 进行多个 DDE 对话，但每个对话都必须占用单独的通道。

初始化 DDE 对话的程序称为目标程序，对目标程序进行应答的程序称为源程序。在 DDE 对话中，Microsoft Query 总是源程序。这就是说，总是由其他程序初始化与 Microsoft Query 的 DDE 对话。

注释 并非所有的程序都支持 DDE。若要了解某一程序是否支持 DDE，请参阅该程序的文档。

DDE 通道

有两种类型的 DDE 通道：系统通道和查询通道。

在参与 DDE 对话的目标程序和 Microsoft Query 之间使用系统通道，可获取常规信息和与查询有关的信息。系统通道除提供关于查询的信息外，还可让用户检索到有关系统的信息，如当前所有的连接、所有打开的查询和目标程序的状态。

在 DDE 对话中使用查询通道来连接目标程序和 Microsoft Query 中的某一特定查询（如 Query1）。使用查询通道的前提是相应的查询窗口已通过系统通道打开。

DDE 如何运作

可用 DDE 对话和两个人之间的典型对话相类比。例如，在应聘的面试中，考官将向应聘者提出一系列面试的问题。考官（相当于目标程序）作好面试的准备工作（即初始化），然后请求应聘者（相当于源程序）提供信息，并将信息记录在一张纸（相当于工作表或文档）上。当然，应聘者也可能会向考官提出问题，从而形成双向的对话。

参与 DDE 对话的程序也与此相类似地在相互之间来回地传递信息。例如，若要用 DDE 与 Microsoft Query 进行通信，则 Visual Basic for Applications 过程可执行下列步骤：

  1. 该过程用 DDEInitiate 方法打开 DDE 通道。
  2. 该过程可向 Microsoft Query 发送一些可选信息，例如有效的数据源或当前的连接。
  3. 该过程激活 Microsoft Query。这一步骤使得 Microsoft Query 能够接收命令。此时，用户或该过程就可以建立或修改查询了。该过程可用 DDEExecute 方法直接向 Microsoft Query 发送命令。
  4. 用户或该过程退出 Microsoft Query 后，控制将返回到目标程序。该过程可用 DDERequest 方法检索查询的数据，并将其返回到目标程序，或者将数据发送到 Microsoft Query。
  5. 该过程用 DDETerminate 方法关闭通道。

有关 Visual Basic for Applications 中特定的 DDE 方法的详细信息，请参阅 Visual Basic“帮助”。


与其他程序共用 Microsoft Query

本主题中的部分内容可能不适用于某些语言。

通常情况下，其他程序用 Microsoft Query 完成三种主要任务：

  • 新建查询
  • 更新原有的数据
  • 修改查询的定义或数据

Microsoft Query 用作用户的数据查询工具

使用 DDE，可使 Microsoft Query 执行数据检索工具的功能。当宏或程序打开一个 DDE 通道后，就可以激活 Microsoft Query，并指定用什么命令来替换 Microsoft Windows 中“文件”菜单内的“退出”或 Macintosh 上“文件”菜单中的“退出”，指定 Microsoft Query 处于什么状态（最小化（仅用于 Windows）、最大化或还原），以及是否要显示一系列对话框。

然后用户就可以创建、打开或编辑查询，就像 Microsoft Query 作为独立应用程序运行一样。用户建立完查询后，就可以单击自定义的“退出”命令，或单击工具栏上的“退出”按钮。

控制返回到目标程序（文档、工作表或其他对象）之后，就可以向 Microsoft Query 请求数据了。例如，用户可能会请求下述数据：查询中的行数和列数、定义查询的 SQL 字符串、数据源的连接字符串、数据源的名称等。数据可在 DDE 通道关闭、宏或程序运行结束之前返回到目标程序。

更新检索到的数据

执行完查询并返回了结果集后，可能还需要在以后用数据源中的当前内容对数据进行更新。使用 DDE 可更新数据而不必由用户输入。程序可向 Microsoft Query 发送一条 SQL 语句，该语句可执行查询并将结果集返回到目标程序。

修改查询的定义或数据

程序使用 Microsoft Query 的另一个方式是，让用户修改 Microsoft Query 中原有查询的定义，或编辑数据源中的数据。

为实现这一目的，程序首先应打开 DDE 通道，连接到数据源，然后向 Microsoft Query 发送 SQL 字符串（该字符串由以前的查询所保存）以建立新查询。该程序打开新查询后，就开始用户的控制，用户可以根据情况修改查询或编辑数据。用户退出 Microsoft Query 后，数据将返回到程序，新建查询的定义将保存，而查询将关闭。

例如，Microsoft Word 用户可以选择自定义的命令“获取销售数字”，以启动相应的宏。在不通知用户的情况下，该宏启动 Microsoft Query，并建立查询，然后将销售数据返回到 Word 文档。


ViewPane 命令 (DDE)

指定要在查询窗口中显示哪些窗格。此命令既能用于系统通道，也能用于查询通道。

语法

ViewPane(pane)

pane 指定要显示的窗格。可为以下值之一：

值 | 说明
0（零） | 仅显示“数据”窗格
1 | 显示“数据”窗格和“表”窗格
2 | 显示“数据”窗格和“条件”窗格
3 | 显示“数据”窗格、“表”窗格和“条件”窗格


Q+E 数据类型

值 | 类型
1 | SQL_CHAR
2 | SQL_BINARY、SQL_VARBINARY、SQL_LONGVARBINARY、SQL_LONGVARCHAR、SQL_VARCHAR
3 | SQL_NUMERIC、SQL_DECIMAL
4 | SQL_INTEGER、SQL_BIGINT
5 | SQL_BIT、SQL_TYNYINT、SQL_SMALLINT
6 | SQL_FLOAT
7 | SQL_REAL、SQL_DOUBLE
8 | SQL_TIME、SQL_DATE、SQL_TIMESTAMP


SQL 数据类型

值 | 类型
0 | SQL_UNKNOWN_TYPE
1 | SQL_CHAR
2 | SQL_NUMERIC
3 | SQL_DECIMAL
4 | SQL_INTEGER
5 | SQL_SMALLINT
6 | SQL_FLOAT
7 | SQL_REAL
8 | SQL_DOUBLE
9 | SQL_DATETIME（仅用于 ODBC 3.0）
12 | SQL_VARCHAR


成功地删除了表 <name>

Microsoft Query 删除了表及其中保存的所有数据。无法撤消此删除操作。


是否删除表 <name>

您指示要删除此表。如果删除此表，则表中的所有数据都将被删除。

注意 无法撤消表的删除操作。

  • 若要删除该表及其中保存的数据，请单击“是”。
  • 若不想删除该表，请单击“否”。


由于查询状态无效而终止保存

查询的设计无效。例如，可能错误地指定了条件。如果“自动查询”命令处于关闭状态，请单击“记录”菜单内的“立即查询”命令来运行查询。


运行 Microsoft Query 所需的显示器分辨率最小为 400 x 350 像素

显示器的分辨率不够，无法运行 Microsoft Query。请用 Microsoft Windows 安装程序替换该显示器驱动程序。替换显示器驱动程序之前，可能还需要将计算机的显卡升级为支持更高分辨率的型号。


驱动程序错误

本错误是由驱动程序返回的。有关详细信息，请参阅驱动程序的当前文档。


结果集内有不唯一的记录

结果集内包含相同的记录，原因是“数据”窗格内不包含能够唯一地识别各个记录的字段，如“客户 ID”字段或“订单 ID”字段。对其中一个相同记录所做的更改将影响到所有相同的记录。

为了区别这些记录，在开始编辑数据之前，应确保已将基础表中的所有字段都添加到了“数据”窗格内。


无法编辑计算列

如果列内包含汇总计算，或列内显示了自定义表达式的结果，就不能编辑该列中的数据。


无法编辑分组后的查询

如果查询中包含汇总，或选中了“查询属性”对话框中的“分组记录”复选框，就不能编辑查询中的数据。若要编辑数据，请删除查询中的汇总，或清除“分组记录”属性。


无法编辑包含多张表的查询

无法编辑包含多张表的查询中的数据。

  • 若要编辑某张表中的数据，只要将该表添加到查询中，再单击“记录”菜单内的“允许编辑”。
  • 若要编辑当前查询中的数据，请删除查询中多余的表，只保留要编辑的数据所在的表。然后单击“记录”菜单内的“允许编辑”。

注释 删除查询中的表时，并未删除基础表中的数据。所做的删除操作只是从当前查询中删除了表及其数据。


无法添加数据源

Microsoft Query 无法添加选定的数据源，原因是与该数据源的连接出现了问题。


列表达式 <expression> 错误

在“选择”列表中指定的表达式错误。该表达式应为下列格式：

SELECT employee.EMPLOY_ID, employee.HIRE_DATE
FROM C:\QT\employee employee


“GROUP BY”后缺少表达式

SQL 语句中的 GROUP BY 从句后面没有跟表达式。


“ORDER BY”后缺少表达式

SQL 语句中的 ORDER BY 从句后面没有跟表达式。


无法打开同一个文件的多个副本

无法同时打开同一个查询文件的两个副本。


无法添加表 <name>

无法添加指定的表。请确认是否满足以下条件：

  • 数据库中存在指定的表。
  • 表的名称拼写无误。请检查是否缺少下划线字符 (_) 或其他标点符号。
  • 指定的表包含有效的字段（列）。


一张表必须有两个实例才能创建自连接

在“表”窗格中有两张不同的表，并已通过在“连接”对话框的“左”下拉列表框和“右”下拉列表框中使用相同的表名定义了自连接。

  • 若要创建自连接，在“表”窗格内就必须有同一张表的两个实例。
  • 若要连接两张不同的表，就必须在连接的左右两边指定不同的表。


长度 <number> 必须是数字

在“长度”框中指定了非数字的值。请将该值改为数字。


名称 <name> 错误

表名和字段名必须遵循数据源所要求的标准命名约定。有关信息，请参阅数据源的文档。


小数点后面位数必须小于或等于总长度

在“小数位数”框中指定的数字大于在“长度”框中指定的长度。应将“小数位数”框中的数字改为小于或等于“长度”框中指定长度的值。


<data type name> 类型的最大长度为 <number>

在“长度”框中指定的长度超过了字段的数据类型所允许的最大长度。


刷新失败

Microsoft Query 无法更新“添加表”对话框内的表清单，原因是数据源没有应答。请确认一下是否仍连接在该数据源上。


无法删除数据源

Microsoft Query 无法删除选定的数据源。必须中断与该数据源的连接才能将其删除。


一般性 ODBC 错误

Microsoft ODBC 或数据源所返回的错误没有详细的说明信息。请确认一下数据库是否正在运行并处于有效状态，然后再试一次。


GROUP BY 从句中存在语法错误

SQL 语句中存在无效的 GROUP BY 从句。可能拼错或缺少了某一保留字，或者标点符号不正确。


HAVING 从句中存在语法错误

SQL 语句中存在无效的 HAVING 从句。可能错拼或缺少了某一保留字，或者标点符号不正确。


JOIN 表达式中存在语法错误

SQL 语句中的 ON 从句后面没有跟有效的表达式。该表达式应为下列格式：

{oj C:\QT\orders orders LEFT OUTER JOIN C:\QT\orddtail orddtail ON orders.ORDER_ID = orddtail.ORDER_ID}


ORDER BY 从句中存在语法错误

SQL 语句中存在无效的 ORDER BY 从句。可能拼错或缺少了某一保留字，或者标点符号不正确。


请先选定数据源

试图在选定数据源之前运行 SQL 语句。请单击“执行 SQL”对话框内的“数据源”，再选择某一数据源。


表 <name> 后缺少连接运算符

LEFT OUTER JOIN 从句或 RIGHT OUTER JOIN 从句的表达式中两个表名之间缺少“=”运算符。外部连接必须是相等连接（即必须使用“=”运算符）。


表 <name> 后缺少 LEFT 或 RIGHT

SQL 语句中包含 OUTER JOIN 从句，但该从句前面缺少关键字 LEFT 或 RIGHT。SQL 语句中的外部连接从句必须是 LEFT OUTER JOIN 从句或 RIGHT OUTER JOIN 从句。


“HAVING”后缺少表达式

SQL 语句中的 HAVING 从句后面没有跟查找条件。


“WHERE”后缺少表达式

SQL 语句中的 WHERE 从句后面没有跟查找条件。


“FROM”后缺少表名

SQL 语句中的 FROM 从句后面没有跟表的名称。


文本太长；粘贴取消

剪贴板中要粘贴的文本太长而无法填入“数据”窗格或“条件”窗格中选定的字段内。能填入该字段的最大字符数取决于创建表时指定的字段长度。


载入时产生了输入/输出错误

Microsoft Query 无法打开或读取选定的文件。可能产生了磁盘错误，或选定的文件已损坏。


无法读取此文件

Microsoft Query 无法读取指定的文件。可能该文件的格式不是 Microsoft Query 或 Q+E 的格式，或者出现了磁盘错误，或者该文件已损坏。


保存时产生了输入/输出错误

Microsoft Query 无法将查询保存到磁盘上。可能产生了磁盘错误。


如果不指定字段，就无法设置条件

在设置某一字段的条件之前，必须先将该字段添加到“条件”窗格内。


驱动程序并不支持所有的函数

输入的表达式中包含一个或多个数据源不支持的函数。若要了解数据源支持哪些函数，请参阅数据源所用驱动程序附带的文档，或者与驱动程序的供应商联系。


无法创建索引

此表的数据源不支持索引。


成功地创建了索引

Microsoft Query 在表的一个或多个指定字段上成功地创建了索引。


DDE 对话已关闭或已更改

其他程序意外地关闭或更改了动态数据交换 (DDE) 对话，可能是因为执行了 DDETerminate 或 DDETerminateAll 语句。

请关闭当前的对话，然后与相应的程序建立新的对话。


宽度必须是从 0 到 <number> 之间的数

请在这两个数之间指定列宽，或在“列宽”对话框内选中“标准列宽”选项。


文件名无效

文件名必须遵循数据源所要求的标准命名约定。有关详细信息，请参阅数据源的文档。


高度必须是从 1 到 <number> 之间的数

请在这两个数之间指定行高，或在“行高”对话框内选中“标准行高”选项。


左外部连接和右外部连接必须是相等连接

LEFT OUTER JOIN 从句或 RIGHT OUTER JOIN 从句的表达式中，两个表名之间或者缺少了“=”运算符，或者使用了其他的运算符。外部连接必须是相等连接（即必须使用“=”运算符）。


要连接的列 <name> 和列 <name> 属于不同的数据类型，是否仍要连接？

试图连接包含不同数据类型的字段（列）。例如，可能试图将包含日期的列与包含文字的列进行连接。

  • 若不想进行连接，请单击“取消”。
  • 若要进行连接，请单击“确定”。

注释 此类连接可能不会产生预期的结果。请检查 Microsoft Query 是否在结果集内显示了所需的数据。


“OUTER”后缺少“JOIN”

SQL 语句中包含了 LEFT OUTER 从句或 RIGHT OUTER 从句，而没有包含应有的 LEFT OUTER JOIN 从句或 RIGHT OUTER JOIN 从句。可能错拼或缺少了“JOIN”。


DDE 交换失败，请检查 DDEML.DLL 的版本是否正确

所安装的 Microsoft Query 不完整或已损坏。若要解决此问题，请重新安装 Microsoft Query 并选择修复选项。


如果查询中包含两张以上的表，就不能再有外部连接

使用外部连接时，在“表”窗格中只能包含两张表。必须从“表”窗格中删除多余的表，才能创建外部连接。


消息队列已满，DDE 消息丢失

Microsoft Query 无法跟上动态数据交换 (DDE) 操作的提交速度。

请关闭一些 DDE 对话，然后重试本操作。


值必须是数字

某一选项设置要求用数字值，但所输入的值不是数字。请输入数字。


其他应用程序不执行所提交的 DDE 操作

其他应用程序无法执行所提交的动态数据交换 (DDE) 操作。

  • 其他程序可能无法识别所提供的数据和命令。请参阅相应程序的文档，以了解其所能识别的数据和命令。
  • 根据对话定义的主题，其他程序可能无法识别 Item 参数。请参阅相应程序的文档，以了解所能识别的请求项。


无法打开 DDE 通道，Microsoft Query 无法找到指定的程序和主题

Microsoft Query 无法定位指定的程序和主题（即动态数据交换 [DDE] 对话的“话题”）。请确保其他程序（目标程序）正在运行，主题已打开，以及定义 DDE 对话时正确拼写了程序名和主题名。


无法将列 <name> 保存到数据源中

试图将结果集保存为表，但要存入的数据源或者是不支持指定列的数据类型，或者是无法将其转换为类似的数据类型。请试用其他支持该数据类型的数据源来保存结果集。


系统资源不足，无法更新显示

由于没有足够的内存，Microsoft Query 无法完成这一操作。

关闭 Microsoft Query 中不用的窗口或其他程序。如果再次出现本错误，请重新启动 Microsoft Windows 后重试本操作。


无法访问表 <name>

无法找到指定的表，可能是被其他用户或其他查询锁定了指定的表，或指定的表内没有有效字段。


无法显示“帮助”

Microsoft Query 帮助文件不在当前文件夹内。将该帮助文件移动或复制到当前文件夹内。


无法取回过程清单

Microsoft Query 无法显示数据源中的过程清单，原因是数据源没有响应。可能已中断了与数据源的连接。


未找到任何过程

此数据源中没有任何过程。有关创建过程的信息，请参阅相应数据源的文档。


无法删除数据源，某些查询正在使用它

有一个或多个查询正在使用要删除的数据源。必须关闭使用该数据源的查询才能进行删除。


记录不存在

所指定的记录号不存在。该记录号可能太大或太小。请确认一下“数据”窗格内是否有记录，然后检查所输入的记录号是否正确。


该表中不包含唯一索引，是否要创建一个？

要保存为新表的结果集所基于的表中不包含唯一索引。

  • 若要显示“创建索引”对话框，以便创建该表的唯一索引，请单击“是”。
  • 若不想创建唯一索引，请单击“否”。


无法检索值

Microsoft Query 无法显示为条件选择的值。可能是因为内存不足，或中断了与数据源的连接。

如果还未中断与数据源的连接，那么请关闭 Microsoft Query 中的其他窗口或其他应用程序。如果再次出现本错误，则重新启动 Microsoft Windows 之后，再重试本操作。


无法新建窗口

Microsoft Query 无法显示选定的文件，可能是因为内存不足。

请关闭 Microsoft Query 中的其他窗口或其他应用程序。如果再次出现本错误，请重新启动 Microsoft Windows 之后重试本操作。


无法撤消本操作，是否要继续

对这一操作，“撤消”命令无效，原因是本操作太大，或内存不足。

  • 若要继续本操作，请单击“确定”。
  • 若不想继续本操作，请单击“取消”。


右连接表后面缺少“ON”

SQL 语句中包含了 LEFT OUTER JOIN 从句或 RIGHT OUTER JOIN 从句及其表达式，但该表达式后面没有跟 ON 从句及其表达式。可能错拼或缺少了“ON”。


查询中只能有一个外部连接

每个查询中只能包含一个外部连接。


必须为运算符 <operator> 选择一个值

当用此运算符定义条件时，只能使用一个值。然后 Microsoft Query 就只选择那些相应字段中包含该值的记录。例如，如果在“运算符”框内选择了“始于”，那么 Microsoft Query 就将在条件所应用的字段中查找以指定的值开头的记录。只有那些符合条件的记录将包含在结果集内。


必须为运算符 <operator> 选择两个值

当用此运算符定义条件时，必须使用两个值。例如，如果在“运算符”框内选择了“介于”，那么 Microsoft Query 就将在条件所应用的字段中查找值介于指定的两个值之间的记录。只有那些符合条件的记录将包含在结果集内。


无法打开文件

Microsoft Query 无法打开指定的查询文件。可能产生了磁盘错误，或该文件已损坏。


无法打开文件

Microsoft Query 无法打开或读取在“执行 SQL”对话框中所指定的 Microsoft Query 文件。可能是因为该文件不是文本格式，或产生了磁盘错误，或该文件已损坏。


“LEFT”或“RIGHT”后缺少“OUTER”

SQL 语句中包含了 LEFT 或 RIGHT 外部连接从句，但其中缺少了关键字 OUTER。SQL 语句中的外部连接从句必须是 LEFT OUTER JOIN 从句或 RIGHT OUTER JOIN 从句。


如果存在外部连接，查询中就只能包含两张表。是否要删除外部连接以添加表？

“表”窗格中已经有两张表，且这两张表之间已存在外部连接。如果要在“表”窗格中使用三张或更多的表，就必须删除外部连接，或将其改为内部连接。


数字太大

请输入一个较小的值。


表达式太长

表达式太长，使 Microsoft Query 无法对其进行计算。请将该表达式缩短，或将其分解为两个表达式。


无法访问 <database>

所用的数据源只允许添加当前数据库（或等价数据库）中的表。


更改字段的列标题，使之更具描述性

  1. 双击要更改的字段的列标题。
  2. 在“列标”框中，输入所需的列标题。


更改某列宽或所有行高

更改列宽 若要更改列宽，请将鼠标指针指向列标题的右边框，然后拖动该边框直到获得所需的列宽。

提示 如果要迅速地将列宽调整为该列内最宽的数所占的宽度，请双击列标题的右边框。

更改行高 如果要更改所有行的行高，请用鼠标指针指向任意行标题的下边框，然后拖动该边框直到获得所需的行高。

注释 对行高的更改将影响结果集中的所有行。


更改结果集中文本的字体、字形或字号

  1. 在“格式”菜单上，单击“字体”。
  2. 按需要进行更改。


更改查询中两张表的连接类型

  1. 双击表之间的连接线。
  2. 若要选择 Microsoft Query 用于比较连接字段中的数据的运算符，请在“运算符”框中，单击所需运算符。有关详细信息，请单击 按钮图像 。
  3. 若要创建一个外部连接，且外部连接使用左边表中的所有记录，请单击“连接内容 ”下方的选项 2。在创建外部连接时必须选择“=”运算符。

    若要创建一个使用右表中所有记录的外部连接，请单击“连接内容”下的选项 3。

    若要创建只使用两表中公用记录的内连接，请单击“连接内容”下方的选项 1。

  4. 单击“添加”。
  5. 单击“关闭”。

    有关连接类型及其如何影响查询的结果集的详细信息，请单击 按钮图像 。


用 Microsoft Query 创建较为复杂的查询

  1. 请单击“新建查询” 按钮图像 。
  2. 在“数据库”选项卡上，单击要从其中检索数据的数据库，或创建新的数据源。

    操作方法

  3. 清除“使用查询向导创建/编辑查询”复选框，再单击“确定”。
  4. 添加所需的表。

    操作方法

  5. 添加希望在结果集中出现的字段。

    操作方法

    如果希望结果集仅包含特定的记录，请输入条件以筛选记录。

    操作方法

    如果要创建运行时提示输入条件的参数查询，请指定参数。

    操作方法

    可创建表之间的内部连接或外部连接以更改结果集。

    操作方法

注释

  • 完成对所需数据的检索之后，可将结果集返回到 Microsoft Excel。有关详细信息，请单击 按钮图像 。
  • 如果查询时检索数据花费的时间过长，可按 Esc 停止运行该查询。
  • 如果要等到向结果集中添加完所有字段后再检索数据，则应确认未按下“自动查询” 按钮图像 。执行查询的准备工作完成以后，请单击“立即查询” 按钮图像 。
  • 如果要防止 Query 在保存查询或将数据返回到 Excel 之前运行查询，请单击“编辑”菜单上的“选项”，然后清除“保存或返回数据前验证查询”复选框。


用“查询向导”创建查询

本主题中的部分内容可能不适用于某些语言。

  1. 单击“新建查询” 按钮图像 。
  2. 选中“使用‘查询向导’创建/编辑查询”复选框。
  3. 在“数据库”选项卡上，双击要从其中检索数据的数据库。

    如果需要安装新的数据源，请双击“新数据源”，再指定数据源。

  4. 按照“查询向导”中的指示进行操作。
  5. 在“查询向导–完成”对话框中，请执行下列操作之一：

    若要将数据直接返回到 Microsoft Excel，请单击“将数据返回 Microsoft Excel”，再单击“完成”，然后选择放置外部数据的位置。

    若要将查询保存为 .dqy 查询文件（此文件可以在 Microsoft Query 中打开和编辑，或在 Excel 中打开和运行），请单击“保存查询”。如果需要通过本查询创建 OLAP 多维数据集，则建议使用本可选步骤。

    若要运行“OLAP 多维数据集向导”（可以在向导中通过查询所得到的数据创建多维数据集），请单击“从该查询创建 OLAP 多维数据集”，再单击“完成”，然后按向导中的提示进行操作。只建议有经验的用户使用本选项。请了解创建 OLAP 多维数据集。

    若要使查询更精确，请单击“在 Microsoft Query 中查看数据或编辑查询”，再单击“完成”。结果集将显示在“数据”窗格中，在“数据”窗格中，用户可以作进一步的更改，稍后还可将结果集返回到 Microsoft Excel 中。

提示 如果查询时检索数据花费的时间过长，则可按 Esc 停止运行该查询。


删除用于查询的数据库中的数据

注意 删除了数据库中的记录之后，该记录就将从结果集和数据库中永久地删除。

  1. 在“记录”菜单上，选中“允许编辑”命令。

    在某些情况下，Microsoft Query 不允许更改数据。如果“允许编辑”命令变灰，或单击“允许编辑”命令时，Microsoft Query 显示了消息，就不能对数据进行更改了。有关详细信息，请单击 按钮图像 。

  2. 单击记录左侧的方块以选定整个待删除的记录。
  3. 在“编辑”菜单上，单击“删除”。


更改用于查询的数据库中的数据

  1. 在 Microsoft Query 中，请选中“记录”菜单上的“允许编辑”命令。

    在某些情况下，Microsoft Query 不允许更改数据。如果“允许编辑”命令变灰，或单击“允许编辑”命令时，Microsoft Query 显示了消息，就不能对数据进行更改了。有关详细信息，请单击 按钮图像 。

  2. 在结果集内，请单击要更改的字段。
  3. 对数据进行所需的更改，再按 Enter。

注释 如果无意间出了错，请单击“编辑”菜单内的“撤消”命令以撤消最近所做的更改。必须在切换到另一条记录或窗口之前撤消所做的更改。


将字段插入到结果集中

  1. 找到要插入新字段的地方，然后单击字段右边的列标题。
  2. 在“记录”菜单上，单击“添加列”。
  3. 在“字段”框内，选择要插入的列。

    如果希望列标更具描述性，请在“列标”框内输入新的列标。

  4. 单击“添加”。

注释 若要向结果集中快速插入字段，请将字段从“表”窗格拖入结果集。


更改结果集中的字段的顺序

  1. 单击要移动的字段的列标题。
  2. 将鼠标指针移到列标题上，再将其拖到所需的位置。


隐藏或显示结果集中的字段

  1. 单击要隐藏的字段的列标题。
  2. 在“格式”菜单上，单击“隐藏列”。

若要显示处于隐藏状态的列，请单击“格式”菜单上的“显示列”，再选择所需的列，然后单击“显示”。


撤消对用于查询的数据库中的数据所做的更改

  • 在“编辑”菜单上，单击“撤消”。

注释 可以撤消最近对数据所做的更改。必须在切换到另一条记录或窗口之前撤消所做的更改。


有消息提示数据库路径无效

检查映射网络驱动器 如果数据库位于共享的网络目录上，那么当安装数据源并选定数据库文件时，访问数据库的路径会和当前映射的驱动器名一起记录在数据源中。例如，如果数据库名为 Inventory.mdb，驱动器 G 为保存该数据库的共享网络目录的映射驱动器，那么，数据源会将路径记录为“G:\public\Inventory.mdb”。如果试图使用该数据源，或者要运行访问该数据源的查询，那么当 G 没有映射到同一共享网络目录时，ODBC 驱动程序会显示路径无效的信息。

使用驱动器映射的替代方式 如果正在使用 Microsoft Access 驱动程序或 Microsoft Excel 驱动程序，那么通过创建新数据源可以解决这个问题。当指定数据库文件位置时，不要为共享网络目录选择映射驱动器，相反，应键入共享网络目录的 UNC 地址，再定位数据库文件。例如，如果数据库文件保存在名为共享的服务器上，则可以键入 \\Shared\public，然后选择文件 Inventory.mdb。

使用数据源前映射相同的网络驱动器号 对于其他的 ODBC 驱动程序，在使用数据源或运行访问数据源的查询前，应保证驱动器映射到了合适的共享网络目录上。


以前可正常使用的 ODBC 驱动程序现在不能正常工作了

在以下情况下，可能需要对 Microsoft Query 2000 使用其他驱动程序：

确保使用的是 32 位 ODBC 驱动程序 Microsoft Query 需要 32 位的 ODBC 驱动程序，如与 Microsoft Query 97 或更高版本一起提供的驱动程序。例如，如果用 Visual Basic 开发了一个获取外部数据的 Microsoft Excel 2000 程序，然后将该程序交给 Microsoft Excel version 5.x 版的用户使用，那么，该程序就可能无法在 Microsoft Excel version 5.x 版系统中的 16 位 ODBC 驱动程序上运行。

确保 Microsoft 驱动程序为 3.0 版或更高版本 如果安装的 Microsoft ODBC 驱动程序不是包括在 Microsoft Excel 2000 或 Microsoft Office 2000 软件包中的驱动程序，那么应确保所安装的驱动程序是 3.0 或更高版本。以前版本的 Microsoft ODBC 驱动程序可能不能与 Microsoft Query 2000 一起工作。Microsoft Excel 97 和 Microsoft Office 97 所提供的驱动程序为 3.0 版或更高版本。安装这些驱动程序时，会自动替换系统中的旧版本。

确保使用了正确的第三方驱动程序 如果使用的是第三方的 ODBC 驱动程序，那么在升级数据库或安装新版的数据库时，可能也需要为 Microsoft Query 安装新的 ODBC 驱动程序。如果要了解这样做是否必要，请参阅数据库的相关文档。

确保用 Microsoft Query 为驱动程序安装了数据源 如果用“数据连接向导”安装数据源，则 Query 无法对其访问。


日期或时间字段的划分不正确

检查源数据库中的日期或时间字段 如果在 OLAP 多维数据集的日期或时间维中没有看到所需的级别，请检查为查询提供记录的基础关系数据库中的日期或时间字段。记录中的日期和时间可能是按文本格式存储的，而不是“OLAP 多维数据集向导”所能识别的日期或时间格式。如果怀疑这一点，请向关系数据库的数据库管理员咨询以验证并更正该字段的日期或时间格式。

检查维的最高级别 如果“OLAP 多维数据集向导”将日期或时间字段添加为比已有维更低的级别，则向导不会自动将数据划分为“年/季/月/周”和“时/分/秒”级别。只有在将字段添加为新维的最高级别时，向导才自动划分数据。如果日期或时间字段不是最高级别，请修改多维数据集。


在查询中所做的更改或所设置的格式未被保留

Excel 并不保存查询中对格式的更改 在将数据返回到 Microsoft Excel 时，就会将查询定义保存为工作表的一部分，而不会自动保存为单独的文件。如果以后再对外部数据区域的查询进行编辑，则在 Microsoft Query 中对格式和列标所做的更改不会保留。

格式的更改并不会保存在 .dqy 查询文件中 如果将文件保存为 .dqy 格式，则对格式和列标的更改将不会保留。

对格式的更改会保留在 .qry 文件中 若要保留在 Microsoft Query 中所设置的格式，请在完成所需更改后，单击 Microsoft Query 中“文件”菜单内的“另存为”命令，并在“保存类型”列表内选择“Query 文件 (*.qry)”。当下次打开查询文件时，就会看到原来保存的 Microsoft Query 格式。


更改 OLAP 多维数据集时，有消息显示数据丢失

多维数据集中所包含的字段在源数据库中不再可用。

检查对原始数据库的更改 可以打开数据库查询（如果在开始创建多维数据集时保存了该查询），或新建查询。在查询中，请检查“数据”窗格以确保最初包含的所有字段仍然包含于查询中。在“表”窗格中，可以在字段中进行滚动以查看可用的字段。

如果无法打开现有查询或新建查询，请与数据库管理员联系以了解有关数据库更改的信息。

新建多维数据集 如果字段已从数据库中删除，则可新建多维数据集。


无法向 OLAP 多维数据集中添加字段

在使用“OLAP 多维数据集向导”定义了 OLAP 多维数据集后，就无法再向多维数据集中插入原始数据库中的其他字段。若要添加其他字段，则需要修改数据库查询 (.dqy) 文件，然后重新创建多维数据集。

打开或创建查询 如果在创建多维数据集时保存了数据库查询，则可打开 .dqy 文件。如果没有保存查询，则可新建查询。

向查询中添加字段 向查询中添加所需字段。如果考虑到将来可能需要具有不同字段的多维数据集，则请保存查询的副本，这样就不必每次都重新创建查询。

新建多维数据集 如果查询中包含多维数据集所需的全部字段，则可以新建多维数据集。


多维数据集数据所需的汇总函数不可用

如果使用“OLAP 多维数据集向导”由关系数据库中的记录创建多维数据集，则可用于计算数据字段值的汇总函数只有：Sum、Count、Min 和 Max。

直接通过数据库记录创建报表 如果可以充分精简查询，以使得查询所返回的数据量不超过系统的处理能力，而不必为数据创建 OLAP 多维数据集，那么请尝试将查询中的记录返回到 Microsoft Excel，而不创建多维数据集。

在 Excel 中，如果创建直接基于关系数据库查询（而不是基于多维数据集）的数据透视表或数据透视图报表，则可以访问更多的汇总函数：Sum、Count、Average、Max、Min、Product、CountNums、StDev、StDevp、Var 和 Varp。有关这些汇总函数的工作方式及其使用方法的详细信息，请参阅 Excel 中的“帮助”。

考虑为数据库建立 OLAP 服务器 Microsoft OLAP 服务器产品（Microsoft SQL Server OLAP Services），允许用户建立比 Microsoft Office 中的 OLAP 用户端软件允许的范围更广的汇总字段。


保存脱机多维数据集文件时，磁盘空间不足

用于创建多维数据集的关系数据库可能太大。如果为脱机多维数据集文件指定了大型的数据子集，则可能导致本地硬盘空间不足。

释放磁盘空间或使用其他磁盘 在保存该文件前，将不需要的文件从磁盘中删除，或将该文件保存到网络驱动器上。

减少脱机多维数据集文件中包含的数据 请考虑减少该文件中的数据量，但仍需保证在 Microsoft Excel 数据透视表和数据透视图报表中包含所需数据。请尝试下列解决方法：

  • 仅包含绝对需要的字段 在“OLAP 多维数据集向导”的第一步中，仅选择报表需要显示的数据字段。
  • 仅包含要使用的维 在“OLAP 多维数据集向导”的第二步中，仅添加在报表中将显示为维和级别的字段。有关创建维的说明，请参阅“OLAP 多维数据集向导”中的“帮助”。

使用临时多维数据集取代脱机多维数据集文件 如果已经尽可能地排除了不需要的数据，但仍然不能保存该脱机多维数据集文件，则请尝试使用“OLAP 多维数据集向导”第三步中的第一个选项，此选项使用了最少的磁盘空间。在打开基于多维数据集的报表时，该选项将在内存中重建多维数据集，并只检索显示报表时所需的数据。


无法添加、复制或移动数据库中的记录

在 Microsoft Query 2000 和更高版本中，可以编辑或删除已存在于数据库中的记录，但不能更改记录的顺序，也不能使用 Query 向数据库（用户使用 Microsoft Excel 驱动程序或 Microsoft Text 驱动程序访问此数据库）中添加记录。

直接使用数据库 如果要复制记录，请直接打开相应的数据库，然后用该数据库所提供的命令进行所需的操作。有关详细信息和指导，请向数据库管理员咨询。

在 Query 中对记录进行排序 用“记录”菜单中的“排序”命令，可以更改结果集中记录的顺序。在 Microsoft Query 中所进行的排序并不影响基础数据库，只会影响结果集。有关详细信息，请单击 按钮图像 。


无法创建所需的连接

对于外部连接，请确保查询包含的表不超过两张 如果查询中包含两张以上的表，则无法在查询中创建外部连接。外部连接是“连接”对话框中的第二和第三个选项。

一个查询只能有一个外部连接 可以创建任意数目的内部连接（“连接”对话框内的第一个选项），但每个查询中只能创建一个外部连接。如果熟悉 SQL 语言的编程，就可以尝试更改“SQL”对话框（单击“视图”菜单上的“SQL”命令时将出现“SQL”对话框）中的 SQL 语句来创建若干外部连接。

有关连接的信息 有关使用外部连接组合记录的信息，请单击 按钮图像 。


无法将结果集保存为数据库中的表

Microsoft Query 2000 和更高版本不允许将结果集保存为数据库中的表。

将数据从 Excel 中导入数据库 如果数据库可导入 Microsoft Excel 数据，则可以先将结果集返回到 Microsoft Excel 中，再用数据库中的相应命令将 Microsoft Excel 数据导入一张表。例如，Microsoft Access 就具有电子表格导入向导，使用该向导可通过 Microsoft Excel 数据创建表。有关详细信息，请参阅相应数据库的文档或“帮助”。

将文本文件导入数据库 如果数据库可导入文本文件，则可以先将结果集返回到 Microsoft Excel 中，将其另存为文本文件，然后用数据库中的相应命令将该文本文件导入一张表。有关文本转换的信息，请参阅 Microsoft Excel 的“帮助”。


无法找到或删除数据源

用 Microsoft Query 以前版本创建的数据源 对于用 Query 97 以前版本的 Microsoft Query 创建的数据源，其名称后有一个星号。所有数据源（包括用 Query 2000 和更高版本创建的新数据源）都保存为具有扩展名 .dsn 的文件。若要列出用 Query 以前版本创建的数据源，请单击“文件”菜单上的“新建”命令，再单击“选择数据源”对话框中的“选项”，然后选中“在可用数据库列表中包括注册表数据源名称”复选框。 如果这些数据源都存储在默认位置上，则可以在“选择数据源”对话框中选中它们，然后再单击“删除”。

数据源文件的位置 用以前版本的 Microsoft Query 创建的数据源文件通常存储在“Common Files”文件夹的“ODBC Datasources”子文件夹中。而 Query 2000 和更高版本的数据源文件都存储在 Application Data\Microsoft\Queries 的用户配置文件夹中。若要查看用于存储数据源文件的文件夹，请单击“新建查询” 按钮图像 ，接着单击“数据库”选项卡，再单击“选项”。

查找并删除数据源文件 可按以下步骤查找并删除数据源文件：

  • 使用 Windows 的“控制面板” 如果所有数据源文件都存储在 Common Files\ODBC Datasources 文件夹或用户配置文件夹中，请双击“控制面板”或 Microsoft Windows 2000 系统中的“32 位 ODBC 数据源”图标，接着双击“管理性工具”，再双击“数据源 (ODBC)”。单击“文件 DSN”选项卡，再用“删除”按钮删除不需要的 .dsn 文件。
  • 搜索 .dsn 文件 如果数据源文件存储于若干文件夹内，那么在 Windows 中，可使用 Microsoft Windows 的“查找”命令搜索所有以“.dsn”为扩展名的文件，然后删除不需要的文件。


无法编辑查询

确保允许进行编辑 在“编辑”菜单中，单击“选项”命令，再清除“禁止编辑查询结果”复选框。


无法找到所需的表

如果表的列表中不包含要查看的表，请尝试以下方法。根据数据源的不同可用选项，可用的方法各有不同：

  • 检查所有者 所需的表可能属于不同的所有者。请在“添加表”对话框中的“所有者”列表框内单击其他的所有者。在使用某些表之前，可能需要获得该表所有者的授权。
  • 检查当前显示的表的类型 可能当前显示的表的类型中不包括所需的表的类型。请在“添加表”对话框中单击“选项”按钮。然后，请确保选中了“显示”下方所有的表类型。
  • 刷新表的列表 所需的表可能是在 Microsoft Query 最近一次连接到数据库以后才添加到数据库中的。如果要查看最近添加的表，请单击“添加表”对话框内的“选项”按钮，再单击“刷新”。


无法创建新的数据源

检查驱动程序 首先，确保是否有相应于数据源的合适的 ODBC 驱动程序或数据源驱动程序。ODBC 驱动程序和数据源驱动程序使 Microsoft Query 更加灵活，使得可以通过安装新的驱动程序就能连接到新的数据库上。但是，必须为所用的数据库类型安装和设置正确的驱动程序。

确保驱动程序可与 Microsoft Query 一起工作 除了随 Microsoft Query 一起提供的驱动程序之外，还可以使用由第三方厂商所提供的 ODBC 和数据源驱动程序。在尝试使用第三方驱动程序之前，最好确保制造商已在 Microsoft Query 2000 下测试了该驱动程序。对于某些数据库，最好选择与该数据库软件一起提供的驱动程序。若要了解可以使用哪些驱动程序，以及最好使用哪个驱动程序，请与数据库管理员联系。有关详细信息，请参阅 Query 提供的驱动程序列表。

检查服务器地址和登录信息 在设置数据源之前，请先搞清楚相应的数据库的网络地址，并确保是否有足够的权限连接和登录到该数据库上。请向数据库管理员咨询，以了解登录名、密码或其他必需的权限，并确保所授予的访问权限能够正常工作。

确保已正确安装了驱动程序 若要显示可用 ODBC 驱动程序的列表，请单击“新建查询” 按钮图像 ，再双击“数据库”或“OLAP 多维数据集”选项卡上的“新数据源”，在“创建新数据源”对话框的步骤 1 中，键入名称，然后在步骤 2 中单击列表。如果“OLAP 多维数据集”选项卡不可用，请将鼠标指向 Excel 的“数据”菜单上的“获取外部数据”，再单击“新建数据库查询”，以便在 Microsoft Excel 中运行 Query。双击“OLAP 多维数据集”选项卡上的“新数据源”，接着在“创建新数据源”对话框的步骤 1 中，键入名称，然后在步骤 2 中单击列表。如果仍然看不到所需的驱动程序，则应进行检查以确保驱动程序安装正确。如何安装驱动程序。

确保提供了所有配置信息 如果已安装了相应的驱动程序，并已在“创建新数据源”对话框第二步的列表中选择了该驱动程序，则在该对话框的第三步中需要提供所有必需的信息。有关 Microsoft 驱动程序的信息，请单击“连接”按钮，然后在该驱动程序的设置对话框内单击“帮助”按钮。有关第三方驱动程序的信息，请参阅相应驱动程序的“帮助”系统或文档。

如果使用 Microsoft 所提供的 ODBC 驱动程序或数据源驱动程序来设置数据源，那么请选择以下驱动程序名称，以查阅有关在“创建新数据源”对话框的第三步中应设置的内容。

注释 Query 无法访问由“数据连接向导”创建的数据源。

ODBC 驱动程序

Microsoft Access 驱动程序

Microsoft dBASE 驱动程序

Microsoft Visual FoxPro 驱动程序

Microsoft Excel 驱动程序

Microsoft ODBC for Oracle 驱动程序

Microsoft Paradox 驱动程序

Microsoft 文本驱动程序

Microsoft SQL Server 驱动程序

数据源驱动程序

Microsoft SQL Server OLAP Services 驱动程序


连接未能给出预期的记录

默认情况下，Query 将使用内部连接 Microsoft Query 自动连接两张表时使用的默认连接类型是内部连接（“连接”对话框内的第一个选项）。当两张表之间的连接是内部连接时，第二张表中与第一张表中记录不匹配的记录将不包括在结果集中。

创建外部连接 在两张表中，当某一张表中的记录在另一张表中未出现时，如果要检索两张表中的所有记录，请使用外部连接（“连接”对话框内的第二和第三个选项）。有关使用外部连接组合记录的信息，请单击 按钮图像 。

检查两个相同表之间的多个连接 两张表之间的外部连接有时并不会返回第二张表中的任何记录。如果此时又在两张表之间添加了一个内部连接，则 Microsoft Query 将不会检索两张表中的任何记录。若要显示数据，就必须删除一个连接。

有关连接的信息 有关连接的详细信息，请单击 按钮图像 。


Microsoft Query 未返回所有可用的记录

确认没有限制返回的记录数 请确保返回的记录数未受限制。请单击“编辑”菜单上的“选项”，然后清除“用户设置”之下的“返回的最大记录数”复选框。

检查条件 请确保正确地输入了指定的条件，从而可以检索到所需的记录。有关指定条件的详细信息，请单击 按钮图像 。

检查连接 请确保创建的连接产生了所期望的效果。有关连接的详细信息，请单击 按钮图像 。


Microsoft Query 一再超时，无法连接到数据库上

设置更长的连接时间 默认情况下，数据源的 ODBC 驱动程序已预先定义了一个时间间隔，Microsoft Query 将试图在该时间间隔内完成与数据源的连接。如果经常需要较长时间才能连接到数据库上，则可以设置一个较长的时间间隔。在 Microsoft Query 中的“编辑”菜单上，单击“选项”。选中“如在下列时间内仍未完成连接则取消：”复选框，然后在编辑框内输入所需的秒数。

使 Query 一直进行连接 如果不想限制 Microsoft Query 完成连接要用的时间，请清除“如在下列时间内仍未完成连接则取消：”复选框。在这种情况下，如果 Microsoft Query 无法连接到数据源，请按 Esc 取消连接操作。


无法通过 Microsoft Query 访问 Microsoft Excel 列表中的数据

关闭工作簿 在访问数据前，请确保没有在 Microsoft Excel 中打开该工作簿。

检查工作表 在 Microsoft Excel 工作表上检查下列内容：

  • 检查列表的格式 请确保列表符合 Microsoft Excel 列表的格式（有关在工作表上创建列表的准则的详细信息，请参阅 Microsoft Excel 的“帮助”）。为将要作为表使用的区域指定名称，并保证为每个区域指定了不同的名称。
  • 为列表命名 Microsoft Query 仅将那些已命名的区域识别为表。如果要为列表命名，请在 Microsoft Excel 中选定整个列表，然后在编辑栏上的“名称”框内输入名称。
  • 不要将列表作为系统表访问 请不要试图通过选中“表格选项”对话框中“显示”内的“系统表”选项来访问 Microsoft Excel 表。如果采用了这一方法，则 Microsoft Query 有可能会将工作表上的空白单元格识别为数据，并且有可能无法识别某些真正的数据，从而无法正确地检索数据。
  • 设置列表的格式以便组合相同格式的数据 对要进行组合的每个列表内的列使用相同的格式。例如，如果每张列表内都有日期列，则应对每个列表内的日期列应用相同的日期格式。如果在列内混合使用了文字和数字格式，则 Microsoft Excel 驱动程序可能无法找到并组合所有的数据。
  • 不要使用诸如“Table”或“Database”之类的列标志 Microsoft Query 的内部使用了一些标志，所以不能在数据中识别这些标志。
  • 将所有工作簿移动到相同文件夹中 为 Microsoft Excel 驱动程序所设置的数据源一次只能访问一个文件夹内的工作簿。如果列表位于两个不同的工作簿内，则应保证这两个工作簿都处于设置数据源时指定的工作簿所在的文件夹内。
  • 将工作簿移动到数据源所指定的文件夹中 启动 Microsoft Query 之前，请确保所有要使用的工作簿都复制到了数据源所指定的文件夹中。创建查询时，Microsoft Query 并不能自动识别新添加到数据源文件夹内的工作簿。若要访问新的工作簿，请单击“添加表”对话框中的“选项”，再单击“刷新”。

使用 Excel 来组合数据 当希望组合两张或多张 Microsoft Excel 列表中的数据时，Microsoft Query 就非常有用。如果只是使用单张工作表上的数据，或者要在单张工作表上使用简单的条件来选择行，那么使用 Microsoft Excel 的“自动筛选”命令和“高级筛选”命令（位于“数据”菜单内的“筛选”子菜单内）会更为简便。有关“自动筛选”和“高级筛选”的详细信息，请参阅 Microsoft Excel 的“帮助”。


无法编辑 SQL 过程的参数类型

如果要在 SQL 存储过程中创建参数并设置参数的数据类型，请执行下列步骤：

  1. 在“文件”菜单上，单击“执行 SQL”。
  2. 在“SQL 语句”框内，用过程的固定参数创建查询，然后单击“保存”。
  3. 在“视图”菜单上，单击“SQL”。
  4. 在“SQL 语句”框内，将每个固定的参数替换为问号“?”。
  5. 单击“确定”，再单击“视图”菜单内的“参数”。
  6. 若要更改参数的数据类型，请单击相应参数，再单击“编辑”。


无法用 Microsoft Query 创建邮件标签

Query 检索标签数据 Microsoft Query 是从数据库中检索数据的工具。它并不能创建邮件标签。但是，可将其检索到的数据用于 Microsoft Excel 或 Microsoft Word 以创建邮件标签。

在 Word 中创建标签 首先，单击“文件”菜单上的“将数据返回到 Microsoft Excel”命令以将数据返回到 Excel 中。当结果集返回到 Excel 之后，就可在 Word 中将数据用作邮递清单。也可以在 Word 中开始创建标签，然后将数据从 Query 直接返回到 Word 中。有关邮件标签的详细信息，请参阅 Excel 的“帮助”或 Word 的“帮助”。


无法用 Microsoft Query 打印结果集

Query 没有打印功能 Microsoft Query 是从数据库中检索数据的工具。它并不能直接创建打印报表。

从 Excel 打印记录 若要打印结果集，请先单击“文件”菜单内的“将数据返回 Microsoft Excel”以便将结果集返回到 Microsoft Excel 中。当结果集到了 Microsoft Excel 中以后，就可用 Microsoft Excel 中的所有格式和打印命令来排列和打印数据。有关从 Microsoft Excel 打印的详细信息，请参阅 Microsoft Excel 的“帮助”。


即使当前不在数据库上工作，Microsoft Query 也在使用连接资源

在整个 Query 会话过程中都保持连接 默认情况下，Microsoft Query 将与数据库建立单一的连接，并在退出之前一直保持该连接，而不管在此期间对该数据库打开了多少个查询窗口。如果在 Microsoft Query 会话期内对多个数据库都创建了查询，那么打开的连接就将白白占用资源和宝贵的连接时间。

关闭查询窗口时也关闭连接 如果要使耗费的连接时间最少，可以在关闭某一数据库的所有查询窗口时，让 Microsoft Query 中断与该数据库的连接。如果只希望当存在打开的查询窗口时才保留与数据库的连接，请单击“编辑”菜单上的“选项”，然后清除“保持连接打开，直到关闭 MS Query ”复选框。


为何数据源旁有星号

数据源来自以前版本的 Microsoft Query Query 97 数据源的格式与 Query 以前版本所创建的数据源格式不同。用 Query 97 以前版本创建的数据源和查询在 Query 2000 中仍能使用，但用这些数据源创建的查询将无法与其他用户共享。Query 97 以前的版本将数据源信息存储为 Microsoft Windows 操作系统的一部分，且这些信息只能在该系统上使用。

标识不可共享的数据源 若要使用以前版本的 Query 所创建的数据源，请单击“选择数据源”对话框（“文件”菜单中的“新建”命令）中的“选项”，然后选中“在可用数据库列表中包括注册表数据源名称”复选框。用 Query 97 的以前版本创建的数据源都会出现在“选择数据源”对话框中，但其名称后带有星号。

创建共享数据源 有些查询或报表模板使用了由不可共享数据源指定的外部数据库的数据，如果要共享这些查询或报表模板，则需要为这些外部数据库新建数据源，然后用新数据源创建查询、查询文件和报表模板。

删除旧的数据源 如何删除不可共享的数据源。


无法更改 OLAP 多维数据集

确保原始数据库可用 若要更改 OLAP 多维数据集，则必须能够访问为多维数据集提供数据的原始服务器数据库。请检查该数据库的位置以确保该数据库没有重命名或被移动。请确保该服务器可用，并可以连接到服务器上。

检查对原始数据库的更改 数据库中的表可能已重命名或被删除，因此多维数据集无法找到原始数据。请检查对数据库组织方式或方案的更改。若要执行以上操作，请打开数据库查询（如果在开始创建多维数据集时保存了该查询），或新建查询。在“表”菜单上，单击“添加表”来查看可用的表。如果不能打开现有查询或新建查询，那么请与数据库管理员联系以查明有关数据库更改的信息。


有消息显示“OLAP 多维数据集向导”无法打开 .oqy 文件

确保文件最初是由该向导创建的 只有当 .oqy 文件是由“OLAP 多维数据集向导”创建或保存时，才能使用向导打开和修改这些 .oqy 文件。无法使用向导打开和修改其他不包含多维数据集定义的 .oqy 文件，例如连接 OLAP 服务器数据库或脱机多维数据集文件的 .oqy 文件。

重新创建 .oqy 文件 如果不能打开由“OLAP 多维数据集向导”创建的 .oqy 文件，则可能是该文件已被损坏。请尝试打开该文件的副本，或者，如果没有该文件的备份，请重新创建多维数据集。


由于数据库是只读的，因此无法创建或删除表。是否仍要继续？

可以查看只读数据库中的表的定义，但无法创建新表或删除已有的表。


无法找到记录。可能需要更多的列来识别该记录，或其他用户已修改了该记录

在查询中更新或删除了某一记录，但 Microsoft Query 无法在基础表中找到与之相匹配的记录。可能查询中所包含的列还不足以用来辨别要更新的记录，或自运行查询以来又有其他用户更改了该记录。在更新记录之前，请执行下列操作之一：

  • 向查询中添加更多的列，或添加能唯一识别该记录的列。
  • 若要从基础表中获得最新的数据，请单击“记录”菜单上的“立即查询”以再次运行查询。


存在远程链接，是否仍要关闭？

查询中的数据与其他应用程序（如 Microsoft Excel 或 Microsoft Word）之间存在链接。

  • 若要关闭查询和链接，请单击“确定”。关闭查询之后就无法恢复链接了。
  • 若要使查询保持打开状态，并保留链接，请单击“取消”。


是否要保存剪贴板上的大量数据 <name>？

在剪贴板上有大量的数据。

  • 若要保存剪贴板上的数据，然后关闭查询或退出 Microsoft Query，请单击“是”。
  • 若要删除剪贴板上的数据，然后关闭查询或退出 Microsoft Query，请单击“否”。
  • 若要继续在 Microsoft Query 中工作，并使数据继续保留在剪贴板上，请单击“取消”。


为什么无法在 Microsoft Query 中继续工作了？

本主题中的部分内容可能不适用于某些语言。

当显示某些消息时（无论使用“Office 助手”还是没有使用助手），用户可能无法继续在 Microsoft Query 中进行操作，除非先关闭该消息框。因为这些消息是需要用户响应的重要消息。

若要继续使用 Microsoft Query，请单击出现的消息中的选项按钮。如果 Microsoft Query 不再显示消息，但显示了“帮助”主题，请单击 Microsoft Query 窗口的任一位置，以重新显示消息。


是否要将所做的更改保存到查询 <name> 中？

自上次保存后，又对当前查询的设计或格式进行了更改。

  • 若要在关闭查询之前保存所做的更改，请单击“是”。
  • 若要忽略所做的更改并关闭查询，请单击“否”。
  • 若要使查询继续保持打开状态，并且不保存所做的更改，请单击“取消”。


成功地执行了 SQL 语句：共有 <number> 行受到影响

Microsoft Query 运行了指定的 SQL 语句，受影响的行（记录）数如本消息所述。


SQL 执行失败

Microsoft Query 无法运行指定的 SQL 语句。请判断输入的语句是否正确。


表 <name> 已存在，是否要替换该表？

以所输入的内容为名称的表已存在。

  • 若要用新建的表替换已有的表，请单击“是”。
  • 若要保留已有的表，请单击“否”，再为新建的表输入另外一个名称。


将文件另存为 <name>

试图将结果集另存为表，但所指定的表名的扩展名不对，或未指定扩展名。

  • 若要将结果集以正确的扩展名保存，请单击“确定”。
  • 若要返回 Microsoft Query 而不保存结果集，请单击“取消”。


其他应用程序已退出

动态数据交换 (DDE) 对话中的另一个应用程序意外退出。重新初始化 DDE 对话之前，请重新启动该应用程序。


SQL 查询无法以图形方式表示，是否仍要继续？

Microsoft Query 无法显示该查询的“表”窗格。并且如果该查询返回了记录，也无法在查询窗口中编辑这些记录或编辑查询设计。但是，通过单击“视图”菜单内的“SQL”，然后直接编辑 SQL 语句来编辑查询的设计。


等待 DDE 应答超时

动态数据交换 (DDE) 对话中的另一个应用程序在“DDE 超时设定”选项所指定的时间内没有应答。

  • 其他程序可能在等待用户的应答。请切换到该程序，然后关闭对话框或对其显示的消息作出应答。
  • 其他程序可能过于忙碌而无法对 DDE 消息作出反应。

注释 无法更改在“DDE 超时设定”选项中指定的时间。


GROUP BY 从句的列清单后面不应有 <text>

GROUP BY 从句的列清单后面的表达式或从句无效。


HAVING 从句后不应有 <text>

SQL 语句的 HAVING 从句后面的表达式或从句无效。


ORDER BY 从句的列清单后面不应有 <text>

SQL 语句的 ORDER BY 从句后面的表达式或从句无效。


SELECT 语句的选择清单后面不应有 <text>

SELECT 语句的选择清单后面的表达式或从句无效。


WHERE 从句后不应有 <text>

SQL 语句的 WHERE 从句后面的表达式或从句无效。


选择的值太多

内存不足，无法将所有指定的值都作为该字段的条件。请减少值的数目。


无法识别计量单位

Microsoft Query 无法识别为此选项设置所输入的字符。输入数字，但不要输入表示计量单位的字符，如 "（双引号）、“in”（英寸）或“cm”（厘米）。


数据更新无效。是否仍要继续编辑记录？

由于基础表或数据源是只读的，或基础表已损坏，或磁盘空间不够等原因，Microsoft Query 无法更新编辑过的数据。


<Value> 的小数点后面位数太多

小数点后面的位数超过了字段内所允许的位数。请减少小数点后面的位数。


<Value> 不是布尔值

在只允许输入布尔值的字段内输入了非布尔值。例如，在只接受“0”或“1”的值的字段内输入了日期。


<Value> 不是有效的日期

在字段中输入的数据类型不对。例如，可能在只允许输入日期的字段内输入了文字。


<Value> 不是有效的数字

在字段中输入的数据类型不对。例如，可能在只允许输入数字的字段内输入了文字。


<Value> 超出了此列的取值范围

该值超出了此列（字段）所允许的最大数字。请输入一个较小的值。


无法修改现有的表，所做的更改可用于新建空白表

若要依据现有的表创建新表，就必须在“查看表定义”对话框中更改表的名称。新建的表中不包含现有表中的数据。无法用 Microsoft Query 编辑现有的表的定义。


扩展名 <extension> 错误

所指定的表名中的文件扩展名无效。请参阅数据源的文档，以了解正确的文件扩展名。


表达式过于复杂

表达式过于复杂而无法计算。请简化该表达式。


语法错误

表达式有语法错误。例如，可能没有输入运算数字或运算符，可能输入了无效的字符或逗号，或者输入文字时没有用引号（" 或 '）将文字引起来。请正确地输入表达式。


日期中有语法错误

表达式中有无效的日期值。请正确地输入表达式。


“.”、“!”或“( )”的用法不对

表达式中有无效的“.”（句点）或“!”运算符，或无效的括号。例如，可能输入了无效的标识符，或在常量 Null 之后键入了括号。请正确地输入表达式。


数字中有语法错误

表达式中有无效的数字。请正确地输入表达式。


字符串中有语法错误

表达式中有无效的字符串。例如，可能超出了字符串的最大长度。请正确地输入表达式。


“Between”运算符缺少“And”

使用“Between...And”运算符时，必须输入保留字“And”。请使用下列语法：

expression Between value1 And value2


有多余的右括号“)”

表达式中包含多余的右括号。请删除那些没有相应左括号的右括号。


计算时内存用尽

剩余内存不足，无法执行计算。

关闭 Microsoft Query 中的窗口，或关闭其他程序。如果再次出现本错误，请重新启动 Microsoft Windows 后再进行计算。


缺少“)”、“]”或“|”

表达式中缺少右圆括号、右方括号或垂直线。请正确地输入表达式。