Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Obtener valor de una celda de un DBGrid (https://www.clubdelphi.com/foros/showthread.php?t=22988)

Albano 03-07-2005 18:01:45

Obtener valor de una celda de un DBGrid
 
Hola a todos...
Tengo un problema, necesito obtener la suma de los datos de una columna de un DBGrid, pero parece ke no se puede hacer, si alguien sabe como se puede hacer, por favor digame...
Tal vez la unica opcion es realizar la suma directamente desde la base de datos con el query.

JulioGO 03-07-2005 18:29:53

Si de preferencia te recomiendo que crees un query desde la BD, pues evitarias usar menos codigo el cual haria tu aplicacion mas pesada...

Saludos.

Neftali [Germán.Estévez] 04-07-2005 12:27:42

Cita:

Empezado por Albano
...Tal vez la unica opcion es realizar la suma directamente desde la base de datos con el query.

Hay componentes que te permiten realizar éstas sumas, como por ejemplo el DBGrid de las Quantum, pero tienen el inconveniente de que se deben cumplir unas determinadas condiciones para que puedan realizar las sumas y totales -en concreto que todos los datos deben estar cargados en memoria, y eso no siempre es posible-.
Si no deseas utilizar componentes externos, la opción de generar un SQL que te haga la suma es la más rápida y la más sencilla.

Código SQL [-]
   SELECT SUM(Importe) AS Total FROM Tabla1

ramdo 22-07-2005 18:16:37

bueno creo k hay algo por ahy...
 
buenas, mira no soy muy esperto pero creo que hay otra forma...

puedes hacer un bucle while notEOF do

if notvarisnull(table1.fieldbyname('nombre del campo de la columna').value then

entonces declaras un acumulador para que te valla sumando..

es mas o menos la idea el codigo no se si esta del todo bien por que lo he hecho hace mucho tiempo en otro lenguaje..

si no lo consigues el lunes te lo publico...

lucasarts_18 22-07-2005 18:48:40

Hola:

Lo más óptimo en rendimiento es hacer lo que menciona Neftali.

Albano 12-01-2006 05:26:41

Un poco tarde
 
Teia un tiempo sin trabajar en este proyecto y ahorita estoy un poco empolvado con esto de los querys.
Voy a hacer la suma por medio del query, como lo menciona Neftaly, pero ¿como hago para mostrar el resultado? ¿en que componente lo puedo mostrar?

Neftali [Germán.Estévez] 12-01-2006 10:02:17

Cita:

Empezado por Albano
¿como hago para mostrar el resultado?
¿en que componente lo puedo mostrar?

Una vez que hayas ejecutado la consulta lo obtienes vía y lo colocas en un TEdit, por ejemplo:

Código Delphi [-]
  // suponiendo que usues la consulta anterior...
  Value := query1.FieldByName('Total').AsInteger;
  Edit1.Text := IntToStr(Value);

Albano 13-01-2006 01:11:21

Error
 
Ya hice mas o menos lo que me dijiste Nefatli, use el codigo que me diste, nada mas que la opcion de "FieldByName" no me aparece, por eso la cambie por "FieldValues". El codigo me quedo de la siguiente manera:

Código Delphi [-]
Query1.close;
Query1.SQL.Clear;
Query1.SQL.Add('select sum(Importe) as total from egresos where Ano = :Num');
Query1.Parameters.ParamValues['Num'] := StrToInt(editano.text);
Query1.Open;
Suma := Query1.FieldValues['total'];
Label1.caption := FloatToStr(Suma);

Al correr el programa, en la parte donde se ejecuta este codigo me genera el siguiente mensage de error:
Cita:

Query1: Parameter 'Num' not found.
Cual es mi error?

Me faltaba mencionar algo: Este mismo parametro (Num) lo uso en otro Query, en el que tengo enlazado al DBGrid que menciono antes, ahi no pasa nada, si encuentra el parametro y me genera bien la consulta.

Albano 13-01-2006 01:48:48

Tenia mal la propiedad de "connection", la corregi y ahora cambio el error:
Cita:

No se han especificado valores para algunos parametros requeridos
se genera en la linea
Código Delphi [-]
Query1.Open;

Ricardojosep 13-01-2006 13:33:52

utiliza este codigo
 
Prueba con este codigo.

Código Delphi [-]
Query1.SQL.Clear;
Query1.SQL.Add('select sum(Importe) as total from egresos where Ano = :Num');
Query1.ParamByName('Num').AsString := editano.text;
Query1.Active := True;
Label1.caption := Query1.FieldByName('total').AsString;

Creo que con eso deberia andar.

Saludos!!

Albano 13-01-2006 17:53:26

Cambio de componente
 
Creo que acabo de dar con el problema, estoy usando un ADOQuery en lugar de un Query, voy a checar cambiando de componente y voy a probar el codigo que me han dado. Despues les cuento como me fue.
Gracias.


La franja horaria es GMT +2. Ahora son las 21:04:13.

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