Correctif pour les pages ASP qui n'afficheront pas un jeu d'enregistrements ADO basé sur une table #Temp

Voici le problème: votre page asp est conçue pour afficher les données contenues dans une table #temp générée par SQL. Lorsque vous exécutez la page, vous obtenez une erreur indiquant que l'opération n'est pas autorisée à la fermeture de l'objet. Si vous exécutez la commande SQL dans une fenêtre de requête, les données sont affichées comme prévu.


Essayer de lancer une page ASP tirée de la table #temp, mais vous obtenez un message désagréable ressemblant à ceci:
Erreur ADODB.Recordset '800a0e78'
L'opération n'est pas autorisée lorsque l'objet est fermé.

Cela se produit car chaque instruction SQL de votre procédure stockée renvoie un résultat. Il s'agit d'un comportement intégré du fournisseur OLEDB SQL Server (le fournisseur ODBC SQL Server ne le fait pas). Le résultat peut être un ensemble de résultats, mais si votre page ASP lance l'affichage de l'ensemble de résultats, le résultat renvoyé correspond au nombre de lignes affectées.

Pour empêcher le fournisseur OLEDB SQL Server de renvoyer le nombre de lignes affectées, ajoutez la ligne suivante au début de votre procédure stockée:SET NOCOUNT ON

Une fois que vous avez modifié la procédure stockée, la page ASP en question doit afficher l'ensemble de résultats souhaité sans autre problème.

Remarque: une autre erreur nécessitant le SET NOCOUNT ON la ligne est:
Erreur ADODB.Recordset '800a0cc1'
L'élément ne peut pas être trouvé dans la collection correspondant au nom ou à l'ordinal demandé.