Buenos Dias.
Solicito me colaboren con el siguiente problema: Tengo una tabla que maneja los campos cedula y valor, entre otros. La cedula puede estar repetida pero necesito agruparla con la suma de todos los valores pertenecientes a ella. Considero que el codigo esta bien y cuando pruebo con valores pequeños (1000 registros) funciona perfectamente. Cuando ingreso el valor total de registros (260000 registros), nunca termina. Podrian colaborarme a buscar una solucion a mi problema. Anexo el codigo que estoy utilizando. Muchas gracias.
Código Delphi
[-]
procedure TForm1.ListadoClick(Sender: TObject);
var
cont, n, i : integer;
Tot : Lista;
Valor : Parcial;
val, totalito : real;
ced, fsalario : string;
encontrado, encuentra : boolean;
begin
TCesantias2005.First;
cont := 0;
while (Not TCesantias2005.Eof) do
begin
encontrado := false;
n := 0;
while n < cont do
begin
n := n + 1;
if TCesantias2005.fields[0].Value = Tot[n] then
begin
encontrado := true;
fsalario := TCesantias2005.fields[3].Value;
if (fsalario <> '50') and (fsalario <> '90') and (fsalario <> '150')
and (fsalario <> '230') and (fsalario <> '310') and
(fsalario <> '230') then
begin
val := TCesantias2005.Fields[2].Value;
Valor[cont] := Valor[cont] + val;
end;
end;
end;
if encontrado = false then
begin
cont := cont + 1;
Tot[cont] := TCesantias2005.Fields[0].Value;
Valor[cont] := TCesantias2005.Fields[2].Value;
end;
TCesantias2005.Next;
end;
contador.Text := inttostr(cont);
n := 0;
while n < cont do
begin
n := n + 1;
ced := Tot[n];
totalito := Valor[n] / 12;
TInter.Append;
TInter.Fields[0].Value := ced;
TInter.Fields[1].Value := totalito;
TInter.Post;
end;
Lista es un arreglo de 1 a 50000 de string;
Parcial es un arreglo de 1 a 50000 de real.
No se me ocurrio otra forma para revisar si la cedula existia o no y para ir realizando la sumatoria de los valores.
Agradezco mucho cualquier colaboracion.