侠客们救命:在VB如何使用Access库模块中的自定义函数?????


我在Access库中定义了一个过程 StringEncrypt,在VB中我用ADO 连接它.数据源是这样写的
.Source = "Select StringEncrypt(xm,'" & StrKeyWord & _
"') as 姓名 From TChengJi "
但返回了一个错误说StringEncrypt函数没定义.而在Access的查询中却可以使用此过程,怎样才能在VB中使用这个过程呢?
[251 byte] By [renhuailin-小狍子] at [2008-6-4]
# 1
难道没人会吗?
renhuailin-小狍子 at 2007-10-23 > top of Msdn China Tech,其他开发语言,Office开发/VBA...
# 2
高手哪儿去了????/
renhuailin-小狍子 at 2007-10-23 > top of Msdn China Tech,其他开发语言,Office开发/VBA...
# 3
感谢您使用微软产品。

当您使用 ADO 连接 Access 数据库时,实际上最后是通过 Jet 引擎来操作 Access database 中的数据。

Jet 引擎能读,写,操作 table/query/stored procedure 中的数据, 但是不能操作其他Access 数据库中的部件,如 Form/Report/Macro/Code Modules. 当 Jet引擎在Access 之外运行时(如通过ODBC driver or OLEDB provider),它会调用 vbar332.dll 以使用VBA内建的函数, 但是 Jet 引擎不会知道任何Access database 的 code module 中的任何User defined Functions. 这是 by design的。

相关信息,您可以参考以下文章:

ID: Q166113 PRB: User-defined Modules Can't Be Used Through ODBC or DAO
<http://support.microsoft.com/default.aspx?scid=kb;EN-US;qQ166113>

一个可能的解决方案是:通过 Automation 让 Access 运行该查询并将结果放入临时表中。然后通过VB查询临时表。

- 微软全球技术中心 桌面产品技术支持

立即参加微软认证的“最有价值专家”评选,赢取价值万元以上的丰富奖品!详情参见(http://www.Codefund.cn/expert/Topic/456/456919.shtm)

本贴子以“现状”提供且没有任何担保,同时也没有授予任何权利。具体事项可参见使用条款(http://support.microsoft.com/directory/worldwide/zh-cn/community/terms_chs.asp)。