Buenas, primero que nada, lo que planteas es un poco confuso , sobre todo llamando a los campos como a,b,c,d (al menos para mi, quiza sea un poco corto
) y creo que podrias aportarnos algun dato mas (no llego a entender que es exactamente lo que quieres hacer, hablando en terminos practicos)
Pasando al problema en si, lo ideal seria que la tabla esté de antemano ordenada para recorrerla como lo precisas
Código:
CAMPO_A | CAMPO_B | etc...
---------------------------
1 1
1 1
1 2
2 1
2 4
3 2
3 1
3 1
entonces te quedaria algo masomenos asi (si entendi correctamente el problema)
Código Delphi
[-]
Tu_Tabla.Open;
campo_a:= Tu_Tabla.FieldByName('Campo_A').Value;
campo_b:= Tu_Tabla.FieldByName('Campo_B').Value;
while not(Tu_Tabla.EoF) do
begin
total:= 0;
while not(Tu_Tabla.EoF) and (campo_a = Tu_Tabla.FieldByName('Campo_A').Value) and
(campo_B = Tu_Tabla.FieldByName('Campo_B').Value) do
begin
if (condicion_para_sumar) then
total:= total + Tu_Tabla.FieldByName('Cantidad').Value
else
total:= total - Tu_Tabla.FieldByName('Cantidad').Value;
Tu_Tabla.Next;
campo_a:= Tu_Tabla.FieldByName('Campo_A').Value;
campo_b:= Tu_Tabla.FieldByName('Campo_B').Value;
end;
with La_Otra_Tabla do
begin
Edit;
FieldByName('total').Value:= total;
Post;
end;
end;
Si el proceso lo tenes que realizar para todos los productos, entonces yo optaria por hacer un query:
Código SQL
[-]SELECT * FROM Tu_Tabla WHERE A = :CodProducto
Luego recorres ese dataset para totalizar, y vuelves a lanzar el mismo query pero con otro codigo de producto, me explico?
Que es exactamente lo que precisas, saber cuanto de cada producto hay en cada almacen?
Un saludo!