[ASP] retour à la ligne forcé

retour à la ligne forcé [ASP] - ASP - Programmation

Marsh Posté le 25-07-2006 à 14:47:50    

Bonjour,
 
j'ai une chaine :
7809,7814,7827,7886,7900,7902,7920,7924,7934,7944,7946,7950,7952,7945,7949,7951
 
je voudrais faire un retour à la ligne toutes les 5 virgules :
 
7809,7814,7827,7886,7900
7902,7920,7924,7934,7944
7946,7950,7952,7945,7949
7951
 
j'ai fait cette fonction :
 

Code :
  1. var="7809,7814,7827,7886,7900,7902,7920,7924,7934,7944,7946,7950,7952,7945,7949,7951"
  2. function retour(x)
  3. for z=1 to len(x)
  4.  if mid(x,z,1)="," then
  5.  virgule=virgule+1
  6.   if virgule mod 5=0 then
  7.   response.write "brake position : " & z & "<br>"
  8.   end if
  9.  end if
  10. next
  11. response.write position
  12. end function
  13. retour(var)


 
Je retrouve bien les position où je dois inserer un retour à la ligne, parcontre je n'arrive pas à remplacer cette virgule par un "<br>", car la fonction replace si on spécifie l'endroit de depart ne retourne pas le champ en entier :(
 
Si qqu'un à une idée merci :D

Reply

Marsh Posté le 25-07-2006 à 14:47:50   

Reply

Marsh Posté le 25-07-2006 à 15:04:57    

Essayer :

var="7809,7814,7827,7886,7900,7902,7920,7924,7934,7944,7946,7950,7952,7945,7949,7951"
function retour(x)
    y = ""
    virgule=0
    for z=1 to len(x)
        if mid(x,z,1)="," then
            virgule=virgule+1
            if virgule mod 5=0 then
               response.write "brake position : " & z & "<br>"
               y = y & "<br>"
            else
               y = y & mid(x,z,1)  
            end if
        end if
    next z
    response.write position
    x = y
end function
 
retour(var)

Reply

Marsh Posté le 25-07-2006 à 15:10:03    

Erreur de compilation Microsoft VBScript (0x800A0401)
Fin d'instruction attendue
test.asp, line 42, column 5
 
j'ai viré le "next z" en "next"
 
marche po :)
 
l'idée est bonne je reessaye


Message édité par mrmask le 25-07-2006 à 15:12:34
Reply

Marsh Posté le 25-07-2006 à 15:24:23    

<%
var="7809,7814,7827,7886,7900,7902,7920,7924,7934,7944,7946,7950,7952,7945,7949,7951"  
function retour(x)  
    dim y
 y = ""  
    virgule=0  
    for z=1 to len(x)  
       
     if mid(x,z,1)="," then  
   
            virgule=virgule+1  
       
    if virgule mod 5=0 then  
       'response.write "brake position : " & z & "<br>"  
     y = y & ",<br>"  
     else
      y = y & mid(x,z,1)  
    end if  
     
   else  
            y = y & mid(x,z,1)  
        end if  
   
    next  
 
 response.write y  
end function  
 
retour(var)  
 
%>
 
 
j'ai rajouté un second else et deplacé un autre :)
bref ca marche
Merci

Reply

Marsh Posté le 25-07-2006 à 15:27:05    

Plus simple, et certainement plus efficace :
 

Code :
  1. Option Explicit
  2. Dim tabVal, cpt, max
  3. tabVal = Split("7809,7814,7827,7886,7900,7902,7920,7924,7934,7944,7946,7950,7952,7945,7949,7951", "," )
  4. cpt = 1
  5. max = UBound(tabVal)
  6. Do While cpt < max
  7. Response.Write tabVal(cpt)
  8. If cpt Mod 5 = 0 Then
  9.  Response.Write "<br/>"
  10. Else
  11.  Response.Write  ","
  12. End If
  13. cpt = cpt + 1
  14. Loop
  15. Response.Write tabVal(cpt)

Reply

Marsh Posté le 25-07-2006 à 15:44:27    

cpt = 1
faut le mettre à 0 sinon on perd le 1er enregistrement :D
 
du coup on a retour à la ligne des le debut faut enfait tester uniquement appartir de 1
 
7809
7814,7827,7886,7900,7902
7920,7924,7934,7944,7946
7950,7952,7945,7949,7951

Reply

Marsh Posté le 25-07-2006 à 16:45:30    

ah ouais c'est possible ça :D

Reply

Marsh Posté le 25-07-2006 à 16:46:14    

utilise tabVal(cpt - 1) à la place

Reply

Marsh Posté le 03-08-2006 à 10:34:40    

Bonjour,
 
Ajoute une autre condition >> If cpt Mod 5 = 0  and cpt > 0 then, ça devrait régler ce petit pb!  
 
A bientôt.
 
Sylvain.

Reply

Sujets relatifs:

Leave a Replay

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