FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
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! |
#2
|
||||
|
||||
Hola Noe:
Query1.Sql.Add ('Select SUM(BuenoPor) from ....'); El resultado sería la columna BuenoPor. Si tienes alguna duda pregunta. Saludos. |
#3
|
|||
|
|||
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; |
#4
|
|||
|
|||
Bueno, quizás la respuesta de Nuria sea más acertada
|
#5
|
||||
|
||||
disculpenj pero me da el error:
Query1: Field 'BuenoPor' not found y en que componente voy a ver el resultado de la consulta gracias |
#6
|
||||
|
||||
Cita:
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:
O bien accediendo directamente: Query1.FieldByName('BuenoPor').AsInteger; No sé si me explicado bien..... |
#7
|
||||
|
||||
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. |
#8
|
|||
|
|||
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; |
#9
|
||||
|
||||
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 |
#10
|
|||
|
|||
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
|
#11
|
||||
|
||||
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. |
#12
|
||||
|
||||
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. |
#13
|
||||
|
||||
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. |
#14
|
|||
|
|||
Veamos
Cita:
Cita:
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); |
#15
|
||||
|
||||
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! |
#16
|
|||
|
|||
Bueno, pues entonces será el ejemplo 2 el que te servirá
|
#17
|
||||
|
||||
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! |
|
|
|