"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