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
Avatar de jirbert
jirbert jirbert is offline
Miembro
 
Registrado: nov 2007
Ubicación: Valencia-Venezuela
Posts: 60
Poder: 19
jirbert Va por buen camino
buenas, trate de usar el mismo codigo en algo parecido que estoy haciendo pero no me resulto!! lo que quiero es que me sume todos los campos que se encuentra en un dbgrid el cual se esta cargando constantemente pero no editable sino que se le agrega, trabajo en delphi 6 gracias!!!
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
Un enfoque alternativo

Hola,

En primer lugar, hay que tener en cuenta que en el TDBGrid puede haber campos calculados, en cuyo caso, la solución basada en usar un TQuery para obtener la suma con un :

Código SQL [-]
Select Sum(CampoBuscado) From Tabla

no serviría, a menos que pudieras reproducir en el Select el campo calculado lo que no siempre es posible o fácil. Sin embargo, en la mayoría de los casos el Select es una buena solución

Para usar otro enfoque, no debes trabajar con el TDBGrid sino con su dataset asociado, y realizar la suma con un While. Veamos un ejemplo con un solo campo a sumar:

Código Delphi [-]
Function TMiFormulario.SumarCampoouble;
Var
  Suma:          Double; 
Begin
     Suma := 0;
     Try
        With MiDataSet Do Begin
             DisableControls;  
             First;
             While Not EoF Do Begin
                   Suma := Suma + MiDataSetCAMPO.AsFloat;
                   Next;
             End;
        End; 
     Finally
        MiDataSet.EnableControls;
     End; 
     SumarCampo := Suma;
End;

En este caso MiDataSet es típicamente un TQuery y MiDataSetCAMPO es un campo permanente correspondiente al campo de la base de datos que se desea sumar. Observa el uso de DisableControls y EnableControls; esto se hace para evitar refrescar la pantalla mientras se calcula la suma.

Creo que te será facil adaptar esta solución a varios campos.

Suerte
Responder Con Cita
  #3  
Antiguo 21-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
Código PHP:
Var
Suma:Double;
Begin
     Suma
:=0;
     Try
        
With query1 Do Begin
             DisableControls
;
             
First;
             While 
Not EoF Do Begin
                   Suma 
:= Suma Query1.AsFloat;
                   
Next;
             
End;
        
End;
     
Finally
        query1
.EnableControls;
     
End;
     
SumarCampo := Suma;
End
buenas gracias por responder!! bueno hice lo que me dijestes pero me arrojo 2 errores

undeclared identifier:'asfloat'
undeclared identifier:'sumarcampo'
Responder Con Cita
  #4  
Antiguo 21-04-2008
rolandoj rolandoj is offline
Miembro
 
Registrado: abr 2007
Posts: 395
Poder: 20
rolandoj Va por buen camino
Explicación a tús dos errores

Hola,

Mira, SumarCampo te lo indica como no definido seguramente porque no has definido la función en la clase correspondiente al formulario. Típicamente necesitas tenerlo en la sección Private; o sea :

Código Delphi [-]
Private
   Function sumarcampo : Double;

Respecto al AsFloat, es porque en lugar de usar el objeto que representa al campo permanente pusiste fué el Query1. Si tú campo se llama por ejemplo VALOR, la línea debería ser :

Código Delphi [-]
Suma := Suma + Query1VALOR.AsFloat;

Ahora, disculpa la pregunta; pero, sabes como se crean campos permanentes ?. Query1VALOR debe ser un campo permanente y necesitas saber como crearlo

Suerte
Responder Con Cita
  #5  
Antiguo 21-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
no se como crear un campo permenete
Responder Con Cita
  #6  
Antiguo 21-04-2008
rolandoj rolandoj is offline
Miembro
 
Registrado: abr 2007
Posts: 395
Poder: 20
rolandoj Va por buen camino
Como crear el campo permanente y un consejo

Hola,

Bueno, la forma más básica de crear un campo permanente es la siguiente:

1. Te aseguras que el componente TDatabase a que este asociado tú TQuery esté activo; para lo cual debes tener su propiedad LoginPrompt en True y luego ahí si poner Connected a True

2. Haces click sobre tú Query1

3, Ahora click con el botón derecho y eliges Fields Editor

4. En la ventana que se abre, otra vez usa el botón derecho del mouse y verá un Menú con las opciones Add Field y Add all Fields, las cuales lógicamente te permiten crear campos individuales (Add Field) o todos de una vez (Add All Fields).

5. En el caso de los Query, lo normal es crealos todos, o sea, usa "Add All Fields"

6. Lo que hace este proceso es crear objetos que descendienden de la clase TField, cada uno de ellos asociado a un campo de la base de datos. El sistema los agrega automáticamente al formulario, o al Data Module, según donde tengas tú Query (por metodología debería ser siempre en un TDataModule). Cada objeto tienen un nombre formado por el nombre del Query seguído del nombre del campo a que este asociado y su tipo, como ya dije, es un descendiente de TField que puede ser un TStringField, TFloatField, etc.

Espero que esto te pueda ayudar para empezar; pero, disculpame, quiero ser sincero contigo :

Por lo que veo, eres aún demasiado novato en esto de Delphi. Lo que te acabo de explicar es de lo más básico en la parte de Base de Datos. Así las cosas, el mejor consejo que te puedo dar es que, antes de seguír codificando, te tomes el tiempo para leer con calma libros de programación en Delphi; como punto de arranque te será mucho más efectivo que la ayuda que podamos prestarte aquí

Suerte
Responder Con Cita
  #7  
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
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 10:53:50.


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