PDA

Ver la Versión Completa : Rellenar un campo con un recorrido secuencial de la tabla


jafera
15-07-2017, 16:24:28
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:

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, 16:47:50
Quita el first.
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, 16:54:34
Muchas gracias Antonio, siempre atentos.
Ha ido de fábula, sois unos cracks.

Saludos