为了账号安全,请及时绑定邮箱和手机立即绑定

delphi 使用access的函数问题?

delphi 使用access的函数问题?

幕布斯7119047 2019-02-05 11:07:57
access中有个字符串函数StrReverse 字符串倒序功能但这个函数在Delphi的ADOQuery 的SQL中无法使用。如何解决。另外Delphi中使用查询语句是在Delphi中执行还是Access中执行?经测试Access创建一个视图 也是一样的
查看完整描述

2 回答

?
收到一只叮咚

TA贡献1821条经验 获得超4个赞

这个可能是沙盒模式的影响(StrReverse 函数也在其中),看以下知识库

为了帮助增强数据的安全性,可以选择以沙盒模式运行 Access 2003。在沙盒模式下,Access 仅计算字段属性和控件中那些安全的表达式。如果表达式未使用恶意用户可用来访问他们未得到授权的驱动器、文件或其他资源的那些函数或属性,则可以认为该表达式是安全的。例如,函数 Kill 和 Shell 可被用于损坏计算机中的数据和文件,因此,认为它们是不安全的。以沙盒模式运行 Access 时,调用这些函数或属性的表达式将会导致错误信息。

有关在沙盒模式下被阻止的函数和属性的列表,请参阅沙盒模式中阻止的函数和属性。

注释 沙盒模式不影响文件中的 Visual Basic for Applications (VBA) 代码。无论 Access 是否在沙盒模式下,都将运行进行了数字签名的代码,即使它包含禁用的函数或属性。仅在默认值、控件源或 SQL 语句之类的表达式中,才会禁用不安全的函数和属性。

使用 Microsoft Jet Expression Service 实现沙盒模式来计算表达式。Microsoft Jet 4.0 Service Pack 8 (SP8) 或更高版本允许 Access 完全发挥功能,同时还能通过启用沙盒模式让 Jet 禁用不安全的表达式。不过,Jet 表达式服务不是 Access 的一部分。需要下载并安装 Microsoft Jet 4.0 Service Pack 8 (SP8) 或更高版本才能启用沙盒模式。

注释 重要 Windows 更新包括 Jet 4.0 SP 8,所以安装所有重要 Windows 更新将自动在计算机上安装 Jet 的最新版本。

要点 安装 Jet 的最新版本不会自动启用沙盒模式。安装 Service Pack 或 Windows 重要更新后启动 Access 时,系统将会提示您禁用不安全的表达式。单击“是”将打开沙盒模式并阻止计算不安全的表达式。

如果您未安装 Jet 4.0 SP 8 或更高版本就启用沙盒模式,某些功能将无效。例如,向导不会启动,同时,您会看到以下消息:“这个功能没有安装,或者已被禁用”。

向导可能没有启动。
使用切换面板管理器创建的切换面板将不能正常工作。
您无法使用 RunCode 宏操作来调用 Visual Basic for Applications (VBA) 过程。
调用 VBA 过程的事件处理程序将不能正常工作。
在属性页中调用的 VBA 过程或用于 SQL 语句中的 VBA 过程将不能正常工作。
在属性页中调用下列 VBA 函数时它们将不能正常工作;当它们用于 SQL 语句中时也是如此:
FormatCurrency
FormatDateTime
FormatNumber
FormatPercent
InStrB
InStrRev
MonthName
Replace
StrReverse
WeekDayName

有关安装 Jet 的最新版本的详细信息,请参阅关于 Microsoft Jet 4.0 SP8 或更高版本(英文)。有关启用沙盒模式的详细信息以及了解沙盒模式的局限性和替代方法的详细信息,请参阅有关 Access 安全警告的常见问题(英文)。

有关 Jet 的早期版本中的沙盒模式的详细信息,请参阅以下知识库文章:ACC2002:Jet 4.0 Expression 可以执行不安全的 Visual Basic for Applications 函数。

解决方法:参考英文说明
\\HKEY_LOCAL_MACHINE\Software\Microsoft\Jet\4.0\engines\SandboxMode
0 Sandbox mode is disabled at all times.
1 Sandbox mode is used for Access applications, but not for non-Access Applications.
2 Sandbox mode is used for non-Access applications, but not for Access Applications. This is the default value.
3 Sandbox mode is used at all times.



查看完整回答
反对 回复 2019-03-21
?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

只要连对了数据库引擎,access支持,那么Delphi组合的sql语句执行起来也没有问题。
请查看你的语法是否正确。
比如:
Qry1: TADOQuery;

Qry1.close;
Qry1.sql.text := 'select StrReverse(...) from Table';
Qry1.open;

那就看用什么方法最简单了。


查看完整回答
反对 回复 2019-03-21
  • 2 回答
  • 0 关注
  • 915 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信