Ver Mensaje Individual
  #2  
Antiguo 13-10-2014
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Reputación: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
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
    // inicializas la variable totalizadora
    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
        // realizas tu proceso de ver si tenes que sumar/restar, 
        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;

    // salir de este while significa que, o bien cambio el articulo
    // o bien que cambio de almacen, por lo tanto deberias guardar en la otra tabla el total?

    // guardas en la otra tabla el total
    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!

Última edición por AgustinOrtu fecha: 13-10-2014 a las 07:03:47. Razón: me equivoque en una cosa del codigo :D
Responder Con Cita