Hallo Josef,
mit ist noch eine Variante eingefallen: Direktes ADO.NET (System.Data.SqlClient)
- Code: Alles auswählen
Public Sub SqlDataReader_ReadTest()
Dim con As LIB_interop.SqlConnection
Set con = New LIB_interop.SqlConnection
con.Init "Server=LOCALHOST\SQLEXPRESS;initial Catalog=MyDB;Integrated Security=true;MultipleActiveResultSets=True;Application Name=.netTest"
con.Open
Dim tran As LIB_interop.SqlTransaction
Set tran = con.BeginTransaction
Dim cmd As LIB_interop.SqlCommand
Set cmd = con.CreateCommand
Set cmd.Transaction = tran
cmd.CommandText = "Select TOP (5) Name1 from Kunden;"
Dim reader As LIB_interop.SqlDataReader
Set reader = cmd.ExecuteReader
While reader.Read
Debug.Print reader("Name1")
Wend
Set reader = Nothing
tran.Commit
con.Close
Set tran = Nothing
Set con = Nothing
End Sub
Vorteil für mich: ich kann fast 1:1 so programmieren wie in .NET, und ich kann Connection- und Transaction-Objekte an meine .NET-Hilfsklassen übergeben und damit komplexe Operationen direkt auf einer Transaktion ausführen lassen ohne in der DAO- bzw. ADODB-Hölle zu landen.
Die Implementierung des SqlDataReaders war nur ein Test für mich um zu sehen ob es Funktioniert.