来自 C# 的访问查询中的“表达式中未识别的函数'InStrRev'”错误
本文关键字:InStrRev 错误 函数 访问 查询 来自 表达式 识别 | 更新日期: 2023-09-27 18:21:34
有一个名为"InStrRev"的函数在 Access 中运行良好,但是当我使用相同的函数在 C# 窗口表单中获取记录时,会弹出一条错误消息,指出
表达式中未识别的函数"InStrRev"。
是否有某种方法可以使用此函数,或者是否可以在 Access 查询中使用其他函数来获取字段中任何字符的最后一个索引?
用于 Access 的旧"Jet"驱动程序不允许我们在来自外部应用程序的查询中使用 VBA 函数,例如InStrRev()
。这些函数仅适用于从 Access 本身Microsoft运行的查询。
但是,较新版本的 Access 数据库引擎 (也称为"ACE"( 的 OLEDB 和 ODBC 驱动程序确实允许外部应用程序使用其中许多内置的 VBA 函数。因此,如果您的应用程序使用
Provider=Microsoft.Jet.OLEDB.4.0;
(OLEDB(,或
Driver={Microsoft Access Driver (*.mdb)};
(ODBC(
那么InStrRev()
函数将不起作用。但是,如果您使用较新的"ACE"驱动程序:
Provider=Microsoft.ACE.OLEDB.12.0;
(OLEDB(,或
Driver={Microsoft Access Driver (*.mdb, *.accdb)};
(ODBC(
然后,这些相同的InStrRev()
查询将运行而不会出错。
较新版本的 Access 数据库引擎(和驱动程序(可在此处免费下载:
Microsoft Access 数据库引擎 2010 可再发行组件
Net 中的等效方法是 String.LastIndexOf。您可以按如下方式使用它:
var str = "foo bar foo";
var lastIndexOfFoo = str.LastIndexOf("foo");