Wenn du über CurrentDB auf die Tabellen zugreifst, wird die Access-Syntax von SQL verwendet, die nach einer Übersetzung in die ODBC-Syntax an den Treiber weitergegeben wird.
Wenn du direkt über das Connection-Objekt zugreifst, wird direkt die AS/400-Syntax verwendet, dies entspricht in Access einem SQL-Passthru.

Wenn du mit ADO statt DAO arbeitest, ändern sich ein paar Kleinigkeiten:
DAO.Database => ADODB.Connection
DAO.QueryDef => ADODB.Command

Recordset, Parameter und Field-Objekte gibt es weiterhin mit ein paar erweiterten bzw. geänderten Eigenschaften.

Bei wiederholten SQL-Statements mit verschiedenen Werten lohnen sich "Parameter":

dim myCnn as new ADODB.Connection
dim myCmd as new ADODB.Command

with myCmd
.Commandtext = "Insert Into Bibliothek.Tabelle Values (?, ?, ?, ?)"
.Prepared = true
set .ActiveConnection = myCnn
.execute , Array('Otto Müller', '040101', '041231', 'Summe der Fehlzeiten'), adExecuteNorecords
end with

Mit dem Array() wird der 1. Wert dem 1. Fragezeichen zugeordnet, der 2. Wert dem 2. Fragezeichen und so weiter.

Der große Vorteil liegt in der Vereinfachung der Verwendung, da der SQL-Befehl nicht immer neu zusammengesetzt werden muss (Dezimalpunkt/-komma, Hochkomma in Zeichenfolgen, usw.).