Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-01-2004
Avatar de noe
noe noe is offline
Miembro
 
Registrado: dic 2003
Ubicación: Mexico
Posts: 111
Poder: 21
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!
Responder Con Cita
  #2  
Antiguo 19-01-2004
Avatar de Nuria
Nuria Nuria is offline
Miembro
 
Registrado: may 2003
Posts: 531
Poder: 21
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.
Responder Con Cita
  #3  
Antiguo 19-01-2004
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 24
__cadetill Va por buen camino
Código:
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
Responder Con Cita
  #4  
Antiguo 19-01-2004
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 24
__cadetill Va por buen camino
Bueno, quizás la respuesta de Nuria sea más acertada
Responder Con Cita
  #5  
Antiguo 19-01-2004
Avatar de noe
noe noe is offline
Miembro
 
Registrado: dic 2003
Ubicación: Mexico
Posts: 111
Poder: 21
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
Responder Con Cita
  #6  
Antiguo 19-01-2004
Avatar de Nuria
Nuria Nuria is offline
Miembro
 
Registrado: may 2003
Posts: 531
Poder: 21
Nuria Va por buen camino
Cita:
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.


Cita:
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.....
Responder Con Cita
  #7  
Antiguo 19-01-2004
Avatar de noe
noe noe is offline
Miembro
 
Registrado: dic 2003
Ubicación: Mexico
Posts: 111
Poder: 21
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.
Responder Con Cita
  #8  
Antiguo 19-01-2004
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 24
__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í:

Código:
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;
Responder Con Cita
  #9  
Antiguo 19-01-2004
Avatar de noe
noe noe is offline
Miembro
 
Registrado: dic 2003
Ubicación: Mexico
Posts: 111
Poder: 21
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
Responder Con Cita
  #10  
Antiguo 19-01-2004
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 24
__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
Responder Con Cita
  #11  
Antiguo 19-01-2004
Avatar de noe
noe noe is offline
Miembro
 
Registrado: dic 2003
Ubicación: Mexico
Posts: 111
Poder: 21
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.
Responder Con Cita
  #12  
Antiguo 19-01-2004
Avatar de noe
noe noe is offline
Miembro
 
Registrado: dic 2003
Ubicación: Mexico
Posts: 111
Poder: 21
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.
Responder Con Cita
  #13  
Antiguo 19-01-2004
Avatar de noe
noe noe is offline
Miembro
 
Registrado: dic 2003
Ubicación: Mexico
Posts: 111
Poder: 21
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.
Responder Con Cita
  #14  
Antiguo 19-01-2004
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 24
__cadetill Va por buen camino
Veamos

Cita:
Empezado por 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.

Cita:
Empezado por 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:

Código:
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
Responder Con Cita
  #15  
Antiguo 19-01-2004
Avatar de noe
noe noe is offline
Miembro
 
Registrado: dic 2003
Ubicación: Mexico
Posts: 111
Poder: 21
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!
Responder Con Cita
  #16  
Antiguo 19-01-2004
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 24
__cadetill Va por buen camino
Bueno, pues entonces será el ejemplo 2 el que te servirá
Responder Con Cita
  #17  
Antiguo 19-01-2004
Avatar de noe
noe noe is offline
Miembro
 
Registrado: dic 2003
Ubicación: Mexico
Posts: 111
Poder: 21
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!
Responder Con Cita
Respuesta



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


La franja horaria es GMT +2. Ahora son las 10:48: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
Copyright 1996-2007 Club Delphi