J'essaie d'ouvrir un jeu d'enregistrements de sorte que je puisse obtenir une valeur précise pour RecordCount
. J'ai un code qui fonctionne avec succès en utilisant Recordset.Open
avec les constantes adOpenStatic
et adLockReadOnly
. Cependant, lorsque j'utilise le code suivant.Impossible de modifier la propriété ActiveConnection d'un objet Recordset
With cmd
.ActiveConnection = db
.CommandType = adCmdStoredProc
.CommandText = "doGetBookingCrewDetails"
.Parameters.Append .CreateParameter("@bookingid", adInteger, adParamInput)
.Parameters("@bookingid") = 42943
.Parameters.Append .CreateParameter("@starttime", adDBTimeStamp, adParamInput)
.Parameters("@starttime") = "07/10/2016 00:00"
End With
Set rsCr = Server.CreateObject("ADODB.Recordset")
rsCr.Open cmd, db, adOpenStatic, adLockReadOnly
Je reçois l'erreur
0x800a0e7b - ADODB.Recordset: Impossible de changer la propriété ActiveConnection d'un objet Recordset qui a un objet de commande comme source.
Le code ci-dessus renvoie le bon jeu de résultats lors de l'utilisation Command.Execute
, mais je ne peux pas préciser les constantes qui semblent rendre le nombre de lignes de travail de la propriété.
Comment est-ce que je fais ce travail?
Cette page: https://msdn.microsoft.com/en-us/library/ms675544(v=vs.85).aspx dit ceci: _La propriété ActiveConnection est en lecture seule pour les objets Recordset dont la propriété Source est définie sur un objet Command valide, même si l'objet Recordset n'est pas ouvert._ Il indique également que le paramètre 'activeconnection' est facultatif. Bref, essayez _not_ de passer 'db' dans' rsCr.open'. –
Oui, votre suggestion fonctionne. Je pensais que j'avais essayé ça en fait, devinez non! –
Le lien indique également: «Si vous transmettez un objet Command dans l'argument Source et que vous transmettez également un argument ActiveConnection, une erreur se produit: la propriété ActiveConnection de l'objet Command doit déjà être définie sur un objet Connection ou une chaîne de connexion valide. –