Access 中的表达式在 Excel 中未正确显示

Posted

技术标签:

【中文标题】Access 中的表达式在 Excel 中未正确显示【英文标题】:Expression from Access not showing proper in Excel 【发布时间】:2017-02-11 19:59:25 【问题描述】:

首先我想说的是,我确实尝试过先解决这个问题。搜索了董事会并给朋友打电话(不走运)。

这是我的问题,希望有人能帮忙。

问题:我需要在数据中创建一个字段,根据在 10 个其他字段中的 1 个中找到的字符串显示值 HOME 或 AWAY。当我在 Access 的表视图中查看查询时,我在 Access 中创建的 express 工作得很好。但是,当我将该数据从 Access 导入 Excel 时,显示的唯一值是 HOME。

数据库:MS SQL Server 2016(最新版本+补丁)

查询:MS Access 2013

目标:将数据提取到 Excel 2013 中,以生成易于阅读和操作的 Excel 数据透视表(这样的执行人员)

HOME AWAY: IIf([Trailer 1] Like "*TAP*","AWAY",
IIF ([TRAILER 2] Like "*TAP*","AWAY",
IIF ([TRAILER 3] Like "*TAP*","AWAY",
IIF ([TRAILER 4] Like "*TAP*","AWAY",
IIF ([TRAILER 5] Like "*TAP*","AWAY",
IIF ([TRAILER 6] Like "*TAP*","AWAY",
IIF ([TRAILER 7] Like "*TAP*","AWAY",
IIF ([TRAILER 8] Like "*TAP*","AWAY",
IIF ([TRAILER 9] Like "*TAP*","AWAY",
IIF ([TRAILER 10] Like "*TAP*","AWAY","HOME"))))))))))

我已经用 6 种不同的方式重写了上述公式,如果 10 个预告片中的任何一个包含字符串 TAP,Access 中的结果总是相同的,正确显示值 HOME 或 AWAY。一旦我将数据透视表导入 Excel,唯一出现的值就是 HOME。

我计算出来的数字表达式完全没有任何问题。

有什么想法吗?

【问题讨论】:

那么,您在 Access 中有一个显示正确结果的查询?然后将结果导入Excel; excelandaccess.com/… 请显示进行呼叫的 Excel vba 连接。您将 Excel 连接到 Access 还是 SQL Server?。 @Absinthe 这正是我正在做的事情 @Parfait 我将 excel 连接到访问并且访问已将表链接到 SQL 服务器。我在哪里可以找到 vba 连接?我用来连接访问查询的方法是 Absinthe 概述的方法 【参考方案1】:

因为您通过 Excel GUI 功能区选项 - 外部数据 模块通过 ODBC(而不是通过 MSAccess.EXE GUI 应用程序)连接到 MS Access,所以LIKE 通配符必须使用 @987654323 @ 而不是 *。百分比是 ANSI-92 SQL 通配符,星号是 ANSI-89 通配符。有关此问题,请参阅官方 MSO documentation。

这就是没有返回数据的原因,因为LIKE 表达式在字符串列中逐字查找星号。考虑重写仅在 MS Access 中返回 HOME 的查询,因为默认情况下 Access .mdb/.accdb 文件使用 ANSI-89,很可能与以前的版本向后兼容。

HOME AWAY: IIf([Trailer 1] Like "%TAP%","AWAY",
IIF ([TRAILER 2] Like "%TAP%","AWAY",
IIF ([TRAILER 3] Like "%TAP%","AWAY",
IIF ([TRAILER 4] Like "%TAP%","AWAY",
IIF ([TRAILER 5] Like "%TAP%","AWAY",
IIF ([TRAILER 6] Like "%TAP%","AWAY",
IIF ([TRAILER 7] Like "%TAP%","AWAY",
IIF ([TRAILER 8] Like "%TAP%","AWAY",
IIF ([TRAILER 9] Like "%TAP%","AWAY",
IIF ([TRAILER 10] Like "%TAP%","AWAY","HOME"))))))))))

有两种方法可以使用LIKE 使同一查询在 Excel 和 Access 中兼容。

数据库设置

根据上述 MS 链接,将 MS Access 设置为使用 SQL Server ANSI 92 语法。具体来说,在 File \ Options \ Object Designers 下,选中 SQL Server Compatible Syntax (ANSI 92) 下的 This Database 复选框。完成后,必须在运行 LIKE 的查询中使用百分比通配符。

Alike 运算符

使用ALike 运算符和% 通配符,不更改默认设置。

HOME AWAY: IIf([Trailer 1] ALike "%TAP%","AWAY",
IIF ([TRAILER 2] ALike "%TAP%","AWAY",
IIF ([TRAILER 3] ALike "%TAP%","AWAY",
IIF ([TRAILER 4] ALike "%TAP%","AWAY",
IIF ([TRAILER 5] ALike "%TAP%","AWAY",
IIF ([TRAILER 6] ALike "%TAP%","AWAY",
IIF ([TRAILER 7] ALike "%TAP%","AWAY",
IIF ([TRAILER 8] ALike "%TAP%","AWAY",
IIF ([TRAILER 9] ALike "%TAP%","AWAY",
IIF ([TRAILER 10] ALike "%TAP%","AWAY","HOME"))))))))))

【讨论】:

以上是关于Access 中的表达式在 Excel 中未正确显示的主要内容,如果未能解决你的问题,请参考以下文章

在 MS Access 2007 中未正确处理查询部分的日期类型的更新集

access中无法导入excel外部数据

从 Excel 中查询 Access 中的常规日期字段(错误 13)

Access 2007 中未找到模块错误

是啥导致 Access 2010 中出现“在任何记录中未找到搜索键”错误?

Pandas Merge 中未捕获 Excel 中的“索引匹配”功能(或者是吗?)