Compartir a través de


Escribir su propio controlador personalizado

Se aplica a: Access 2013 | Access 2016

Quizás desee escribir un controlador propio si es un administrador de IIS y desea disponer de la compatibilidad predeterminada con RDS, pero además desea tener mayor control sobre las solicitudes y los derechos de acceso de los usuarios.

MSDFMAP.Handler implementa la interfaz IDataFactoryHandler.

Interfaz IDataFactoryHandler

Esta interfaz tiene dos métodos: GetRecordset y Reconnect. Ambos métodos requieren que el valor de la propiedad CursorLocation sea adUseClient.

Ambos métodos toman argumentos que aparecen detrás de la primera coma en la palabra clave "Handler=". Por ejemplo, "Handler=progid,arg1,arg2;" pasará una cadena de argumento de "arg1,arg2"y pasará una cadena de argumento de "arg1,arg2"y "Handler=progid" pasará un argumento NULL.

Método GetRecordset

Este método consulta el origen de datos y crea un nuevo objeto Recordset con los argumentos proporcionados. El objeto Recordset debe abrirse con adLockBatchOptimistic y no debe abrirse asincrónicamente.

Argumentos GetRecordset

conn: cadena de conexión.

args: argumentos para el controlador.

query: texto de comando para realizar una consulta.

ppRS: puntero donde debe devolverse el objeto Recordset.

Método Reconnect

Este método actualiza el origen de datos. Crea un nuevo objeto Connection y anexa el objeto Recordset especificado.

Volver a conectar argumentos

conn: cadena de conexión.

args: argumentos para el controlador.

pRS: objeto Recordset.

msdfhdl.idl

Es la definición de interfaz para IDataFactoryHandler que aparece en el archivo msdfhdl.idl.

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

Vea también

Soporte técnico y comentarios

¿Tiene preguntas o comentarios sobre VBA para Office o esta documentación? Vea Soporte técnico y comentarios sobre VBA para Office para obtener ayuda sobre las formas en las que puede recibir soporte técnico y enviar comentarios.