Schreiben Ihres eigenen benutzerdefinierten Handlers
Gilt für: Access 2013 | Access 2016
Möglicherweise möchten Sie einen eigenen Handler schreiben, wenn Sie IIS-Serveradministrator sind und die standardmäßige RDS-Unterstützung benötigen, aber gleichzeitig mehr Kontrolle über Benutzeranforderungen und Zugriffsrechte haben möchten.
Durch den MSDFMAP.Handler wird die IDataFactoryHandler-Schnittstelle implementiert.
IDataFactoryHandler-Schnittstelle
Diese Schnittstelle verfügt über zwei Methoden, GetRecordset und Reconnect. Für beide Methoden muss die CursorLocation-Eigenschaft auf adUseClient festgelegt sein.
Beide Methoden akzeptieren Argumente, die nach dem ersten Komma im "Handler="-Schlüsselwort angezeigt werden. "Handler=progid,arg1,arg2;"
Beispielsweise übergibt eine Argumentzeichenfolge von "arg1,arg2"
, und übergibt eine Argumentzeichenfolge von "arg1,arg2"
, und "Handler=progid"
übergibt ein NULL-Argument.
GetRecordset-Methode
Mit dieser Methode wird die Datenquelle abgefragt und ein neues Recordset-Objekt mit den bereitgestellten Argumenten erstellt. Das Recordset-Objekt muss mit adLockBatchOptimistic geöffnet und darf nicht asynchron geöffnet werden.
GetRecordset-Argumente
conn Die Verbindungszeichenfolge.
args Die Argumente für den Handler.
query Der Befehlstext für das Ausführen einer Abfrage.
ppRS Der Zeiger für die Stelle, an der das Recordset-Objekt zurückgegeben werden soll.
Reconnect-Methode
Mit dieser Methode wird die Datenquelle aktualisiert. Es wird ein neues Connection-Objekt erstellt, und das angegebene Recordset-Objekt wird angefügt.
Argumente für die erneute Verbindung
conn Die Verbindungszeichenfolge.
args Die Argumente für den Handler.
pRS Ein Recordset-Objekt.
msdfhdl.idl
Dies ist die Schnittstellendefinition für IDataFactoryHandler, die in der Datei msdfhdl.idl angezeigt wird.
[
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);
};
};
Siehe auch
- Access-Entwicklerforum
- Hilfe mit Access unter support.office.com
- Hilfe mit Access unter answers.microsoft.com
- Access-Foren zu UtterAccess
- Entwickler- und VBA-Programmierung (FMS)
- Access-Beiträge zu StackOverflow
Support und Feedback
Haben Sie Fragen oder Feedback zu Office VBA oder zu dieser Dokumentation? Unter Office VBA-Support und Feedback finden Sie Hilfestellung zu den Möglichkeiten, wie Sie Support erhalten und Feedback abgeben können.