Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Rellenar un campo con un recorrido secuencial de la tabla (https://www.clubdelphi.com/foros/showthread.php?t=92068)

jafera 15-07-2017 17:24:28

Rellenar un campo con un recorrido secuencial de la tabla
 
Buenas tardes a todos.

Hace un tiempo que no ponia ninguna consulta pues he dejado un poco abandonados los proyectos que tenia al funcionar correctamente para mis necesidades, aunque no he dejado de visitar el Club casi a diario.

Mi problema actual radica en que me ha surgido la necesidad de incluir un campo autoincrementable en una tabla existente, con lo que he modificado la tabla, le he insertado el campo AUTOI del tipo integer Not Null y el valor es 0 actualmente.
Ahora quiero recorrer el dataset y empezando por el registro 1 hasta el último que le ponga a AUTOI el valor 1, 2, 3, ......, n

He creado un botón para realizar el proceso y le he puesto este código:

Código Delphi [-]
procedure TF_Material.Button7Click(Sender: TObject);
VAR i,a:INTEGER;
begin
        F_ModulDades.Material.Last;
        F_ModulDades.Material.First;
        F_ModulDades.Material.RecordCount;
        a:=F_ModulDades.Material.RecordCount;
        Label58.Caption:= inttostr(a);
        for i:= 1 to a do
        begin
          F_ModulDades.Material.First;
          F_ModulDades.Material.Edit;
          F_ModulDades.MaterialAUTOI.Value:= i;
          F_ModulDades.Material.Post;
          F_ModulDades.Material.Next;
        end;
end;

Pero el resultado obtenido es en el registro 1 el valor 1327, que es el último valor y los demás a 0.
Supongo que el método de recorrido no debe ser el correcto y algo me falta.
Si alguien me puede echar un cablecito, pues muchísimas gracias por adelantado.

Nota: Este proceso sólo se realizará una vez, luego ya tengo puesto que en el alta de un n uevo artículo lo añada automáticamente.

Saludos

Josep

Casimiro Notevi 15-07-2017 17:47:50

Quita el first.
Código Delphi [-]
procedure TF_Material.Button7Click(Sender: TObject); 
  VAR i,a:INTEGER; 
begin
  F_ModulDades.Material.Last;         
  F_ModulDades.Material.First;         
  F_ModulDades.Material.RecordCount;         
  a:=F_ModulDades.Material.RecordCount;        
  Label58.Caption:= inttostr(a);         
  for i:= 1 to a do         
  begin           
    // F_ModulDades.Material.First;           
    F_ModulDades.Material.Edit;           
    F_ModulDades.MaterialAUTOI.Value:= i;           
    F_ModulDades.Material.Post;           
    F_ModulDades.Material.Next;        
  end; 
end;

jafera 15-07-2017 17:54:34

Muchas gracias Antonio, siempre atentos.
Ha ido de fábula, sois unos cracks.

Saludos


La franja horaria es GMT +2. Ahora son las 19:31:25.

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