Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Go Back   Foros Club Delphi > Principal > SQL
Register FAQ Members List Calendar Guía de estilo Search Today's Posts Mark Forums Read

Reply
 
Thread Tools Search this Thread Display Modes
  #1  
Old 15/02/2008
teclilla teclilla is offline
Miembro
 
Join Date: Feb 2008
Posts: 41
Poder: 0
teclilla Va por buen camino
Muchas gracias por la respuesta, uso Paradox 7 (disculpad por no haberlo dicho antes), he añadido esto a la función:
Código Delphi [-]
procedure TFormPresupuestos.CalcularTotal;
var
        import, total: real;
begin
        import:=TPresProdDetalle.FieldByName('Importe').asFloat;
        QSuma.Close;
        QSuma.Params[0].AsInteger:=TPresupuestosIdpres.AsInteger;
        QSuma.Open;
        total:=QSuma.FieldByName('ST').Value;
        TPresupuestosSumaTotal.AsFloat:=total;
end;
y ejecuto paso a paso para depurar y resulta que el TPresProdDetalle es tabla detalle y hasta que no confirmo el presupuesto no realizo TPresProdDetalle, no se si el error puede venir por ahí, ya que si pruebo solo con un producto en el detalle el importe que recoge es un numero erroneo, a pesar de que a esta funcion se le llama en el evento TPresProdDetalleAfterInsert, no se si vosotros tendreis alguna idea. Muchas Gracias.
Reply With Quote
  #2  
Old 15/02/2008
Caral's Avatar
[Caral] Caral is offline
Miembro Premium
 
Join Date: Aug 2006
Posts: 7,659
Poder: 28
Caral Va por buen camino
Hola
No dices si te da problemas o que problemas te da, cero que no da la informacion?.
Haz este y veras que dato envia:
Código Delphi [-]
procedure TFormPresupuestos.CalcularTotal;
var
        import, total: real;
begin
        import:=TPresProdDetalle.FieldByName('Importe').asFloat;
        QSuma.Close;
        QSuma.Params[0].AsInteger:=TPresupuestosIdpres.AsInteger;
        QSuma.Open;
        total:=QSuma.FieldByName('ST').Value;
        
        ShowMessage(import);
        ShowMessage(total);

        TPresupuestosSumaTotal.AsFloat:=total;
end;
Asi veremos quien es el que tiene la informacion, supongo.
Saludos
Reply With Quote
  #3  
Old 15/02/2008
teclilla teclilla is offline
Miembro
 
Join Date: Feb 2008
Posts: 41
Poder: 0
teclilla Va por buen camino
import = 0
y genera el error 'Invalid variant type conversion'
Código Delphi [-]
import:=TPresProdDetalle.FieldByName('Importe').asFloat;
        ShowMessage(FloatToStr(import));
        QSuma.Close;
        QSuma.Params[0].AsInteger:=TPresupuestosIdpres.AsInteger;
        QSuma.Open;
        total:=QSuma.FieldByName('ST').Value; //genera el error
        ShowMessage(FloatToStr(import));
        TPresupuestosSumaTotal.AsFloat:=total;
Muchas gracias Caral
Reply With Quote
  #4  
Old 15/02/2008
Caral's Avatar
[Caral] Caral is offline
Miembro Premium
 
Join Date: Aug 2006
Posts: 7,659
Poder: 28
Caral Va por buen camino
Hola
Segun me dicen ST tiene un valor NULL, por eso manda el error.
No se a que se debe, se supone que es la suma del campo importe y si este contiene datos no deberia dar ese problema.
Para mi por alguna razon no esta reconociendo ST como un campo.
Quedo un poco corto en la apreciacion del problema, no lo termino de entender.
Espero lo puedas solucionar, o esperar a un maestro, ya vendrán.
Saludos
Reply With Quote
  #5  
Old 16/02/2008
Lepe's Avatar
[Lepe] Lepe is offline
Miembro Premium
 
Join Date: May 2003
Posts: 7,424
Poder: 31
Lepe Va por buen camino
total:=QSuma.FieldByName('ST').AsFloat;

Ya que trabajas con paradox, usa AsFloat, te convertirá el dato NULL por un cero (y no muestra error).

.Value es de tipo Variant, y si no tiene nada asignado o tiene el valor especial NULL, devolverá Unassigned o NULL, y como esos valores no tienen correspondencia con un real, delphi lanza la excepción.

las propiedades Asxxxxx si realizan la conversión.

Por cierto, dale una visual a la ayuda "data types", puede que un Float se más grande que un real, y obtengas errores en ejecución. (Mira el valor máximo que puede guardar cada tipo de dato).

Saludos

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Reply With Quote
  #6  
Old 16/02/2008
teclilla teclilla is offline
Miembro
 
Join Date: Feb 2008
Posts: 41
Poder: 0
teclilla Va por buen camino
Muchas gracias lepe, lo he cambiado pero creo que es la sql la que no la realiza bien, ¿como puedo mostrar el resultado de la query por pantalla antes de convertirla a float y asignarla a una variable?
Gracias.
Reply With Quote
  #7  
Old 16/02/2008
teclilla teclilla is offline
Miembro
 
Join Date: Feb 2008
Posts: 41
Poder: 0
teclilla Va por buen camino
Creo que el tema va por aquí, cuando doy de alta un presupuesto mediante formulario inserto 1 producto, calculo el importe y me da 850,00 y despues calculo el total:
Código Delphi [-]
procedure TFormPresupuestos.CalcularTotal;
var
        total: real;
begin
        QSuma.Close;
        QSuma.Params[0].AsInteger:=TPresupuestosIdpres.AsInteger;
        QSuma.Open;
        ShowMessage(VarToStr(QSumaST.Value)); // me da 0
        total:=QSumaST.AsFloat;
        ShowMessage(FloatToStr(total));
        TPresupuestosSumaTotal.AsFloat:=total;
end;
creo que la sql no la realiza bien,
Código SQL [-]
size="1">
Select sum(Importe) as ST from presprod where Codpres= res
group by Codpres
en Importe en teoría debe contener 850,00 con lo cual al haber un solo producto este deberia ser el resultado de la query.
Gracias por vuestra ayuda.
Reply With Quote
Reply


Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
Sumar un campo al ser checkeado en un ListView Avellas OOP 3 15/11/2007 21:39
Como sumar un campo entero y un real Maury Manosalva OOP 2 31/05/2007 19:41
Sumar Label Caral Varios 1 07/10/2006 01:10
Sumar un campo en dos tablas Ignacio SQL 2 27/09/2004 01:00
Sumar Fechas inetplus Varios 1 18/03/2004 01:12


All times are GMT +2. The time now is 10:20.


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