Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-05-2012
IVAND IVAND is offline
Miembro
 
Registrado: may 2003
Ubicación: ECUADOR
Posts: 523
Poder: 21
IVAND Va por buen camino
Recorrer una Dataset hacia atras

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
//Recorremos de atras para adelante el bucle

rx.Last;

//for i := 0 to Rx.RecordCount - 1 do
  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
       //Enceramos cuando llegamos al principio
      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;
__________________
IVAND
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Copiar el contenido de un DataSet a otro DataSet Javi2 Varios 82 22-11-2022 09:26:16
Delphi XE: Al comprar usa legalmente versiones hacia atras hasta D7 mamcx Noticias 6 10-09-2010 01:58:17
cronometro hacia atras kurono Varios 3 22-12-2008 18:05:47
Recorrer fichero txt y almacenarlo en un DataSet mamen .NET 2 24-04-2006 19:27:33
for contando hacia atras Duc OOP 7 20-07-2005 10:23:13


La franja horaria es GMT +2. Ahora son las 11:21:10.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi