Seite 1 von 1

Access 2007, Late Binding

BeitragVerfasst: Mi 14. Sep 2011, 16:26
von Christoph Jüngling
Nachdem ein bekannter Redner ;) vor einiger Zeit mal ein Konzept vorgeschlagen hatte, mittels "late binding" einige Fallstricke der Verweise zu umgehen, habe ich das auch mal probiert, z.B. so:

Code: Alles auswählen
#If EARLY_BINDING Then
    Dim rs As ADODB.Recordset
    Set rs = New ADODB.Recordset
#Else
    Dim rs As Object
    Set rs = CreateObject("ADODB.Recordset")
#End If


Das funktioniert auch wunderbar, bis ich auf die Idee kam, dass Objekte ja auch Events werfen können. Also habe ich deklariert - bzw. wollte deklarieren:

Code: Alles auswählen
#If EARLY_BINDING Then
    Private WithEvents rsData As ADODB.Recordset
#Else
    Private WithEvents rsData As Object
#End If


Und saudummerweise mag VBA bei dem Typ "Object" offenbar keine Events fangen, was natürlich das ganze schöne Konzept wieder in Frage stellt.

Hat jemand eine Idee, wie man das lösen kann?

Thx,

Chris

Re: Access 2007, Late Binding

BeitragVerfasst: Mi 14. Sep 2011, 18:02
von Josef Pötzl
Hallo!

WithEvents kann man nicht für Late-Binding-Variablen verwenden. Du könntest zur Not eine eigene Klasse zu Kapselung erstellen und darin über COM-Methoden auf die Ereignisse reagieren. ich bezweifle aber, dass sich dieser Aufwand lohnt. ;-)

Als Prinzip-Beispiel:
LateBindingEventBridge.zip
(89.71 KiB) 3093-mal heruntergeladen

.. LateBindingEventBridge.dll ist eine VB6-COM-dll, für die Kapselung der COM-Methoden.

mfg
Josef

Re: Access 2007, Late Binding

BeitragVerfasst: Fr 30. Dez 2011, 17:24
von Christoph Jüngling
Danke für den Tipp. Ich fürchte aber, um die Verweise wird man doch nicht herum kommen.

Re: Access 2007, Late Binding

BeitragVerfasst: Di 3. Jan 2012, 15:54
von Josef Pötzl
Es geht theoretisch schon ohne ADODB-Verweise, ist aber um einiges aufwendiger. ;-)