Problème de gestion des signets après execution d'une procédure stockée

Résolu
bl0nd1 Messages postés 2 Date d'inscription samedi 9 décembre 2000 Statut Membre Dernière intervention 24 avril 2008 - 24 avril 2008 à 13:08
bl0nd1 Messages postés 2 Date d'inscription samedi 9 décembre 2000 Statut Membre Dernière intervention 24 avril 2008 - 24 avril 2008 à 15:21
Tout d'abord bonjour à tous,

je rencontre un problème assez génant lors de la lecture de mes resultats (à l'aide d'une page ASP) provenant d'un procédure stockée, voici mon problème en détail :

J'appel une procédure qui me renvoie une table de résultats comme indiqué ci-dessous :

CREATE PROCEDURE [dbo].[p_ma_procedure]
        --mes parametres
AS
BEGIN
   
    -- Utilisation de table temporaire
    CREATE TABLE #tmp (
           -- bla bla
     )
   
    -- Requete de selection de mes données
    DECLARE @req varchar(8000)

     -- Execute une requete et l'insert en base temporaire
     INSERT INTO #tmp
     EXEC(@req)
   
    -- Je retourne les resultats contenus ds ma table temp.
     SELECT * FROM  #tmp

    -- Supprime ma table
    DROP TABLE #tmp

GO

Au final je souhaite utiliser ma procedure avec gestion de signets (gestion de pages de resultats) dans ma page asp afin de gérer les pages de résultats comme suit :

<%
Set rs         = server.createobject("ADODB.Recordset")
'Activation des signets  (3 resultats souhaités par page)
rs.PageSize = 3
rs.open "EXEC dbo.p_ma_procedure 'mesparametres'",ma_connexion, 1
%>
<%
'AFFICHAGE DES RESULTATS
while not rs.eof
    'Affichage de la première page
    rs.AbsolutePage = 1
%>
    <%= rs(0) %>
<%
    rs.movenext
WEnd
%>

Malheureusement avec une requete classique (sans procedure) cela fonctionne bien mais dans ce cas j'obtiens l'erreur asp suivante:
ADODB.Recordseterror '800a0cb3'

Le jeu d'enregistrements en cours ne prend pas en
charge les signets. Il s'agit peut-être d'une limitation du fournisseur ou du
type de curseur sélectionné.

Je précise que je dois absolument passé par ma procédure stockée, je ne peux donc pas utiliser une fonction retournant une table car je travail avec des tables temporaires.
J'ai egalement tester la lecture avec un objet ADODB.command et le résultat est le même !
 
Ma question est finalement toute simple: "Comment utiliser des signets sur les résultats d'une procédure stockée ?"
Je n'ai peut être pas connaissance d'un paramètre à spécifier en SQL ou en ASP... ou ceci est peut etre impossible mais j'en doute.
je compte donc sur une réponse experte pour m'éclairer !
Merci d'avance pour votre aide ;)

1 réponse

bl0nd1 Messages postés 2 Date d'inscription samedi 9 décembre 2000 Statut Membre Dernière intervention 24 avril 2008
24 avril 2008 à 15:21
bon, aprés des heures de recherche intensive et de prise de tete j'ai enfin trouvé la solution qui etait finalement toute bête comme l'indique le message d'erreur ASP !

LA SOLUTION
Rajouter simplement le parametre avant rs.open :
rs.CursorLocation = adUseClient

Et voilà une belle auto-réponse ;)
3
Rejoignez-nous