Téléchargement
illégal
Posez votre question Signaler

ASP... besoin de 2 recordsets...

calje 83Messages postés 21 février 2001Date d'inscription - Dernière réponse le 5 oct. 2001 à 17:39
Bonjour,

J'ai lu que l'on ne pouvait pas ouvrir plus d'un recordset à la fois...

et bien sur... mon problème est celui-la... j'ai besoin d'avoir deux recordset.

La solution que j'ai trouvé, mais qui ne me plaît guère est de mettre le résultat du premier recordset dans un tableau et de le parcourir pour pouvoir utiliser mon deuxième recordset... vous suivez toujours ? ;o)

Bref, quelqu'un aurait-il une méthode plus simple ou plus efficace que celle-ci ou suis-je un génie de la prog ;o)))

Mon sujet est le suivant :

J'ai trois tables.

1- La première contient le nom et des infos diverses d'un établissement.

2- la deuxième contient la ou les adresses de cet établissement.

3- la troisième contient les coordonnées de cet établissement. (tél, fax, courriel, etc...)

Mon problème est que lorsque je veux imprimer une liste de tous les établissements, je ne veux pas qu'il m'affiche autant de fois qu'il y a de lignes dans les tables 2 et 3 le nom et les infos de la table 1.

Je comptais faire un premier SQL SELECT sur la table 1 et 2, puis pour chaque ligne trouvée, je comptais faire un SQL SELECT sur la table 3.

Mais voilà... cela implique 2 recordset imbriqués...

J'apprécierais vos petits trucs...

MERCI

José
Lire la suite 

ASP... besoin de 2 recordsets »

6 réponses
Réponse
+0
moins plus
j'ai du mal à schématiser ton besoin, mais si j'ai bien compris, je ferais ainsi :

1. une première requète récupère les id des établissements que tu veux afficher :
SELECT id FROM Table1;

2. tu lis ton recordset et copies cette liste dans un tableau
regarde s'il n'y a pas un fonction getRows :
idList = recordSet.GetRows(recordSet.RecordCount)

Pour chaque id de ta liste :

3. tu fais une requète pour récupérer les info de la table 1
SELECT * FROM Table1 WHERE etab_id = idList(index)

3'. tu affiches ces info

4. tu fais une requète pour récupérer les info des tables 2 et 3
SELECT * FROM Table2 WHERE etab_id = idList(index)
UNION
SELECT * FROM Table3 WHERE etab_id = idList(index)

4'. tu affiches ces info

ainsi de suite, jusqu'à la fin de ta liste.

Ai-je répondu à ta question ?

Yoann
calje- 3 oct. 2001 à 20:52
Merci, c'est la solution que j'avais envisagé.

J'ai réfléchi à ce problème et je me suis dit que cela serait peut-être mieux de faire une table qui recevrait le résultat de mes requêtes avec un ordre d'apparition.

Je me dis que cela serait plus performant car lorsque une requête est faite au serveur pour afficher ma page ASP, il n'y aurait que cette requête SQL au lieu de mes n requêtes SQL.

Le problème est lié aussi à la BD. Access ne gère pas les "View". J'aurais pu régler ca avec Sql Server.

Merci d'avoir pris la peine de répondre.

José
jroy- 5 oct. 2001 à 17:38
l'utilisation de la fonction getrows te permettra d'améliorer les performances d'accès aux données de ton site.

monTab = monRecorset.getrows

avec cette ligne de code tu transfert ton recordset dans un tableau et ainsi tu peux fermer ta connexion à la base de données. ensuite il ne te reste plus qu'à parcourir ton tableau avec une boucle for
jroycalje - 5 oct. 2001 à 17:39
l utilisation de la fonction getrows te permettra d améliorer les performances d accès aux données de ton site.

monTab = monRecorset.getrows

avec cette ligne de code tu transfert ton recordset dans un tableau et ainsi tu peux fermer ta connexion à la base de données. ensuite il ne te reste plus qu'à parcourir ton tableau avec une boucle for
Ajouter un commentaire
Réponse
+0
moins plus
comment ca pas deux recordset?
bien sur que si?
je comrends pas la...

dim rs1 as recordset
dim rs2 as recordset
dim cc as connection

set rs1 = new recordset
set rs2 = new recordset
set cc = new connection

cc.connectionstring="..."
cc.open

rs1.open "select * from table1", cc
rs2.open "select * from table2", cc

...

rs1.close
rs2.close
cc.close

set rs1 = nothing
set rs2 = nothing
set cc = nothing
calje- 4 oct. 2001 à 17:29
Bonjour,

Il est vrai que cela marche avec 2 recordsets utilisés indépendament...

Mais, sauf erreur de manipulation de ma part, cela ne marche pas avec 2 recordsets IMBRIQUES...

Le deuxième étant lié au premier pour la clause WHERE de la requête no 2.

En gros, je voulais avoir un premier RS1 qui me donne un ID qui va me servir pour faire une sélection sur le deuxième RS2.

Mais j'ai un beau message d'erreur qui me dit que je ne peux pas le faire sur un objet déjà ouvert... (bien sur, les deux rs ont deux noms différents).

Si je prends mon RS2 et que je le sors de la boucle... ca marche... mais cela ne répond pas à mon besoin.

Voilà pour la petite histoire...

José
Ajouter un commentaire
Ce document intitulé « ASP... besoin de 2 recordsets... » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?