Ich habe ein ADO-Befehlsobjekt in VBA ausgeführt und Rückgabewerte von einer gespeicherten Prozedur (in SQL Server). Um den SP und die Befehlszeilen in VBA zu überprüfen, habe ich die CopyFromRecordset-Methode verwendet, um die Daten anzuzeigen, und alles scheint in Ordnung zu sein.ADO-Recordset hat keine Recordcount mit Quelle auf ADO-Befehl (gespeicherte Prozedur)
Set ADOComm = New ADODB.Command
With ADOComm
.ActiveConnection = ADOConn
.CommandType = adCmdStoredProc
.CommandText = "GenerateMasterSumIfs"
.Parameters.Append .CreateParameter("ImportFilePath", adVarChar, adParamInput, 100, TextFileSavePath)
End With
Set ADORec = New ADODB.Recordset
Set ADORec = ADOComm.Execute
Ich würde jetzt mit FIND oder GetRows die zurückgegebenen Datensätze zu können, wie (zum Beispiel) navigieren, aber der Re-Cord erscheint keine Daten zu haben (recordset.RecordCount gibt -1). Ich habe versucht, dies online zu recherchieren und habe gesehen, dass Verweise auf Cursortypen abhängig von der Quelle (in meinem Fall SQL Server) eingeschränkt waren, aber ich konnte keine Lösung finden, die ich verstehen und verwenden kann.
Also, meine Frage (n), insbesondere ist:
- Kann ich die ADO-Befehl/Cord-Kombination verwenden, um meine Daten zu sammeln dann ‚surfen‘ oder? ODER
- Muss ich den SP mit einer anderen Methode ausführen, um die gewünschte Navigation zu ermöglichen?
Ich bin kein Experte auf diesem Gebiet, so würde schätzen Ihre Geduld mit meinen technischen Beschreibungen und anderen Websites Etikette Fauxpas.
Ist 'SET NOCOUNT ON;' in Ihrer gespeicherten Prozedur? – gofr1
Es ist nicht. Ich habe versucht, das zu meinem SP hinzuzufügen, aber es machte keinen Unterschied für meine Situation. Ich habe jedoch seitdem mein Problem gelöst (siehe meine Antwort). Danke für deinen Vorschlag. –