Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-04-2008
jangel_ramirezm jangel_ramirezm is offline
Miembro
 
Registrado: ago 2007
Ubicación: León Gto. Mex.
Posts: 39
Poder: 0
jangel_ramirezm Va por buen camino
Hola
Prueba con fieldbyname
el field es el nombre de tu campo. pienso que es algo sencillo pero puede servirte
Código Delphi [-]
Var
Suma:Double;
Begin
     Suma:=0;
     Try
        With query1 Do Begin
             DisableControls;
             First;
             While Not EoF Do Begin
                   Suma := Suma + fieldbyname('Field').AsFloat;
                   Next;
             End;
        End;
     Finally
        query1.EnableControls;
     End;
     Edit1.Text:=Floattostr(Suma);
End;  

Saludos
Responder Con Cita
  #2  
Antiguo 21-04-2008
rolandoj rolandoj is offline
Miembro
 
Registrado: abr 2007
Posts: 395
Poder: 20
rolandoj Va por buen camino
Comentarios a FieldByName

Hola,

Respecto a la solución basada en FieldByName, ciertamente también funciona; pero , ya que nuestro amigo está empezando, creo conveniente efectuar algunos comentarios acerca de su uso.

FieldByName es un método que devuelve automáticamente el objeto, descendiente de TField que el respectivo TDataset tiene para el campo que se la pasa como único parámetro. En ese orden de ideas, si el campo se llama Field, y el Query, Query1, como en el ejemplo, eso es, en principio, lo mismo que crear el objeto Query1Field y escribir Query1Field.AsFloat. Sin embargo, hay varias diferencias.

A efectos de simples operaciones sumatorias, como el caso presente, FieldByName es más versatil que el método que yo mencioné antes, ya que el nombre del campo puede pasarse como parámetro a tiempo de ejecución, y es por tanto la solución adecuada cuando los nombres de los campos pueden ser diferentes a tiempo de ejecución.

Por contra, es bastante ineficiente frente al método de crear el campo permanente, ya que cada vez que se llame a FieldByName, este debe realizar una busqueda entre la lista de campos del Query. Si el Query tiene muchos campos y encima hay muchos registros, esto significa muchas operaciones innecesarias extras.

A lo anterior agrega que es bastante más complicado de manejar cuando se requiere usar otras funcionalidades, tales como campos calculado y eventos OnGetText y OnSetText

Una alternativa para el ejemplo actual es obtener el objeto TField deseado antes de efectuar el While. Veamos :

Código Delphi [-]
Var
Suma: Double;
ElCampo:  TField; 
Begin
     Suma:=0;
     Try
        With query1 Do Begin
             DisableControls;
             ElCampo := fieldbyname('Field');
             First;
             While Not EoF Do Begin
                   Suma := Suma + ElCampo.AsFloat;
                   Next;
             End;
        End;
     Finally
        query1.EnableControls;
     End;
     Edit1.Text:=Floattostr(Suma);
End;

También es de anotar que FieldByName genera una excepción si el campo no existe. Para controlar eso, puede usarse FindField que es lo mismo que FieldByName excepto que si el campo no existe, en lugar de genear un error devuelve el valor Nil, permitiendo así que el programador pueda analizar el error.

Como verás, aún en este caso sencillo hay muchas cosas por anotar. Por eso mi consejo de que dediques un tiempó a leer libros de Delphi o mirar artículos en Internet. Creo que te darán una visión más amplia.

Última edición por rolandoj fecha: 21-04-2008 a las 19:13:09.
Responder Con Cita
  #3  
Antiguo 22-04-2008
Avatar de jirbert
jirbert jirbert is offline
Miembro
 
Registrado: nov 2007
Ubicación: Valencia-Venezuela
Posts: 60
Poder: 19
jirbert Va por buen camino
hola rolandoj gracias por los consejo se que son muy utiles!! y tienes razon tengo qeu adentrarme un poco mas a la teoria para la practica!! en fin gracias ya consegui un codigo super fino me funcina de maravilla no me complico,, gracias de igual forma son muy amables las personas del foro gracias a ustedes he podido aclarar algunas conchas de mango que se me hacen un poco dificiles!! pero muchas gracias!!!
Responder Con Cita
  #4  
Antiguo 22-04-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.572
Poder: 27
egostar Va camino a la fama
Cita:
Empezado por jirbert Ver Mensaje
hola rolandoj gracias por los consejo se que son muy utiles!! y tienes razon tengo qeu adentrarme un poco mas a la teoria para la practica!! en fin gracias ya consegui un codigo super fino me funcina de maravilla no me complico,, gracias de igual forma son muy amables las personas del foro gracias a ustedes he podido aclarar algunas conchas de mango que se me hacen un poco dificiles!! pero muchas gracias!!!
Hola jirbert, que bueno que ya conseguiste solucionar tu problema, pero uno de los espiritus del club es mostrar la solución a la problematica que se tenia, te invito a postear la solución para que otro compañero con la misma duda pueda acceder a la misma y de esta forma beneficiarnos todos.

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #5  
Antiguo 22-04-2008
Avatar de jirbert
jirbert jirbert is offline
Miembro
 
Registrado: nov 2007
Ubicación: Valencia-Venezuela
Posts: 60
Poder: 19
jirbert Va por buen camino
bueno sorry por esa!! este me lo dieron desde otro hilo del foro
Código Delphi [-]
procedure TForm5.Button2Click(Sender: TObject);
Var
Precio : Currency;
Marca : TBookMarkStr;
begin
 form1.Table4.delete;
   precio := 0;
    Marca := form1.Table4.Bookmark;
    form1.Table4.DisableControls;
    try
     form1.Table4.First;
      While Not form1.Table4.Eof do
      begin
       Precio := Precio + form1.Table4.FieldbyName('Total').ASCurrency;
       form1.Table4.Next;
      end;
       Label18.Caption := CurrToStr(Precio);
    finally
     form1.Table4.EnableControls;
     form1.Table4.Bookmark := Marca;
    end;

bueno me funcione fino, espero que a otros le sirva!!!
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
sumar la columna de un dbgrid pharaonhx Varios 3 12-06-2008 15:27:27
sumar una columna DBGrid cancerbero Conexión con bases de datos 5 11-08-2006 18:49:37
Sumar en DBgrid Migpal Varios 2 18-11-2005 18:02:48
Como extraer datos de un DBgrid a otro DBgrid mickey Conexión con bases de datos 13 29-01-2004 05:05:30
Sumar columnas de un DBGRID magm2000 Varios 3 27-09-2003 00:40:06


La franja horaria es GMT +2. Ahora son las 20:38:09.


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