Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-06-2004
silviodp silviodp is offline
Miembro
 
Registrado: may 2003
Ubicación: General Levalle, Argentina
Posts: 277
Poder: 24
silviodp Va por buen camino
Suma de un campo

Cbrrr:
Mirando el código que me escribiste,yo lo traté de hacer de ésta forma
Inserté en el Modulo de datos una Query, que se llama Consulta1, en su propiedad SQL escribi lo siguiente:
Código:
select sum(Precfinal) As Suma
From Det_producto Inner Join Consumos On Det_producto.Consumo=Consumos.IdConsumo;
Y en el evento AfterPost de la tabla TblDetProducto lo siguiente:
Código:
procedure TModuloDatos.TblDetproductoAfterPost(DataSet: TDataSet);
Var
 x:Variant;
begin
   ModuloDatos.Consulta1.Close;
   ModuloDatos.Consulta1.Open;
   If ModuloDatos.Consulta1.IsEmpty Then
     ModuloDatos.TblConsumos.FieldByName('Totalfactu').AsFloat:=0
   Else
     X:=Modulodatos.Consulta1.FieldByName('Suma').AsFloat;
     ModuloDatos.TblConsumos.FieldByName('Totalfactu').AsFloat:=x;

end;
Pero no me funciona, el tema está en como asigno 'SUMA' o el valor que tengo en ella al campo 'Totalfactu', de la tabla TblConsumos, ya que me parece que es eso lo que hago mal.
Igual antes probé con tu código pero no me ejecuta el programa ya que me dice que 'No puedo asignar la base de datos porque es de sólo lectura (o algo así) a Q.database:=DB Control (que es el nombre de mi base)
Responder Con Cita
  #2  
Antiguo 10-06-2004
Avatar de cbrrr
cbrrr cbrrr is offline
Miembro
 
Registrado: jun 2004
Posts: 57
Poder: 23
cbrrr Va por buen camino
se supone que precfinal = Cantidad*Precunit, no?

Pues bien, a ese SQL está algo "mal"
1.- Lo sobra la unión (join) con la tabla maestra (teniendo el campo por el que buscar en la tabla detalle, es una tontería consumir recursos para hacer una join)
2.- Al quitar la join, le falta un parámetro, que es Consumo del cual quieres calcular la suma, sino te lo calculará de todo (cláusula where)

por lo que te podría quedar algo así:
Código SQL [-]
   select sum(Precfinal) as suma
   from det_producto
   where consumo = :consumo
y desde código hacer algo así:
Código Delphi [-]
    procedure TModuloDatos.TblDetproductoAfterPost(DataSet: TDataSet);
  Var
   x: Float;
  begin
     Consulta1.Close;
     Consulta1.ParamByName('consumo').AsInteger:=TblConsumos.FieldByName('IDConsumo').AsInteger;
     Consulta1.Open;
     If Consulta1.IsEmpty Then
       x := 0
     Else
       x := Consulta1.FieldByName('Suma').AsFloat;
     
     TblConsumos.Edit;
     TblConsumos.FieldByName('Totalfactu').AsFloat := x;
     TblConsumos.Post;
  end;
Consejo: acostúmbrate a no usar variables de tipo Variant cuando sabes, de entrada, el tipo de dato que será
Consejo2: dentro de un mismo formulario/módulo de datos, no hace falta que hagas referencia a éste

Espero que te sirva
__________________
Si no tienes algo que decir más importante que el silencio, cállate
Responder Con Cita
  #3  
Antiguo 11-06-2004
silviodp silviodp is offline
Miembro
 
Registrado: may 2003
Ubicación: General Levalle, Argentina
Posts: 277
Poder: 24
silviodp Va por buen camino
Suma de un campo

Muchas gracias Cbrrr, anduvo perfecto!!!, lo unico que no me reconoce es cuando defino x como Float, tuve que definirla como Currency.
Saludos.

Silvio.-
Responder Con Cita
  #4  
Antiguo 11-06-2004
Avatar de cbrrr
cbrrr cbrrr is offline
Miembro
 
Registrado: jun 2004
Posts: 57
Poder: 23
cbrrr Va por buen camino
Perdón, sí, estaba yo pensando en bases de datos. El Float debería haber sido un Real (o un Currency como tu dices)
__________________
Si no tienes algo que decir más importante que el silencio, cállate
Responder Con Cita
Respuesta


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


La franja horaria es GMT +2. Ahora son las 04:30:15.


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