Recordset : MoveNext ou pas?

nas - 27 sept. 2001 à 11:53
 kim - 28 sept. 2001 à 11:34
Salut a tous,

Voila mon problerme! En fait c'est pas reellement un probleme mais je cherche plutot une idée...

Dans une page asp je recupere differentes donnees provenant d'une base SQLServer (sur plusieurs tables!) et pour cela j'utilise plusieurs recordsets imbriqués:
je m'explique, par exemple j'utilise un second recordset pour me faire afficher des donnees dependantes des resultats du premier recordset! (je sais pas si je suis clair!!!)

Rellement ce que je voudrais c'est faire avancer mon premier recordset par le biais de boutons 'suivant' et 'precedent' ou plus clairement je voudrais afficher chaque enregistrement de mon premier recordset sur des pages differentes.

Est-ce que je dois utiliser une fonction pour cela?
J'ai essayé une petite fonction dans laquelle je mets un rec.MoveNext du premier recordset mais ça marche pas!

ex:
Recordset 4 depend de Recordset 3
Recordset 3 depend de Recordset 2
Recordset 2 depend de Recordset 1

Et je veux faire avancer Recordset 1, pour que tout s'enchaine derriere!

Est-ce que c'est possible?
Ou sinon quelle methode puis-je utiliser?

Merci a tous!

3 réponses

Slt,

Je n'ai pas très bien compris ton pb.
Ok pour les RS imbriquées.
Ne peux tu utiliser INNER JOIN dans ta requête SQL afin de tout récupérer d'un coup?tu augmenteras comme ça la vitesse de chargement de ta page.
Mais si tu fais un traitement sur le résultat du 1er RS, tu seras obligé effectivement de créer un 2nd RS.
Et dans ce cas là, où est le pb dans ta boucle ?
Peux tu en dire plus?

KIM
0
Merci d'abord KIM de m'avoir repondu...

Je savais bien que je m'etais mal exprimé!

Voila, en fait mon premier recordset fait appel a une procedure stockée dans une base SQLServer : cette procedure me renvoie deja plusieurs données (avec une jointure sur plusieurs tables), seulement j'ai d'autres données a faire afficher dependantes du resultat de ma requete...c'est pour cela que je fais appel a d'autres recordsets

Quand je veux faire avancer mon 1er recordset avec un MoveNext ça ne marche pas!

Si tu veux et si tu as le temps je peux t'envoyer par mail un copie!
Merci
0
Slt,

Tout d'abord, il est nécessaire de définir ce qu'est un curseur. Le mot anglais "cursor" vient de "CURrent Set Of Rows". Il représente une structure de données qui contient un ensemble d'enregistrements provenant d'un jeu de résultats d'une requête. On peut voir un curseur comme étant un pointeur vers une ligne spécifique de ce jeu de résultats.
Le type du curseur définit la fonctionnalité offerte par le curseur: certains curseurs permettent la navigation en avant et en arrière dans le jeu de résultats, certains curseurs supportent les opérations de mise à jour, d'autres permettent de voir les modifications effectuées dans le jeu de résultats par d'autres utilisateurs…
Le type d'un curseur va déterminer comment les données d'un recordset sont synchronisées avec la base de données. Il existe quatre types de curseurs que nous allons détailler ci dessous. Le type de curseur doit être renseigné dans la propriété CursorType d'un objet Recordset avant son ouverture.
Les différents types de curseur :
adOpenForwardOnly (= 0) En avant seulement (Forward only) par défaut
adOpenStatic (= 3) Statique (Static)
AdOpenKeyset (= 1) Basé sur un jeu de clés (Keyset)
adOpenDynamic (= 2) Dynamique (Dynamic)

Si on utilise un type de curseur autre que le curseur par défaut (qui est le firehose cursor), par exemple en exécutant la méthode Open sur l'objet Recordset, la connexion est rendue disponible dès que les premières données ont été rapatriées, et il n'y a pas de nouvelles connexion ouverte.

Ton problème vient donc de la déclarationd de ton RS
Voici la syntaxe générale avec les options :

Recorset.Open Source, ActiveConnection, CursorType, LockType, Options

Source => Spécifie la source des données : requête SQL, nom de table, objet Command, nom de procédure stockée, chemin URL ou bien vers un fichier.
ActiveConnection => Objet Connection à utiliser pour rechercher les données définies dans la source
CursorType => Type du curseur: adOpenForwardOnly, adOpenStatic, adOpenStatic, adOpenDynamic,
LockType => Type du verrouillage: adLockReadOnly, adLockPessimistic, adLockOptimistic, adLockBatchOptimistic
Options Type de la commande: adCmdTable, adCmdText, adCmdStoredProc, adCmdUnknown…ou type d’exécution : adAsyncExecute, adExecuteNoRecords...

Je pensais qu'un p'tit rappel ferait du bien à tout le monde, moi compris.
Toutes ces info sont dispo sur le site de microsoft, ce n'est pas moi qui les ai inventées!

KIM
0
Rejoignez-nous