creo que tu problema esta cuando asignas el valor de A
Código Delphi
[-]
A:= qry1.fieldbyname('NUM_REG').AsInteger+1;
tbl1.Insert;
tbl1.FieldByName('NUM_REG').AsInteger := A+1;
aun cuando le sumas uno el valor siempre sera el mismo, por que toma como valor el numero de registros que te arroja la consulta que esta fuera del ciclo.
lo correcto seria dejar
Código Delphi
[-]
A:= qry1.fieldbyname('NUM_REG').AsInteger+1;
antes de comenzar el ciclo y colocar
dentro del ciclo, justo antes de
Saludos...