Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-09-2003
danytorres danytorres is offline
Miembro
 
Registrado: may 2003
Ubicación: Venezuela. Edo Carabobo
Posts: 361
Poder: 22
danytorres Va por buen camino
Question Problemas con un acumulador?

Hola a todos los del foro. Tengo un query que me da un total ese total lo quiero ir acumulando en una variable previamente declarada el codigo es el siguente:


code:
__________________________________
AcumPeso :=Datamodule2.TotalesTrakingSalidaTotalPeso.Value;

TotalPeso:=TotalPeso +AcumPeso;

Carga.CurrencyEdit6.Value:= TotalPeso ;
_____________________________________

Pero no me acumula nada se que es algo muy sencillo pero no me da. agradesco quien pueda ayudarme.

_________________________
Un saludo a todos....

Última edición por danytorres fecha: 18-09-2003 a las 21:57:08.
Responder Con Cita
  #2  
Antiguo 18-09-2003
Viet Viet is offline
Miembro
 
Registrado: jul 2003
Ubicación: Argentina - Mar del Plata
Posts: 252
Poder: 21
Viet Va por buen camino
Hola

La solucion la puedes plantear de dos formas:

- En una consulta a la DB, por medio de Sql (lo que me parece optimo, ya que el trabajo de calculo se lo dejas al motor de la base de datos)

- O bien por codigo como planteaste vos.... pero hay que ver cuando incrementas el valor acumulado osea si es cuando el usuario hace algo o si debes recorrer los registros de tu consulta para eso, seria algo como:


Código:
QueryX.open;
While not QueryX.eof do
  begin
   aux := QueryX.fieldbyName('resultado').asfloat;
   QueryX.next;
  end;
y listo !


Suerte
__________________
Marín Ignacio Borthiry (Viet) - "El hombre arriesga su vida cada vez que elije y eso es lo que lo hace libre" ;)
Responder Con Cita
  #3  
Antiguo 18-09-2003
danytorres danytorres is offline
Miembro
 
Registrado: may 2003
Ubicación: Venezuela. Edo Carabobo
Posts: 361
Poder: 22
danytorres Va por buen camino
Smile

Gracias por responder Viet. El detalle esta en que no es una sola consulta son varia veces que tengo que ejecutarla y por cada una debo ir guardando el valor (acumularlo) como hago.
Responder Con Cita
  #4  
Antiguo 18-09-2003
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
Hola

¿ Puede ser que alguna vez la consulta devuelva Null ?. Recuerda que un valor + Null es igual a Null.Para asegurarte, mejor coge el valor de esta forma :

Código:
AcumPeso :=Datamodule2.TotalesTrakingSalidaTotalPeso.AsFloat;

TotalPeso:=TotalPeso +AcumPeso;

Carga.CurrencyEdit6.Value:= TotalPeso ;
De esta forma te aseguras de que en caso de valer Null, como mínimo sumas un 0.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #5  
Antiguo 21-09-2003
danytorres danytorres is offline
Miembro
 
Registrado: may 2003
Ubicación: Venezuela. Edo Carabobo
Posts: 361
Poder: 22
danytorres Va por buen camino
Smile

Gracias por responmder guillotmarc, pero el codigo que me diste no me funciona:


code:----------------------------------------------------------------------------

AcumPeso :=Datamodule2.TotalesTrakingSalidaTotalPeso.AsFloat;

TotalPeso:=TotalPeso +AcumPeso;

Carga.CurrencyEdit6.Value:= TotalPeso ;
--------------------------------------------------------------------------------


el procedimiento almacenado siempre me trae un valor no se da el caso el me de un valor nulo( en micaso), el detalle esta que no me realiza la acumulacion siempre me actualiza al ultimo valor que me da el procedimiento mas no me lo suma como hago agradeceria que me ayudaran.


_________________________________
un saludo a todos...
Responder Con Cita
  #6  
