RecordCount bei ADODB
05.09.2016 12:01:33
Hendrik
ein Makro macht automatisiert SQL-Abfragen. Hier ein Codeschnipsel dazu:
strConnectionString = "Provider=MSDASQL.1;Driver=SQL Server;Server=" & strServer & ";Database=" _
_
& strDatenbank & ";Trusted_Connection=Yes"
Set objConn = New ADODB.Connection
objConn.CommandTimeout = glIntTimeout
objConn.ConnectionString = strConnectionString
objConn.Open
Set objRec = New ADODB.Recordset
objRec.Open strSql, objConn, adOpenStatic
If objRec.RecordCount > 0 Then
If objRec.RecordCount > glIntMaxFehler Then
lngDatensatz = glIntMaxFehler
Else
lngDatensatz = objRec.RecordCount
End If
ReDim glStrArr(lngDatensatz - 1, objRec.Fields.Count - 1)
objRec.MoveFirst
For i = 0 To lngDatensatz - 1
For j = 0 To objRec.Fields.Count - 1
If Not IsNull(objRec(j)) Then
glStrArr(i, j) = objRec(j)
Else
glStrArr(i, j) = "{NULL}"
End If
Next j
objRec.MoveNext
Next i
End If
Da das SQL eigentlich recht schnell ausgeführt ist, wenn ich es manuell in einem anderen Tool absetze, habe ich die Stelle debugt und herausgefunden, dass fast 30 Sekunden vergehen, bis ich die Antwort auf "If objRec.RecordCount > 0" bekomme. Kann es sein, dass der alle (in diesem Fall 250.000) Sätze einzeln zählt? Habt Ihr hier Verbesserungsvorschläge?
Danke und Grüße