侠客们救命:在VB如何使用Access库模块中的自定义函数?????
我在Access库中定义了一个过程 StringEncrypt,在VB中我用ADO 连接它.数据源是这样写的
.Source = "Select StringEncrypt(xm,'" & StrKeyWord & _
"') as 姓名 From TChengJi "
但返回了一个错误说StringEncrypt函数没定义.而在Access的查询中却可以使用此过程,怎样才能在VB中使用这个过程呢?
感谢您使用微软产品。
当您使用 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)。