来自 C# 的访问查询中的“表达式中未识别的函数'InStrRev'”错误

本文关键字:InStrRev 错误 函数 访问 查询 来自 表达式 识别 | 更新日期: 2023-09-27 18:21:34

有一个名为"InStrRev"的函数在 Access 中运行良好,但是当我使用相同的函数在 C# 窗口表单中获取记录时,会弹出一条错误消息,指出

表达式中未识别的函数"InStrRev"。

是否有某种方法可以使用此函数,或者是否可以在 Access 查询中使用其他函数来获取字段中任何字符的最后一个索引?

来自 C# 的访问查询中的“表达式中未识别的函数'InStrRev'”错误

用于 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");