Hola a todos
Estoy tratando de hacer algo q un cliente me pidio con un tema contable , les explico , tengo uno balance que obviamente tiene
codigo , nombre , debe ,haber y proviene este de un plan de cuentas , hasta aqui todo esta bien hay un SP que se encarga de sacar algo como esto
Código Delphi
[-]
codigo nombre debe haber saldo
1 Activo 0 0 0
1.1 Activo corr 0 0 0
1.1.1 Caja 0 0 0
1.1.1.01 Caja General 120 30 90
2. Pasivo 0 0 0
2.1. Pasivo corriente 0 0 0
2.1.1 Lo que sea 80 120 - 40
Pues bien , la idea es barrer desde abajo hasta arriba la tabla o el datased , y usar un bucle para recorrer todo el dato completo
La idea se resume a
con dataset.last me pongo en el ultimo registro , pero que ciclo uso para que el registro vaya desde abajo hasta arriba , la idea es ir acumulando los valores ejemplo la 2.1.1 acumulara 2.1 y esta en la 2 , seguira con la 1.1.1.01 que acumula a la 1.1.1 y esta 1.1 y esta 1
adjunto el proyecto a ver si me pueden dar la mano un abrazo
Pues no me deja adjuntar archivo
colocare parte del codigo
Código Delphi
[-]
procedure TForm1.Button1Click(Sender: TObject);
var
x,I, nume: Integer;
J: string;
Saldo: Real;
begin
rx.Last;
while rx.Eof do
begin
nume := Length(Trim(rx.fieldByname('codigo').value));
saldo := Saldo + Rx.FieldByName('Saldo').Value;
for X := Nume - 1 downto 1 do
begin
if x = 0 then
Saldo := 0;
J := Copy(Trim(rx.fieldByname('codigo').value), 1, X);
if rx.Locate('codigo', j, []) then
begin
saldo := Saldo + Rx.FieldByName('Saldo').Value;
Rx.Edit;
Rx.FieldByName('Saldo').Value := saldo;
rx.Post;
end;
end;
next;
end
end;