Vllt ein paar Gedanken ergänzt zu Deiner Frage:
Bei kleineren Projekten kann es genügen, das Connection-Objekt als Private in einem allgemeinen Modul zu deklarieren.
Wenn Du nun ein Recordset auf Prozedurebene benötigst, lässt sich die db.Execute Methode verwenden, um ein Recordset-Objekt zu erzeugen.
Private db As ADODB.Connection
Eine Prozedur öffnet die Verbindung, eine weitere schließt diese wieder.
Call openDB()
Call closeDB()
Sub openDB()
If db is Nothing then set db = new ADODB.Connection
With db
.Connection string = "..."
'*** ...
.Open
End With
Sub closeDB()
If db.state = 1 Then db.close
End With
Recordset erzeugen:
set rs = db.execute(...)
Ob Du das Recordset nun modulweit oder prozedurweit deklarieren musst, würde Ich von der Projektstruktur abhängig machen.
Ich persönlich lagere ADODB gern in ein Klassenmodul aus, was den eigentlichen Code schlanker und lesbarer macht.
By the way:
Generell würde Ich von der autoinstancing-Arbeitsweise abraten
Dim variable as new Object
|