PDA

Ver la Versión Completa : Obtener valor de una celda de un DBGrid


Albano
03-07-2005, 18:01:45
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
...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.


SELECT SUM(Importe) AS Total FROM Tabla1

ramdo
22-07-2005, 18:16:37
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
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
¿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:


// suponiendo que usues la consulta anterior...
Value := query1.FieldByName('Total').AsInteger;
Edit1.Text := IntToStr(Value);

Albano
13-01-2006, 01:11:21
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:

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:
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:
No se han especificado valores para algunos parametros requeridos
se genera en la linea Query1.Open;

Ricardojosep
13-01-2006, 13:33:52
Prueba con este codigo.


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
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.