Te voy a poner un ejemplo de lo que tengo y de lo que quiero:
Lo que tengo hecho:
Código Delphi
[-]
Query.sql.clear;
Query.sql.add('select count(*) as num,numero,fecha_actual from tPDA where fecha_actual is not null group by numero,fecha_actual');
Query.open;
y:=0;
SetLength(MPDA,Query.fieldbyname('num').asinteger);
while Query.eof=false do
begin
y:=y+1;
MPDA[y].numero:=Query.fieldbyname('numero').asInteger;
MPDA[y].fecha:=Query.fieldbyname('fecha_actual').AsDateTime;
query.Next;
end;
Y lo que quiero es meter el SetLength dentro del while he ir dandole valores, de la siguiente forma:
Código Delphi
[-]
Query.sql.clear;
Query.sql.add('select count(*) as num,numero,fecha_actual from tPDA where fecha_actual is not null group by numero,fecha_actual');
Query.open;
y:=0;
while Query.eof=false do
begin
y:=y+1;
SetLength(MPDA,y);
MPDA[y].numero:=Query.fieldbyname('numero').asInteger;
MPDA[y].fecha:=Query.fieldbyname('fecha_actual').AsDateTime;
query.Next;
end;
Pretendo ir ampliando el array ha medida que voy insertando através de la variable y, pero que me ocurre que sólo me matiene el valor correcto del último registro insertado, el resto me pasa los valores a 0.
¿A qué se debe esto? y como puedo solucionarlo?
Gracias por todo a todos.