Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Go Back   Foros Club Delphi > Principal > SQL
Register FAQ Members List Calendar Guía de estilo Search Today's Posts Mark Forums Read

Reply
 
Thread Tools Search this Thread Display Modes
  #1  
Old 19/01/2004
noe's Avatar
noe noe is offline
Miembro
 
Join Date: Dec 2003
Location: Mexico
Posts: 111
Poder: 23
noe Va por buen camino
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!
Reply With Quote
  #2  
Old 19/01/2004
Nuria's Avatar
Nuria Nuria is offline
Miembro
 
Join Date: May 2003
Posts: 531
Poder: 24
Nuria Va por buen camino
Hola Noe:

Query1.Sql.Add ('Select SUM(BuenoPor) from ....');

El resultado sería la columna BuenoPor.

Si tienes alguna duda pregunta.

Saludos.
Reply With Quote
  #3  
Old 19/01/2004
__cadetill __cadetill is offline
Miembro
 
Join Date: May 2003
Posts: 3,387
Poder: 27
__cadetill Va por buen camino
Code:
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
Reply With Quote
  #4  
Old 19/01/2004
__cadetill __cadetill is offline
Miembro
 
Join Date: May 2003
Posts: 3,387
Poder: 27
__cadetill Va por buen camino
Bueno, quizás la respuesta de Nuria sea más acertada
Reply With Quote
  #5  
Old 19/01/2004
noe's Avatar
noe noe is offline
Miembro
 
Join Date: Dec 2003
Location: Mexico
Posts: 111
Poder: 23
noe Va por buen camino
disculpenj pero me da el error:
Query1: Field 'BuenoPor' not found

y en que componente voy a ver el resultado de la consulta

gracias
Reply With Quote
  #6  
Old 19/01/2004
Nuria's Avatar
Nuria Nuria is offline
Miembro
 
Join Date: May 2003
Posts: 531
Poder: 24
Nuria Va por buen camino
Quote:
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.


Quote:
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.....
Reply With Quote
  #7  
Old 19/01/2004
noe's Avatar
noe noe is offline
Miembro
 
Join Date: Dec 2003
Location: Mexico
Posts: 111
Poder: 23
noe Va por buen camino
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.
Reply With Quote
  #8  
Old 19/01/2004
__cadetill __cadetill is offline
Miembro
 
Join Date: May 2003
Posts: 3,387
Poder: 27
__cadetill Va por buen camino
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 )

Quedaría algo así:

Code:
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;
Reply With Quote
  #9  
Old 19/01/2004
noe's Avatar
noe noe is offline
Miembro
 
Join Date: Dec 2003
Location: Mexico
Posts: 111
Poder: 23
noe Va por buen camino
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
Reply With Quote
  #10  
Old 19/01/2004
__cadetill __cadetill is offline
Miembro
 
Join Date: May 2003
Posts: 3,387
Poder: 27
__cadetill Va por buen camino
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
Reply With Quote
  #11  
Old 19/01/2004
noe's Avatar
noe noe is offline
Miembro
 
Join Date: Dec 2003
Location: Mexico
Posts: 111
Poder: 23
noe Va por buen camino
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.
Reply With Quote
  #12  
Old 19/01/2004
noe's Avatar
noe noe is offline
Miembro
 
Join Date: Dec 2003
Location: Mexico
Posts: 111
Poder: 23
noe Va por buen camino
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.
Reply With Quote
  #13  
Old 19/01/2004
noe's Avatar
noe noe is offline
Miembro
 
Join Date: Dec 2003
Location: Mexico
Posts: 111
Poder: 23
noe Va por buen camino
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.
Reply With Quote
  #14  
Old 19/01/2004
__cadetill __cadetill is offline
Miembro
 
Join Date: May 2003
Posts: 3,387
Poder: 27
__cadetill Va por buen camino
Veamos

Quote:
Originally Posted by noe
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.

Quote:
Originally Posted by noe
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:

Code:
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
Reply With Quote
  #15  
Old 19/01/2004
noe's Avatar
noe noe is offline
Miembro
 
Join Date: Dec 2003
Location: Mexico
Posts: 111
Poder: 23
noe Va por buen camino
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!
Reply With Quote
  #16  
Old 19/01/2004
__cadetill __cadetill is offline
Miembro
 
Join Date: May 2003
Posts: 3,387
Poder: 27
__cadetill Va por buen camino
Bueno, pues entonces será el ejemplo 2 el que te servirá
Reply With Quote
  #17  
Old 19/01/2004
noe's Avatar
noe noe is offline
Miembro
 
Join Date: Dec 2003
Location: Mexico
Posts: 111
Poder: 23
noe Va por buen camino
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!
Reply With Quote
Reply


Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump


All times are GMT +2. The time now is 11:36.


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