编写你自己的自定义处理程序
适用于:Access 2013 | Access 2016
如果您是一名 IIS 服务器管理员,希望获得默认的 RDS 支持但需要更有力地控制用户请求和访问权限,那么您可以编写自己的处理程序。
MSDFMAP.Handler 可实现 IDataFactoryHandler 接口。
IDataFactoryHandler 接口
此接口具有两个方法:GetRecordset 和 Reconnect。 这两个方法都需要将 CursorLocation 属性设置为 adUseClient。
这两个方法均采用显示在“Handler=”关键字中第一个逗号之后的参数。 例如, "Handler=progid,arg1,arg2;"
将传递 的参数字符串 "arg1,arg2"
,并将传递 的参数字符串 "arg1,arg2"
,并将 "Handler=progid"
传递 null 参数。
GetRecordset 方法
此方法用于查询数据源,并使用所提供的参数创建一个新的 Recordset 对象。 Recordset 必须用 adLockBatchOptimistic 打开,而且不能异步打开。
GetRecordset 参数
conn:连接字符串。
args:处理程序的参数。
query:进行查询的命令文本。
ppRS:指向 Recordset 的返回位置的指针。
重新连接方法
此方法更新数据源。 它创建一个新的 Connection 对象并附加给定 的 Recordset。
重新连接参数
conn:连接字符串。
args:处理程序的参数。
pRS:Recordset 对象。
msdfhdl.idl
以下是显示在 msdfhdl.idl 文件中的 IDataFactoryHandler 的接口定义。
[
uuid(D80DE8B3-0001-11d1-91E6-00C04FBBBFB3),
version(1.0)
]
library MSDFHDL
{
importlib("stdole32.tlb");
importlib("stdole2.tlb");
// TLib : Microsoft ActiveX Data Objects 2.0 Library
// {00000200-0000-0010-8000-00AA006D2EA4}
#ifdef IMPLIB
importlib("implib\\x86\\release\\ado\\msado15.dll");
#else
importlib("msado20.dll");
#endif
[
odl,
uuid(D80DE8B5-0001-11d1-91E6-00C04FBBBFB3),
version(1.0)
]
interface IDataFactoryHandler : IUnknown
{
HRESULT _stdcall GetRecordset(
[in] BSTR conn,
[in] BSTR args,
[in] BSTR query,
[out, retval] _Recordset **ppRS);
// DataFactory will use the ActiveConnection property
// on the Recordset after calling Reconnect.
HRESULT _stdcall Reconnect(
[in] BSTR conn,
[in] BSTR args,
[in] _Recordset *pRS);
};
};
另请参阅
- 访问开发人员论坛
- 访问 support.office.com 上的帮助
- 访问 answers.microsoft.com 上的帮助
- 访问 UtterAccess 上的论坛
- 访问开发人员和 VBA 编程帮助中心 (FMS)
- 访问 StackOverflow 上的帖子
支持和反馈
有关于 Office VBA 或本文档的疑问或反馈? 请参阅 Office VBA 支持和反馈,获取有关如何接收支持和提供反馈的指南。
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