Visual Basic - Ciclos Do While anidados

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil
Val: 179
Ha aumentado 1 puesto en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Ciclos Do While anidados

Publicado por Alberto (92 intervenciones) el 04/01/2018 10:48:04
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
...

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
36
37
38
39
40
41
42
43
44
'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.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 179
Ha aumentado 1 puesto en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Ciclos Do While anidados

Publicado por Alberto (92 intervenciones) el 04/01/2018 14:07:05
Solucionado. Entre la línea 13 y la 14 faltaba j = 0.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar