PDA

Ver la Versión Completa : Ayuda urgente


CamiloU
02-02-2006, 14:58:35
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.

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.

jmariano
02-02-2006, 16:01:41
Por favor, no usar títulos para los hilos como el que acabas de poner, "Ayuda urgente", porque no son nada descriptivos y no servirían más tarde para realizar una búsqueda en el foro si alguien tuviera tu mismo problema. Además, va contra las normas de la Guía de estilo (http://www.clubdelphi.com/foros/guiaestilo.php).

Saludos!

CamiloU
02-02-2006, 16:43:22
Si, tienes razon. Pido disculpas pero no se me ocurrio un titulo que pudiera resumir el inconveniente que se presenta.

Osorio
02-02-2006, 16:58:20
Una sugerencia es que uses un TQuery


Con una consulta como esta:


SELECT CEDULA, SUM(VALOR)
FROM LASUPERTABLA
GROUP BY CEDULA


Saludos