Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: Baldomero123 en 4 Enero 2018, 10:58 am



Título: Ciclo Do While anidado que no coge al ciclo interior
Publicado por: Baldomero123 en 4 Enero 2018, 10:58 am
Buenos días:
Tengo un ciclo exterior de inversores Rs, otro ciclo interior de plataformas Rs1(donde han invertido los inversores) y dentro del ciclo interior la suma de lo que cada inversor ha invertido en cada plataforma Rs2.
El problema es que sólo me funciona en la primera parte, es decir obtengo como salida:
inversores     Plataformas  Importes
A                    Lendix           1000
                      Lendopolis     1200
                      Groiw.ly         1400
                        .....                ...,
B
C
...

'CICLO EXTERIOR (DE LOS INVERSORES)(principio Rs)
   
    tfin = 0
    Rs.Open "SELECT * FROM inversores ORDER BY inversor", Cn, adOpenStatic, adLockPessimistic
    Rs.MoveFirst
    Do While tfin < cuantosinvx   'cuantosinv es el nro de inversores
        inversorx = Rs.Fields.Item(1)
        CurrentX = 500
        CurrentY = CurrentY + 500
        Print inversorx
       
        'CICLO INTERIOR (PLATAFORMAS principio Rs1)
        Rs1.Open "SELECT * FROM plataforma ORDER BY platform", Cn, adOpenStatic, adLockOptimistic
        Rs1.MoveFirst
        CurrentY = CurrentY - 100
       
        Do While j < cuantasplatx   'cuantasplatx es el nro de plataformas
         platformx = Rs1(1)
         CurrentX = 1300
          CurrentY = CurrentY - 100
       
          Print platformx
           Rs2.Open "SELECT SUM(importe) AS importex FROM remesas WHERE inversor = """ & inversorx & """ AND platform = """ & platformx & """ ", Cn, adOpenStatic, adLockOptimistic
          If Not IsNull(Rs2(0)) Then
            importex = Rs2(0)
            Else
             importex = 0
          End If
          CurrentX = 3000
          CurrentY = CurrentY - 100
            Print importex
       
          Rs2.Close
       
          Rs1.MoveNext 'Mover a la siguiente plataforma
             j = j + 1
                   
          Loop   'Ciclo de las plataformas Rs1
          Rs1.Close      'cerramos el Recordset de las plataformas 
          Rs.MoveNext 'Mover al siguiente inversor
          tfin = tfin + 1
     Loop  'Ciclo EXTERIOR (de los inversores Rs)
     tfin = 0
     Rs.Close

Mi pregunta es: ¿por qué funciona bien con el primer inversor cogiendo el ciclo de las plataformas y con los demás inversores pasa de largo sin coger el ciclo interior?
Muchas gracias.


Título: Re: Ciclo Do While anidado que no coge al ciclo interior
Publicado por: Baldomero123 en 4 Enero 2018, 14:19 pm
Solucionado. Entre las líneas 13 y 14 faltaba j = 0 para inicializar el contador del ciclo interior.