Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #9  
Antiguo 26-06-2012
Avatar de movorack
[movorack] movorack is offline
Miguel A. Valero
 
Registrado: feb 2007
Ubicación: Bogotá - Colombia
Posts: 1.346
Poder: 22
movorack Va camino a la famamovorack Va camino a la fama
Cita:
Empezado por Nicolas_2011 Ver Mensaje
Bien yo habia comenzado.. con la ultima opcion pero la deje a medias..

Código SQL [-]
SELECT SUM (detalle_factura.Subtotal) AS total
 FROM
detalle_factura, factura_compra, producto
where 
detalle_factura.id_producto = producto.id_producto and 
detalle_factura.id_fc = factura_compra.id_fc and
detalle_factura.id_fc like :fact
No veo porque la consulta la debas hacer uniendo a la tabla factura_compra ni a la de producto. con la siguiente sentencia ya obtendrias el resultado de total.

Código SQL [-]
SELECT SUM (Subtotal) AS total
FROM detalle_factura
WHERE detalle_factura.id_fc like :fact

No se porque usas un like, esto podría traerte valores incorrectos. mejor busca el valor exacto.

El problema de esta solución (solo la menciono) es que debes ir por cada inserción y/o actualización a la DB a obtener un resultado que en teoría ya tienes en memoria. generando una carga innecesaria. Para efectos del ejercicio que estás realizando es funcional y no genera ningun problema. pero cuando se trata de muchas estaciones, redes extensas y demás. Detalles como estos hacen diferencia.

Otra posible solución que te planteaba es recorrer el dataset para calcular el resultado. Una función como esta puede servir.

Código Delphi [-]
function ObtTotal(pDataSet : TDataSet; pCampTot : string) : Extended;
  var
    lResult : Extended;
    lBookMark : TBookmark;
begin
  lResult := 0;
  lBookMark := pDataSet.GetBookmark;
  try
    pDataSet.First;
    while not pDataSet.Eof do
    begin
      try
        try
          lResult := lResult + pDataSet.Fields.FieldByName(pCampTot).AsFloat;
        finally
          pDataSet.Next
        end;
      except
        Result := -1;
      end;
    end;
  finally
    if pDataSet.BookmarkValid(lBookMark) then
      pDataSet.GotoBookmark(lBookMark);
    Result := lResult;
  end;
end;
__________________
Buena caza y buen remar... http://mivaler.blogspot.com
Responder Con Cita
 



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
¿Como calcular un campo basado en otro campo de otra fila (registro)? AzidRain MySQL 9 19-12-2011 11:34:42
Could not convert variant of type (Null) into type (Integer) Alejo15x Varios 2 30-11-2010 17:35:50
Sql que no retorna datos me da error:invalid variant type conversion bezaig SQL 6 17-03-2010 08:58:53
Insertar en un campo tipo BLOB un Variant adebonis Varios 1 23-03-2009 18:22:45
Database Desktop, Type Mismatch Expression en campo fecha fjolivares SQL 1 19-01-2005 13:45:53


La franja horaria es GMT +2. Ahora son las 23:53:05.


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