"Unidentified function 'InStrRev' in expression" 来自 C# 的 Access 查询中的错误

Posted

技术标签:

【中文标题】"Unidentified function \'InStrRev\' in expression" 来自 C# 的 Access 查询中的错误【英文标题】:"Unidentified function 'InStrRev' in expression" error in an Access query from C#"Unidentified function 'InStrRev' in expression" 来自 C# 的 Access 查询中的错误 【发布时间】:2014-09-12 09:35:33 【问题描述】:

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

表达式中存在未识别的函数“InStrRev”。

有没有什么方法可以使用这个函数,或者我可以在我的 Access 查询中使用其他函数来获取字段中任何字符的最后一个索引?

【问题讨论】:

【参考方案1】:

用于 Access 的旧“Jet”驱动程序不允许我们在来自外部应用程序的查询中使用 VBA 函数,例如 InStrRev()。这些函数只能用于从 Microsoft Access 本身运行的查询。

但是,用于较新版本的 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 Database Engine 2010 Redistributable

【讨论】:

【参考方案2】:

.Net 中的等效方法是String.LastIndexOf。您可以按如下方式使用它:

var str = "foo bar foo";
var lastIndexOfFoo = str.LastIndexOf("foo");

【讨论】:

没有数据来自访问,我希望它在那里

以上是关于"Unidentified function 'InStrRev' in expression" 来自 C# 的 Access 查询中的错误的主要内容,如果未能解决你的问题,请参考以下文章

Ural 1903 Unidentified Ships 组合数 + 乘法逆元

el-date-picker日期选择器 ——[Vue warn]: Error in render: "TypeError: date.getFullYear is not a functi

在 Spark Dataframe (Pyspark) 中提取与特定条件匹配的第一个“行集”

jquery-保持悬停状态

帕拉布拉斯综合酒店

最新通知提醒