Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Langages serveur > ASP
ASP Forum sur la programmation ASP. Avant de poster : Cours ASP, FAQ ASP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 31/08/2007, 22h03   #1
Invité de passage
 
Inscription : août 2007
Messages : 5
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 5
Points : 1
Points : 1
Par défaut Aide Record Set + 2 requetes

Bonsoir à tous,

Heureux de faire parti de votre communauté.
Je suis un débutant dans l'ASP et j'aurais une question qui va sembler bête !

J'ai une page ASP avec 2 requetes SQL j'utilise While not RS.eof et wend pour parcourir les différents lignes de ma première requete SQL.
Cependant comment comment puis-je incrémenter une seconde requete toujours en utilisant RS.movenext pour parcourir ma 2eme requete ?

ex :

ouverture de ma 1ere base SQL
requete sur ma 1ere base
While not RS.eof

ouverture de ma 2ebase SQL
requete sur ma 2e base


Wend
RS.movenext

Le probleme la c'est qu'il ne change pas d'enregistrement sur ma 2e requete.

Merci pour votre aide.

A++
halleytp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/09/2007, 22h34   #2
Membre confirmé
 
Avatar de Cpas2latarte
 
Inscription : janvier 2006
Messages : 238
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 238
Points : 217
Points : 217
Si tu as 2 RecordSet a parcourrir, ben il te faut 2 boucle donc 2 while
sauf si tu est a 100% sure que les 2 recorset ont strictement le même nombre de résultats, dans ce cas, tu pourras une même boucle pour parcouris les 2 recordset
Code :
1
2
3
4
5
6
7
8
9
 
<%
' attetion les 2 rs on le même nombre de résultat
Do While Not rs1.EOF
' tratement
 rs1.movext, 
 rs2.movext, 
loop
%>
si tu n'as pas le même nombre de résultat, ben il te faut 2 boucles
dans certain cas, le 1er recorset permet d'obtenir des valeurs pour faire des requête avec le 2 second recordset, dans ce cas il faut 2 boucle imbriqué.

Que veux tu faire exactement
__________________
Il n'y a que 2 choses infinies dans le monde :
L'univers et la bétise humaine...
Mais pour l'univers, je n'ai pas de certitude (A.E.)
Cpas2latarte est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/09/2007, 23h21   #3
Invité de passage
 
Inscription : août 2007
Messages : 5
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 5
Points : 1
Points : 1
Salut,

Merci de ta réponse !
En effet les 2 recordset n'ont pas le même nombre d'enregistrements !
Et je récupére une variable de ma 1ere requete pour tester la valeur d'un champs de la 2e requete pour remplir un fichier CSV.



Ex de mon code :

Code asp :
1
2
3
4
5
6
set rs = Server.CreateObject("ADODB.Recordset")
set rst = Server.CreateObject("ADODB.Recordset")
1ere requete :
rstr = "SELECT * FROM toto "
RST.Open rstr,Connsql
while not rst.eof
2e requete :
Code asp :
1
2
3
4
5
rstr = "SELECT * FROM toto where =' "& variable & ""
RST.Open rstr,Connsql2
 
RS.MoveNext
Wend


Donc ma question est de savoir ou je positionne mon While not et mon movenext pour ma 2e requete !

J'espère avoir était clair

Par avance merci de vos réponses!
halleytp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/09/2007, 23h35   #4
Membre confirmé
 
Avatar de Cpas2latarte
 
Inscription : janvier 2006
Messages : 238
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 238
Points : 217
Points : 217
Citation:
je récupére une variable de ma 1ere requete pour tester la valeur d'un champs de la 2e requete
Pourquoi pas une requête avec une jointure ?

On vérra ça plus tard

quand tu dis tester la valeur d'un champs dans ta 2emme requête, est ce que tu veux dire que tu veux tester cette valeur pour toutes les lignes de ta seconde requete ?
ex imagine que ta 2emme requette renvoi un truc comme ci-dessous
ligne champ
1 valeur1
2 valeur2
3 valeur1
4 valeur4

et que la valeur testé est "valeur2", que veux tu faire ?
Parcourrir toutes les ligne pour vérifier si tu le trouve ? compter le nombre de fois que tu le trouve ? Touver la ligne ou tu le trouve (pour obtenir les autre valeurs renvoyés par la requêtes)

Que veux tu faire?
__________________
Il n'y a que 2 choses infinies dans le monde :
L'univers et la bétise humaine...
Mais pour l'univers, je n'ai pas de certitude (A.E.)
Cpas2latarte est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/09/2007, 23h42   #5
Invité de passage
 
Inscription : août 2007
Messages : 5
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 5
Points : 1
Points : 1
Je ne peux pas faire une jointure car ce sont 2 bases sur 2 serveurs SQL différents ( avec un champ en commun qui est la variable en question)

Je veux en effet tester toutes les lignes de ma seconde requêtes jusqu'à je trouve cet enregistrement à l'aide la variable récupérer de ma 1ère requete afin d'obtenir les autres valeurs renvoyés par la seconde requête et en tester une en particulier pour l'incrémenter dans un fichier d'import.

Désolé si je ne suis pas très clair et merci de tes réponses!
halleytp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/09/2007, 00h02   #6
Membre confirmé
 
Avatar de Cpas2latarte
 
Inscription : janvier 2006
Messages : 238
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 238
Points : 217
Points : 217
Citation:
Je ne peux pas faire une jointure car ce sont 2 bases sur 2 serveurs SQL différents ( avec un champ en commun qui est la variable en question)
la j'ai compris ce que tu voulais
et pour cela il te faut 2 boucle imbriqué

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
 
' sera utilisé pour la bcl principale
set rs = Server.CreateObject("ADODB.Recordset")
 
' sera utilisé pour la bcl intérieur
set rst = Server.CreateObject("ADODB.Recordset")
 
' préparation de la boucle principale
rsr = "SELECT * FROM toto "
RS.Open rstr,Connsql
' boucle principale
Do While Not rs.eof 
 
   ' préparation de la seconde requête
   rstr = "SELECT * FROM toto where =' "& variable & ""
   RST.Open rstr,Connsql2
   ' boucle intérieur
   Do While Not RST.eof
     ' ici ton test 
 
     RST.moveNext
   Loop
   ' apres la boucle intérieur, on ferme le second recordset
   ' pour l'itération suivante de la boucle principale
   RST.Close
 
   rs.moveNext
Loop
 
' ici on a plus besoin des recodset on les détruit
' RST est déja fermé
Set Rst =  nothing
 
rs.close
Set rs = nothing
Cela dit :
Citation:
sont 2 bases sur 2 serveurs SQL différents
en sqlserver, tu peux reqûéter sur un autres sql serveur (regarde la doc de sqlserver, la fonction openrowset et onpenquery)
__________________
Il n'y a que 2 choses infinies dans le monde :
L'univers et la bétise humaine...
Mais pour l'univers, je n'ai pas de certitude (A.E.)
Cpas2latarte est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/09/2007, 00h18   #7
Invité de passage
 
Inscription : août 2007
Messages : 5
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 5
Points : 1
Points : 1
Ok j'ai compris le principe !

Merci beaucoup de ton aide !

halleytp est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h01.


 
 
 
 
Partenaires

Hébergement Web