首页 > 解决方案 > 具有用户功能条件的 MS Access 查询停止处理 odbc 数据

问题描述

我在 MS Access 查询生成器中工作。我正在使用用户定义的函数来返回要搜索的括号中的字符组。例如,标准线是

Like Tcode()

并且函数 Tcode() 是

Function Tcode() As String
Tcode = "[AC]"
End Function

如果我创建一个包含 3 个单字符数据行的本地数据表

A
B
C

并使用此条件对该列运行查询,我根据需要只得到 A 和 C 的行。如果我按照以下标准运行它

Like "[AC]"

根据需要,我也只得到 A 和 C 的行。当我对我们拥有的 ODBC Oracle 表运行查询时,问题就出现了。如果我使用 Like "[AC]" 的标准,那么我会得到 A 和 C 的结果。如果我使用 like Tcode() 的标准,那么我不会得到任何结果。我在 Tcode 的返回值上尝试了几种变体,但均未成功:

Tcode 返回 [AC] 无结果

Tcode 返回 "[AC]" 无结果

Tcode 返回 [[AC]] 无结果

Tcode 返回 [A] 无结果

Tcode 在所有带有 A 的行中返回 A 结果

我想动态构建 Tcode 返回值,以根据用户在其他表单上的输入获得不同的结果。为什么它在 odbc 表上不起作用?我也接受一种建立搜索的方法

在('A','C')

或者

“A”或“C”

但我不知道如何使用函数来实现它。

编辑:甲骨文版本

Oracle Database 12c 企业版版本 12.1.0.2.0 - 64 位生产
PL/SQL 版本 12.1.0.2.0 - IBM/AIX RISC System/6000 的生产
“CORE 12.1.0.2.0 生产”
TNS:版本 12.1.0.2.0 - 生产
NLSRTL 版本 12.1.0.2.0 - 生产

客户端驱动程序 19.5

标签: oraclefunctionms-accessodbc

解决方案


有趣的。我只能为您提供帮助,因为通常 ODBC 不是问题。

它适用于 Sql Server 表:

CREATE TABLE foobar (
    T varchar(10) PRIMARY KEY
);

使用 SQL Server 的 ODBC 驱动程序 17 在 Access 中链接,包含上述值 A、B、C。

这个查询:

SELECT T
FROM foobar
WHERE T Like Tcode()

返回值 A+C (使用问题中定义的函数)。

所以一定是Oracle ODBC驱动的问题。

您可能应该指定您使用的 Oracle 版本和 ODBC 驱动程序。


请注意,您不能将IN子句与函数一起使用,请参阅https://stackoverflow.com/a/63054220/3820271


推荐阅读