Antiguo 21-09-2003
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
que te de siempre el último valor es raro. No estarás inicializando la variable TotalPeso en algún lado??
Responder Con Cita
  #7  
Antiguo 21-09-2003
danytorres danytorres is offline
Miembro
 
Registrado: may 2003
Ubicación: Venezuela. Edo Carabobo
Posts: 361
Poder: 22
danytorres Va por buen camino
Unhappy

Gracias por responder cadetill, solamente declaro la variable al principio del procedimiento no entiendo porque me toma siempre el ultimo valor del procedimiento mas no me lo acumula?
Responder Con Cita
  #8  
Antiguo 21-09-2003
andres1569 andres1569 is offline
Miembro
 
Registrado: may 2003
Posts: 908
Poder: 22
andres1569 Va por buen camino
Hola:

En estos casos sería muy conveniente que pusieras todo el código que usas (ponlo entre las marcas code y /code para que sea lea mejor).

Hay algo qe no entiendo en el código que has puesto, y es por qué almacenas en AcumPeso el total que devuelve la consulta, y el acumulado en TotalPeso, me refiero a que el nombre de las variables no encaja ..., a ver si resulta que es eso y que estás inicializando la variable TotalPeso en algún sitio, que es la que usas para almacenar el acumulado.

Saludos
__________________
Guía de Estilo
Responder Con Cita
  #9  
Antiguo 22-09-2003
danytorres danytorres is offline
Miembro
 
Registrado: may 2003
Ubicación: Venezuela. Edo Carabobo
Posts: 361
Poder: 22
danytorres Va por buen camino
Unhappy

Gracias por rsponder Andres, el codigo que utilizo es el siguiente:


code:
__________________________________

procedure TForm1.Button1Click(Sender: TObject);
Var
TotalPeso : Integer
begin


TotalPeso:=TotalPeso + Datamodule2.TotalesTrakingSalidaTotalPeso.Value;;

Carga.CurrencyEdit6.Value:= TotalPeso ;


End; // Fin del procedimiento..
_____________________________________

y no estoy inicializando la variable en otra parte de la aplicacion lo que no entiendo es porque no efectua la suma (el procedimiento nunca devuelve valores nulos), agradesco la ayuda.


_____________________________
Un saludo a todos...
Responder Con Cita
  #10  
Antiguo 22-09-2003
andres1569 andres1569 is offline
Miembro
 
Registrado: may 2003
Posts: 908
Poder: 22
andres1569 Va por buen camino
Hola:

Lo que ocurre es que la variable TotalPeso la declaras de forma local, dentro de ese procedimiento, y por lo tanto se crea y se destruye durante la ejecución del mismo, y no sirve para acumular cantidades que quiereas tener al volver a llamar a dicho procedimiento.

Para que funcione adecuadamente, debes declararla de forma global, o bien en una claúsula var fuera de cualquier procedimiento / función, o bien, si estás trabajando en un formulario / DataModule, dentro de la declaración del mismo:

Código:
Var
  TotalPeso : Integer;

// llamar este procedure al empezar cualquier cálculo de acumulados
procedure TForm1.InicializaValores;
begin
   TotalPeso := 0;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  TotalPeso:=TotalPeso + Datamodule2.TotalesTrakingSalidaTotalPeso.Value;;
  Carga.CurrencyEdit6.Value:= TotalPeso ;
End; // Fin del procedimiento..
__________________
Guía de Estilo
Responder Con Cita
  #11  
Antiguo 22-09-2003
danytorres danytorres is offline
Miembro
 
Registrado: may 2003
Ubicación: Venezuela. Edo Carabobo
Posts: 361
Poder: 22
danytorres Va por buen camino
Smile

Gracias por responder andres tienes toda la razon tengo que declarar la variable fuera del procedimiento. gracias..

________________________
Un saludo a todos...
Responder Con Cita
Respuesta



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


La franja horaria es GMT +2. Ahora son las 00:11:58.


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