使用通配符访问查询不会将数据导出到 XML 文档

BUG #: 8808 (内容维护)BUG #: 232596 (OfficeNet)本文仅适用于 Microsoft 访问数据库 (.mdb)。中等:需要基本的宏、编码和互操作性技能。

症状

将 Access 查询导出到 XML 文档,并且该查询包含 Microsoft Jet 通配符(如条件中的星号 (*)))时,数据不会导出到 XML 文档。因此,结果的 XML 文档不包含任何数据。如果使用 Access 运行同一查询,则查询功能正确。

原因

导出到 XML 时,将发生此行为。XML 使用 ActiveX 数据对象 (ADO) 从数据库中查询数据。在 Access 查询中使用特定于 Jet 的通配符时,查询不会返回任何记录。出现此问题是因为 ADO 仅识别美国国家标准协会 (ANSI) 92 个通配符。

解决方法

要解决此问题,请使用以下方法之一。

方法 1

您可以重写查询,将特定于 Jet 的通配符替换为 ANSI 92 通配符。例如,原始查询可能与 * 通配符类似:

SELECT Customers.CustomerIDFROM CustomersWHERE (((Customers.CustomerID)  Like "A*"));

您可以重写查询,如下所示:

SELECT Customers.CustomerIDFROM CustomersWHERE (((Customers.CustomerID)  Like "A%"));

备注如果未为 ANSI 92 兼容性配置 Access 数据库,则当您从 Access 运行重写查询时,不会返回任何数据。但是,基于重写查询的导出的 XML 文档返回预期结果。

方法 2

您可以重写查询,以便查询条件不包含通配符。例如,原始查询可能与 * 通配符类似:

SELECT Customers.CustomerIDFROM CustomersWHERE (((Customers.CustomerID)  Like "A*"));

您可以重写查询,如下所示:

SELECT Customers.CustomerIDFROM CustomersWHERE Left(CustomerID,1) = "A";

方法 3

将数据导出到 XML 文档时,可以指定是否对对象应用现有筛选器。无需在查询条件中指定通配符,则可以创建一个筛选器,该筛选器的筛选器字符串等效于所需的条件(如"A+"),然后在导出 XML 过程中应用此筛选器。为此,请按照以下步骤操作,具体取决于 Access 的版本。

访问 2003

  1. 打开北风示例数据库。

  2. 在"插入"菜单上,单击"查询"。

  3. 在"新建查询"对话框中,选择"设计视图",然后单击"确定"。

  4. 在"视图"菜单上,单击SQL 视图

  5. 在"查询"窗口中,粘贴以下查询:

    SELECT Customers.CustomerIDFROM Customers;

    备注您可以看到查询的条件已被删除。因此,查询不包含任何通配符。

  6. 在“文件”菜单上,单击“保存”。

  7. 在"另存为"对话框的"查询名称"框中,键入"查询1",然后单击"确定"。

  8. 在"视图"菜单上,单击"数据表视图"。

  9. 在"记录"菜单上,指向"筛选",然后单击"高级筛选器/排序"。

  10. 在"字段"列表中,选择"客户 ID"。

  11. 在"客户 ID"的条件框中,粘贴以下代码:

    Like "A*"
  12. 在"筛选器"菜单上,单击"应用筛选器/排序"。

  13. 在“文件”菜单上,单击“保存”。

  14. 在"文件"菜单上,单击"关闭"。

  15. 在"数据库"窗口中,单击"查询"。

  16. 右键单击"查询1",然后单击"导出"。

  17. 在"导出查询1"到对话框中,在"另存为类型"列表中选择XML,然后单击"导出"。

  18. 在"导出 XML"对话框中,单击"更多选项"。

  19. 在"导出 XML"对话框中,选择"数据"选项卡。在"要导出的记录"下,单击以选中"应用现有筛选器"复选框,然后单击"确定"。

访问 2007

  1. 打开北风示例数据库。

  2. 在"创建"选项卡上,单击"查询设计",然后单击"关闭"。

  3. 在"设计"选项卡上,单击"结果"组中的SQL 视图。

  4. 在"查询"窗口中,粘贴以下查询:

    SELECT Customers.[First Name]FROM Customers;

    备注您可以看到查询的条件已被删除。因此,查询不包含任何通配符。

  5. 单击"微软办公室"按钮,然后单击"保存"。

  6. 在"另存为"对话框的"查询名称"框中,键入"查询1",然后单击"确定"。

  7. 在"主页"选项卡上,在"视图"组中,单击"查看",然后单击"数据表视图"。

  8. 在"主页"选项卡上,单击"排序和筛选"组中的"高级",然后单击"高级筛选器/排序"。

  9. 在"字段"列表中,选择"名字"

  10. 在"名字" 下的"条件"框中,粘贴以下代码:

    Like "A*"
  11. 在"主页"选项卡上,单击"排序和筛选"组中的"高级",然后单击"应用筛选器/排序"。

  12. 单击"微软办公室"按钮,然后单击"保存"。

  13. 右键单击"查询1",指向导出,单击XML 文件,然后单击"确定"。

  14. 在"导出 XML"对话框中,单击"更多选项"。

  15. 在"导出 XML"对话框中,单击"数据"选项卡。

  16. 在"要导出的记录"下,选择"应用现有筛选器"选项,然后单击"确定"。

  17. 在"导出 - XML 文件"对话框中,单击"关闭"。

状态

Microsoft 已确认这是本文开头列出的 Microsoft 产品中的一个错误。

更多信息

在 Access 2003 中重现问题的步骤

  1. 打开北风示例数据库。

  2. 在"插入"菜单上,单击"查询"。

  3. 在"新建查询"对话框中,选择"设计视图",然后单击"确定"。

  4. 在"视图"菜单上,单击SQL 视图

  5. 在"查询"窗口中,粘贴以下查询:

    SELECT Customers.CustomerIDFROM CustomersWHERE (((Customers.CustomerID)  Like "A*"));
  6. 单击"文件"菜单上的"保存"。

  7. 在"另存为"对话框中的"查询名称"框中,键入"查询1"。

  8. 在“文件”菜单上,单击“关闭”。

  9. 右键单击"查询1",然后单击"导出"。

  10. 在"导出查询1"到..."对话框中,在"另存为类型"列表中选择XML,然后单击"导出"。

  11. 在"导出 XML"对话框中,单击"确定"以将 XML 相关文件保存在默认位置。

  12. 在 Microsoft Internet 资源管理器中,打开导出的 XML 文件。您可以看到,基于指定查询的导出的 XML 文件不包含任何记录。

参考

有关 ANSI 92 语法的详细信息,请在"Office 助手"中键入有关 ansi sql 查询模式的信息,然后单击"搜索"。

需要更多帮助?

扩展你的技能
了解培训
抢先获得新功能
加入 Microsoft 内部人员

此信息是否有帮助?

谢谢您的反馈意见!

×