Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1756to1760
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Late oder Early Binding?

Late oder Early Binding?
11.05.2020 16:15:27
Klaus
Hi Leute,
ich habe mich gerade etwas zu weit aus dem Fenster gelehnt und über Sachen schwadroniert von denen ich nicht genug weiss :-) Damit ich gleich nicht ganz dumm dastehe, brauche ich bitte eine kurze Nachhilfe.
Mit dem u.g. Code schicke ich aus Excel ein sql-Kommando an eine Acces-Datenbank. Verfolgt der Beispielcode Late oder Early-Binding?
Kann mir einer extrem kurz und knapp den Unterschied erklären? Beim englischen Wikipediaeintrag _ komme ich nicht hinterher.

Const myAccessDB As String = "C:\Pfadangabe\Datenbank.accdb"
Sub DO_SQL(mySql As String)
Dim cmd As ADODB.Command
Dim con As ADODB.Connection
Set con = New ADODB.Connection
con.Open ConnectionString:= _
"Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source= " & myAccessDB & ";" & _
"Mode=Share Exclusive"
Set cmd = New ADODB.Command
cmd.ActiveConnection = con
cmd.CommandText = mySql
cmd.Execute
Set cmd = Nothing
con.Close
Set con = Nothing
End Sub

Vielen Dank,
Klaus

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Late oder Early Binding?
11.05.2020 16:22:45
Martin
Hallo Klaus,
du verwendest Early-Binding, weil ein Verweis im VBA-Projekt auf die Objektbibliothek von Access gesetzt ist. Der Vorteil von Early-Binding besteht darin, dass es schneller ist (...weil nicht erst ein "später Verweis" hergestellt werden muss) und auch die Objekttypen sowie ihre Eigenschaften der Bibliothek im VBA-Editor bekannt sind bzw. vorgeschlagen werden.
Bei Late Binding musst du einen Verweis mit CreateObject erzeugen.
Viele Grüße
Martin
AW: Late oder Early Binding?
11.05.2020 16:47:44
ChrisL
Hi Klaus
Ergänzend zur Antwort von Martin.
Ein wichtiger Vorteil von Late-Binding:
https://wordmvp.com/FAQs/InterDev/EarlyvsLateBinding.htm
The main advantage is that code which uses late binding is more certain to be version-independent
Öfters ist Late-Binding also Versions-unabhängig. Öfters, aber leider nicht immer.
In deinem Fall entsteht die Versionsabhängigkeit im ConnectionString (Provider). Es handelt sich also um eine der wenigen Ausnahmen, welche sowieso nicht auf jeder Version funktionieren wird.
cu
Chris
Anzeige
AW: Late oder Early Binding?
11.05.2020 18:32:11
Martin
Hallo Klaus,
nach dem Beitrag von Chris ist mir aufgefallen, dass ich nicht auf die Vorteile von Late Binding eingegangen bin.
Man kann nicht davon ausgehen, dass auf allen Computern die verwendeten Objektbibliotheken verfügbar sind. Bei Late Binding kannst du per Code prüfen, ob die benötigte Objektbibliothek überhaupt vorhanden ist und anschließend darauf verweisen bzw. das Problem "abfangen".
Bei Early Binding wird vorausgesetzt, dass die Bibliothek vorhanden ist. Wenn die Objektbiliothek aber nicht vorhanden ist, können der auf die verwiesene Objektbiliothek verwendete Code nicht interpretiert werden, da die verwendeten Objekte und ihre Eigenschaften nun völlig unbekannt sind. Das führt unausweichlich zu Fehlermeldungen.
Viele Grüße
Martin
Anzeige
AW: Late oder Early Binding?
12.05.2020 14:09:33
Klaus
Danke Leute, das hat geholfen!
AW: Late oder Early Binding?
13.05.2020 11:26:26
Sebastian
hallo Martin
Du schreibst, mit Late Binding kann man das Problem "abfangen". Kannst Du mal bitte kurz beschreiben, wie?
Gruß, Wastl
AW: Late oder Early Binding?
13.05.2020 11:42:37
ChrisL
Hi
Ganz normales Fehler-Handling z.B.
Sub TEST()
Dim objCon As Object
On Error GoTo errorhandler
'Set objCon = CreateObject("ADODB.Connection")
Set objCon = CreateObject("XXXX.Connection") ' provoziert Fehler
' weiterer Code
MsgBox "alles OK"
Set objCon = Nothing
Exit Sub
errorhandler:
MsgBox "Verbindung konnte nicht aufgebaut werden."
Set objCon = Nothing
End Sub
cu
Chris
Anzeige
AW: Late oder Early Binding?
13.05.2020 12:05:49
Sebastian
Verstehe.
Zum Laufen kommt das Makro ja trotzdem nicht. Wo ist dabei der Vorteil zu Early Binding?
AW: Late oder Early Binding?
13.05.2020 13:31:57
ChrisL
So gesehen hast du auch wieder recht. :)
Zum Laufen kommt das Makro ja trotzdem nicht.
Wenn es nur ums Laufen ginge, könnte man generell auf jegliches Fehlerhandling verzichten, was jedoch nicht der "best practice" entspricht.
Mit einem Fehlerhandling kann man u.a. die Fehler genauer unterscheiden (z.B. ob die Bibliothek gänzlich fehlt oder ob die Internetverbindung unterbrochen ist). Oder man kann eine individuelle Anweisung geben, wie das Problem zu behandeln ist. Plus kann man im Fehlerfall den Prozess sauber abschliessen (z.B. Events wieder einschalten und Objektvariablen leeren).
Oder in anderen Anwendungen z.B. prüfen ob Adobe oder Outlook verfügbar ist und wenn nicht, die Aufgabe über eine alternative Applikation bzw. Methode erledigen.
Weitere Beispiele fallen mir im Moment nicht ein. Aber die Tatsache, dass du Probleme spezifisch abfangen kannst, kann je nach Situation schon von Vorteil sein.
Anzeige
AW: Late oder Early Binding?
13.05.2020 14:52:52
Sebastian
OK, verstehe. Mit anderen Anwendungen habe ich noch nichts zu tun.
Ich frage mich jedes Mal, wenn ich einen Dictionary einsetze, warum ich das mit LB tun soll. Wenn der Anwender, der die Excel-Datei mit Makro bekommt, das “Microsoft Scripting Runtime” nicht hat, dann nutzt das Early Binding auch nichts.
Grüsse, Sebastian
AW: Late oder Early Binding?
13.05.2020 15:36:30
ChrisL
Überprüfe noch einmal die Begrifflichkeit. Ich glaube du verwendest Early und Late verkehrt herum.
(... dann nutzt das Late Binding auch nichts.)
(Zum Laufen kommt das Makro ja trotzdem nicht. Wo ist dabei der Vorteil zu Late Binding?)
Ja, wenn eine Applikation oder Scripting Runtime gar nicht vorhanden ist, dann bringt Late Binding keinen grossen Vorteil. Wenn die Applikation aber in anderer Version vorhanden ist, dann schon. Wenn du in den Verweisen nachschaust siehst du, dass es diverse Bibliotheken mit Versionsangabe gibt. Im Late Binding bist du tendenziell unabhängiger von der Version (siehe mein erster Post).
Ich verwende i.d.R. Late Binding deswegen (Version) und nicht wegen dem Fehlerhandling. Aber wie bereits erwähnt, hast du in deinem spezifischen Beispiel sowieso eine Versionsabhängigkeit, weshalb ich hier ausnahmsweise auch ein Early Binding in Betracht ziehen würde.
cu
Chris
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige