微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

具有用户功能条件的MS Access查询停止处理odbc数据

如何解决具有用户功能条件的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表运行查询时,就会出现问题。如果我使用类似“ [AC]”的条件,则得到A和C的结果。如果我使用类似Tcode()的条件,则没有结果。我尝试了Tcode的返回值的几种变体,但均未成功:

Tcode返回[AC]没有结果

Tcode返回“ [AC]”,没有结果

Tcode返回[[AC]]没有结果

Tcode返回[A]没有结果

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

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

以('A','C')

“ A”或“ C”

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

编辑:Oracle版本

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

客户端驱动程序19.5

解决方法

有趣。我只能在总体上不是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

,

我无法找出原因。我有两个选择;一种是在每次运行时使用VBA自定义生成sql以进行传递查询。我倾向于将其保存为利用服务器上特殊功能的复杂查询。我采用的解决方案是将函数转换为评估字符串的布尔值。对于大型查询而言,这不是最快的事情,但是..权衡。

UPDATE mytable
   SET mycolumn =
           (SELECT COLUMN_VALUE
              FROM (SELECT ROWNUM AS row_num,t.COLUMN_VALUE
                      FROM TABLE (
                               sys.odcivarchar2list ('oefaihfoiashfe','fiaohoawdihoiwahopah','aefohdfaohdao')) t)
             WHERE row_num = id);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。