[ASP] comment savoir que je suis au dernier élement d'un rs ?

comment savoir que je suis au dernier élement d'un rs ? [ASP] - Programmation

Marsh Posté le 02-08-2001 à 16:10:43    

je parcours un rs de la façon suivante :  
 
While (NOT rs.EOF)
' là j'écrit un truc
response.write(rs.Fields.Item("maValeur" ).Value&"," )
rs.MoveNext()
Wend
 
enfin le truc classique quoi, sauf que je ne veux pas écrire de "," qd je suis au dernier enregistrement, comment faire ?

Reply

Marsh Posté le 02-08-2001 à 16:10:43   

Reply

Marsh Posté le 02-08-2001 à 16:31:00    

et comment tu sais que tu es au premier :D
 
y'a un tableau, un truc comme ça?

Reply

Marsh Posté le 02-08-2001 à 16:37:57    

generalement ce que je vais (en delphi mais ca doit etre pareil en ASP), c'est (et la j'essaye de traduire du  Delphi en VB ;) ):

Code :
  1. ---------------------------------------------------------
  2. Dim sResponse as String
  3. sResponse = ""
  4. While (NOT rs.EOF)
  5.   ' là j'écrit un truc
  6.   sResponse = sResponse + rs.Fields.Item("maValeur" ).Value + ", "
  7.   rs.MoveNext()
  8. Wend
  9. ' si y'a qqchose dans ma reponse, je vire les 2 derniers caracteres (puisqu'ils seront egaux a ", " )
  10. if sResponse <> "" then
  11.   sResponse = Left(sResponse, length(sResponse) - 2 )
  12. ' je renvoie le resultat
  13. response.write(sResponse)
  14. ---------------------------------------------------------


ps: je connais pas ASP donc j'espere que tu t'y retrouveras

 

[edtdd]--Message édité par JWhy--[/edtdd]


---------------
www.alliancefrancophone.org ... Home is where the heart is
Reply

Marsh Posté le 02-08-2001 à 16:41:22    

j'avais pensé à ça aussi, mais j'avais pas envie de passer par une chaine tampon, qui risuqe d'être très longue

Reply

Marsh Posté le 02-08-2001 à 16:43:59    

bah sinon tu fais un index que tu incrementes et que tu testes si c'est egale a 1 :
 
iIndex = 0
While (NOT rs.EOF)  
  iIndex = iIndex + 1
 
  if iIndex = 1 then
    response.write(rs.Fields.Item("maValeur" ).Value)  
  else
    response.write(", " & rs.Fields.Item("maValeur" ).Value)  
  rs.MoveNext()  
Wend  
 
mais ca te rajoute un increment + un test  dans  ta boucle ...


---------------
www.alliancefrancophone.org ... Home is where the heart is
Reply

Marsh Posté le 02-08-2001 à 16:46:50    

tu peux faire un truc dans ce genre :
 
if not rs.EOF then
 response.write(rs.Fields.Item("maValeur" ).Value)  
 rs.MoveNext()
 While (NOT rs.EOF)  
  response.write(","&rs.Fields.Item("maValeur" ).Value)  
  rs.MoveNext()  
 Wend
end if
 
ça évite de faire de test en plus dans la boucle ...

 

[edtdd]--Message édité par mikvix--[/edtdd]

Reply

Marsh Posté le 02-08-2001 à 16:48:30    

ah oui, c'est bien ca...  
 
par contre t'as merdé dans l'ajout des ", " mais c'est bien quand meme ! pas de de test pas d'index... j'achete ;)


---------------
www.alliancefrancophone.org ... Home is where the heart is
Reply

Marsh Posté le 02-08-2001 à 16:49:35    

ouaip !!
en fait je viens d'éditer mon message 3 fois de suite, tellement c'était plein d'erreur :)

Reply

Marsh Posté le 02-08-2001 à 16:57:54    

mikvix a écrit a écrit :

tu peux faire un truc dans ce genre :
 
if not rs.EOF then
 response.write(rs.Fields.Item("maValeur" ).Value)  
 rs.MoveNext()
 While (NOT rs.EOF)  
  response.write(","&rs.Fields.Item("maValeur" ).Value)  
  rs.MoveNext()  
 Wend
end if
 
ça évite de faire de test en plus dans la boucle ...  
 
 




 
euh là j'comprends pas, si je li bien tu écris maValeur dans tous les cas...
 
ah non j'avais pas vu que le if se fermait tout à la fin, oui c'est bien comme truc :D

 

[edtdd]--Message édité par duch--[/edtdd]

Reply

Marsh Posté le 02-08-2001 à 17:14:21    

arf !  :p

Reply

Marsh Posté le 02-08-2001 à 17:14:21   

Reply

Marsh Posté le 02-08-2001 à 21:38:29    

pour le premier element... c rs.BOF.. c comme EOF mais pour le premier element...
 
C comme si c t un element indicé -1, en considerant que le premier element de ton rs est indicé 0.... enfin, tu vois koi :D
 
Pi en asp, ya movefirst() je crois ou un truc comme ca... ki te positionne sur le premier element s'il y en a un...
 
Mais pour ton pb d'ecrire une chaine de caractere suivi d'un caractere special... ben... 2 choix corrects:
Soit tu traite le premier element a part.. pi le reste dans une boucle.
Soit tu fais ton truc normalement... pi tu tronque le dernier caractere... c a toi de voir...
Mais la premiere solution est mieux a mon gout. :D
 
P.S: Pour tester sil y a un element dans le rs tu fais  
If rs.BOF AND rs.EOF Then pas d'element...

 

[edtdd]--Message édité par wouatouwouatou--[/edtdd]

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed