编写你自己的自定义处理程序

适用于:Access 2013 | Access 2016

如果您是一名 IIS 服务器管理员,希望获得默认的 RDS 支持但需要更有力地控制用户请求和访问权限,那么您可以编写自己的处理程序。

MSDFMAP.Handler 可实现 IDataFactoryHandler 接口。

IDataFactoryHandler 接口

此接口具有两个方法:GetRecordsetReconnect。 这两个方法都需要将 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:处理程序的参数。

pRSRecordset 对象。

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); 
    }; 
}; 

另请参阅

支持和反馈

有关于 Office VBA 或本文档的疑问或反馈? 请参阅 Office VBA 支持和反馈,获取有关如何接收支持和提供反馈的指南。