Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Bucle for (https://www.clubdelphi.com/foros/showthread.php?t=84532)

jafera 31-10-2013 14:07:45

Bucle for
 
Buenas de nuevo a todos.

Tengo un pequeño problema de interpretacion del bucle for, el cual no acaba de funcionar como yo quiero.
Este es el bucle:

Código Delphi [-]
v1:=2;
z1:=2;
while not Inscripcio.Eof do
begin
  for v := 1 to v1 do
  begin
    F_ModulDades.Punts_Zona.Open;
    F_ModulDades.Punts_Zona.Append;
    F_ModulDades.Punts_ZonaID_CURSA.Value:=InscripcioCURSA.Value;
    F_ModulDades.Punts_ZonaDATA.Value:=F_ModulDades.CursaDATA_CURSA.Value;
    F_ModulDades.Punts_ZonaDORSAL.Value:=InscripcioDORSAL.Value;
    F_ModulDades.Punts_ZonaVOLTA.Value:=v;
    for z := 1 to z1 do
    begin
      F_ModulDades.Punts_ZonaZONA.Value:=z;
      F_ModulDades.Punts_ZonaPUNTS.Value:=0;
    end;
    F_ModulDades.Punts_Zona.Post;
  end;
  Inscripcio.Next;
end;

Lo que necesito es poder recorrer el bucle para que me arroje un resultado así:

1,1, 1/1/13, 1,1,1,0;
2,1, 1/1/13, 1,1,2,0;
3,1, 1/1/13, 1,2,1,0;
4,1, 1/1/13, 1,2,2,0;

y asi hasta recorrer toda la consulta Inscripcio, pero lo único que consigo es que me guarde solamente la ultima pasada por la variable z, es decir que obtengo lo siguiente:

1,1, 1/1/13, 1,1,2,0;
2,1, 1/1/13, 1,2,2,0;

El primer numero es un AUTOI.
El cambio devuelta lo realiza bien pero el de zona no, no se si me falta poner un next o hacer el proceso de otra forma.

Gracias por adelantado.

Uf creo que ya he superado el 400 (mensaje) crei que no llegaria a ello, jejeje
Hay premio?.
Bueno os invito yo, vale.....^\||/^\||/||-||

oscarac 31-10-2013 18:34:52

a simple viste el append lo estas haciendo fuera del segundo bucle, es por eso que solo te guarda 2 registros

jafera 31-10-2013 18:59:33

Gracias Oscarac.

Lo he solucionado asi:
Código Delphi [-]
while not Inscripcio.Eof do
        begin
                for v := 1 to v1 do
                begin
                        for z := 1 to z1 do
                        begin
                                F_ModulDades.Punts_Zona.Open;
                                F_ModulDades.Punts_Zona.Append;
                                F_ModulDades.Punts_ZonaID_CURSA.Value:=InscripcioCURSA.Value;
                                F_ModulDades.Punts_ZonaDATA.Value:=F_ModulDades.CursaDATA_CURSA.Value;
                                F_ModulDades.Punts_ZonaDORSAL.Value:=InscripcioDORSAL.Value;
                                F_ModulDades.Punts_ZonaVOLTA.Value:=v;
                                F_ModulDades.Punts_ZonaZONA.Value:=z;
                                F_ModulDades.Punts_ZonaPUNTS.Value:=0;
                        end;
                        F_ModulDades.Punts_Zona.Post;
                end;
                Inscripcio.Next;
        end;
Ahora si que el resultado es correcto

Saludos

Josep

juanlaplata 07-11-2013 17:15:33

Hola, ten cuidado con el "post" fuera del bucle. Si no se entra en el mismo te dará un error de que el Dataset no esta en modo de edicion o insercion.

jafera 18-11-2013 18:00:05

Gracias Juan.

Ya lo solucioné siguiendo tus instruciones, este es el problema de reutilizar código, luego borras un begin...end y ya está liada.
Funciona de mil maravillas.

No respondí antes ya que estuve liado como la pata de un romano.

Saludos


La franja horaria es GMT +2. Ahora son las 06:57:43.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi