Ver la Versión Completa : suma de un campo sql
saludos a todos los del foro, disculpen tengo el siguiente problema, no se como realizar la sumatoria de esta consulta en la cual tengo los siguientes campos:
'Folio'
'Matricula'
'UltSem'
'Semana'
'BuenoPor'
'CantidadDe'
'Concepto'
'Fecha'
'Horario'
'Debe'
'Nombre'
query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('select *');
Query1.SQL.Add('from Cobranza.db');
Query1.sql.Add('Where upper(matricula) like :mat');
Query1.ParamByName('mat').AsString:='%'+uppercase(edit1.text)+'%';
Query1.Open;
Mi pregunta es como sumo el total del campo 'BuenoPor', del resultado de la consulta de un alumno.
y en donde se coloca el resultado, en un componente?
Gracias de antemano
saludos!
Nuria
19-01-2004, 16:03:00
Hola Noe:
Query1.Sql.Add ('Select SUM(BuenoPor) from ....');
El resultado sería la columna BuenoPor.
Si tienes alguna duda pregunta.
Saludos. ;)
__cadetill
19-01-2004, 16:05:48
query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('select Folio, Matricula, UltSem, Semana, CantidadDe,');
Query1.SQL.Add(' Concepto, Fecha, Horario, Debe, Nombre, sum(BuenoPor)');
Query1.SQL.Add('from Cobranza.db');
Query1.SQL.Add('Where upper(matricula) like :mat');
Query1.SQL.Add('group by Folio, Matricula, UltSem, Semana, CantidadDe,');
Query1.SQL.Add(' Concepto, Fecha, Horario, Debe, Nombre');
Query1.ParamByName('mat').AsString:='%'+uppercase(edit1.text)+'%';
Query1.Open;
Espero te sirva
__cadetill
19-01-2004, 16:07:45
Bueno, quizás la respuesta de Nuria sea más acertada :D
disculpenj pero me da el error:
Query1: Field 'BuenoPor' not found
y en que componente voy a ver el resultado de la consulta
gracias
Nuria
19-01-2004, 16:36:28
Query1: Field 'BuenoPor' not found
1.- Comprueba que el campo de la tabla se llame 'BuenoPor'.
2.- Pincha dos veces en el objeto Query1 que tienes, si te aparece algún campo, debe de aparecer el 'BuenoPor', sino añadeselo.
y en que componente voy a ver el resultado de la consulta
Por ejemplo, si lo enlazas a un DataSet que esta asociado a un DBEdit.
O bien accediendo directamente: Query1.FieldByName('BuenoPor').AsInteger;
No sé si me explicado bien..... ;)
gracias Nuria, por contestar y molestarte en responder a mi pregunta, son muy amables, pero meti el codigo que me dijo catedill que es el siguiente y me da el error que te mencione anteriormente, lo que necesito es que me sume los registros del campo 'BuenoPor', es para saber la suma del estado de cuenta de un alumno de los pagos que ha hecho.
y la pregunta mas importante, en donde coloco la sumatoria del campo 'Bueno Por' para que se muestre en un componente edit.
Aqui esta el codigo que tengo ahorita, que fue el que me dio catedill, ah y el campo bueno por si lo tengo en el query.
query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('select Folio, Matricula, UltSem, Semana, CantidadDe,');
Query1.SQL.Add(' Concepto, Fecha, Horario, Debe, Nombre, sum(BuenoPor)');
Query1.SQL.Add('from Cobranza.db');
Query1.SQL.Add('Where upper(matricula) like :mat');
Query1.SQL.Add('group by Folio, Matricula, UltSem, Semana, CantidadDe,');
Query1.SQL.Add(' Concepto, Fecha, Horario, Debe, Nombre');
Query1.ParamByName('mat').AsString:='%'+uppercase(edit1.text)+'%';
Query1.Open;
gracias nuria una vez mas.
__cadetill
19-01-2004, 17:28:24
Bueno, es normal que te de ese error, falta por poner en la consulta el nombre que se le quiere dar a la columna de suma (que no es, por defecto, ni mucho menos ese :D)
Quedaría algo así:
query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('select Folio, Matricula, UltSem, Semana, CantidadDe,');
Query1.SQL.Add(' Concepto, Fecha, Horario, Debe, Nombre, sum(BuenoPor) as BuenoPor');
Query1.SQL.Add('from Cobranza.db');
Query1.SQL.Add('Where upper(matricula) like :mat');
Query1.SQL.Add('group by Folio, Matricula, UltSem, Semana, CantidadDe,');
Query1.SQL.Add(' Concepto, Fecha, Horario, Debe, Nombre');
Query1.ParamByName('mat').AsString:='%'+uppercase(edit1.text)+'%';
Query1.Open;
Gracias cadetill, pero en donde se muestra la suma del campo, es decir en que campo o en que componente lo podria poner, por ejemplo si un alumno realizo un pago de 200, y en otro registro un pago de 300, la suma da 500 en donde se mostrara esa suma.
repito el codigo que me diste.
query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('select Folio, Matricula, UltSem, Semana, CantidadDe,');
Query1.SQL.Add(' Concepto, Fecha, Horario, Debe, Nombre, sum(BuenoPor) as BuenoPor');
Query1.SQL.Add('from Cobranza.db');
Query1.SQL.Add('Where upper(matricula) like :mat');
Query1.SQL.Add('group by Folio, Matricula, UltSem, Semana, CantidadDe,');
Query1.SQL.Add(' Concepto, Fecha, Horario, Debe, Nombre');
Query1.ParamByName('mat').AsString:='%'+uppercase(edit1.text)+'%';
Query1.Open;
gracias cadetill
__cadetill
19-01-2004, 18:01:50
Bueno, pues puedes mostrarlo donde más te plazca/convenga como te ha comentado Nuria. Puedes untilizar un DBGrid, un DbText, mostrar simplemente un mensaje,...... La pregunta más bien sería: ¿qué es lo que quieres hacer con el dato? A partir de ahí, discutimos la jugada ;)
la verdad esta linea no le entiendo nada porque as BuenoPor
sum(BuenoPor) as BuenoPor
y como muestras el resultado de la suma de la consulta en un componente.
haber si me explique mejor
gracias.
la verdad esta linea no le entiendo nada porque as BuenoPor
sum(BuenoPor) as BuenoPor
y como muestras el resultado de la suma de la consulta en un componente.
haber si me explique mejor
gracias y disculpa.
la verdad esta linea no le entiendo nada porque as BuenoPor
sum(BuenoPor) as BuenoPor
y como muestras el resultado de la suma de la consulta en un componente edit.
haber si me explique mejor
gracias y disculpa.
__cadetill
19-01-2004, 18:22:40
Veamos
la verdad esta linea no le entiendo nada porque as BuenoPor
sum(BuenoPor) as BuenoPor
con el as lo que hacemos es decirle a la sentencia SQL que nos devuelva esa columna con el nombre que nosotros queramos (como si le hubieramos puesto "PepitoPalotes"). Sirve para cambiar el nombre que devuelve por defecto el SQL de una columna.
y como muestras el resultado de la suma de la consulta en un componente.
haber si me explique mejor
gracias y disculpa.
Bueno, como no me concretas exactamente que es lo que quieres hacer el resultado, te pondré 2 ejemplos que espero te ayuden a escoger
Ejemplo 1: Visualizar el resultado de la sentencia SQL en componentes DataAware. ¿Cómo hacerlo? Sencillo. Enganchamos al formulario el componente TQuery (en que se lanza la consulta), un componente TDataSource y, por ejemplo, un TDBGrid. Los unimos de la siguiente manera: TDBGrid (propiedad DataSource) --> TDataSource (propiedad DataSet) --> TQuery.
Ejemplo 2: Visualizar el resultado en un TLabel y/o mostrarlo mediante un ShowMessage. ¿Cómo hacerlo? Sencillo también. Mira el código que te pongo a continuación:
var
i: string;
begin
.....
Query1.Open;
i := FormatFloat('#,##0.00', Query.FieldByName('BuenoPor').AsFloat);
Label1.Caption := i;
ShowMessage('La suma es ' + i);
Bueno, espero te sirva
si mira te lo voy a describir detalladamente, yo tengo losiguiente:
cuando hago una consulta del estado de cuenta de un alumno, me muestra todos los pagos que ha realizado. si yo consulto por la matricula de x alumno, se muestran todos los registros de pagos que ha realizado ese alumno ejemplo.
Folio Matricula Nombre UltSem semana Buenopor
1 ti-04-3 rodrigo ramirez 4 3 4 200
2 ti-04-3 rodrigo ramirez 17 16 17 200
este es mi resultado de la consulta y deseo poner la suma del campo 'BuenoPor' en un Edit.
Logicamente el resultado que se tiene que poner en el edit del formulario es 400 eso es todo.
Gracias!
__cadetill
19-01-2004, 18:51:04
Bueno, pues entonces será el ejemplo 2 el que te servirá
si mira te lo voy a describir detalladamente, yo tengo losiguiente:
cuando hago una consulta del estado de cuenta de un alumno, me muestra todos los pagos que ha realizado. si yo consulto por la matricula de x alumno, se muestran todos los registros de pagos que ha realizado ese alumno ejemplo.
Folio Matricula Nombre UltSem semana Buenopor
1 ti-04-3 rodrigo ramirez 4 3 4 200
2 ti-04-3 rodrigo ramirez 17 16 17 200
este es mi resultado de la consulta y deseo poner la suma del campo 'BuenoPor' en un Edit.
Logicamente el resultado que se tiene que poner en el edit del formulario es 400 eso es todo.
Gracias!
vBulletin v3.6.8, Derechos ©2000-2024, Jelsoft Enterprises Ltd.