如何解决具有用户功能条件的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 举报,一经查实,本站将立刻删除。