ASP... besoin de 2 recordsets...
calje
Messages postés
83
Date d'inscription
Statut
Membre
Dernière intervention
-
jroy Messages postés 27 Statut Membre -
jroy Messages postés 27 Statut Membre -
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é
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é
A voir également:
- ASP... besoin de 2 recordsets...
- Supercopier 2 - Télécharger - Gestion de fichiers
- 2 ecran pc - Guide
- Word numéro de page 1/2 - Guide
- Gta 6 trailer 2 - Guide
- Faire 2 colonnes sur word - Guide
2 réponses
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
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
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
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
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é
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é
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é
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
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