FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
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. |
#2
|
|||
|
|||
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; Suerte
__________________
Marín Ignacio Borthiry (Viet) - "El hombre arriesga su vida cada vez que elije y eso es lo que lo hace libre" ;) |
#3
|
|||
|
|||
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.
|
#4
|
||||
|
||||
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 ; Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). |
#5
|
|||
|
|||
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... |
#6
|
|||
|
|||
que te de siempre el último valor es raro. No estarás inicializando la variable TotalPeso en algún lado??
|
#7
|
|||
|
|||
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?
|
#8
|
|||
|
|||
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 |
#9
|
|||
|
|||
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... |
#10
|
|||
|
|||
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 |
#11
|
|||
|
|||
Gracias por responder andres tienes toda la razon tengo que declarar la variable fuera del procedimiento. gracias..
________________________ Un saludo a todos... |
|
|
|