Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-09-2003
click click is offline
Miembro
 
Registrado: ago 2003
Posts: 34
Poder: 0
click Va por buen camino
como sumo una columan de una BD

que ondas cuates:

tengo una pequeña tabla con los siguientes campos y sus registros:
id fecha horaini tiempo costo
1 20-09-03 12:00 2 20.00
2 20-09-03 12:00 2 20.00
3 20-09-03 12:00 2 20.00
4 21-09-03 12:00 2 20.00
5 21-09-03 12:00 2 20.00
6 23-09-03 12:00 2 20.00
7 25-09-03 12:00 2 20.00

lo que quiero es saber cuanto suman los registros de la fecha 20
y cuanto de la fecha 20 al 25

pero sin utilizar un reporteador como quickreport o cristal, con puras variables en un form.

facil? dime como
__________________
Saludos.
Responder Con Cita
  #2  
Antiguo 22-09-2003
Ruben_Cu Ruben_Cu is offline
No confirmado
 
Registrado: oct 2003
Ubicación: Mariel, Cuba
Posts: 271
Poder: 0
Ruben_Cu Va por buen camino
Hola click, la manera mas rápida de hacerlo es utilizando SQL y sus funciones y claúsulas, de forma general sería algo como:

select SUM (costo) from tutabla where fecha='20/09/03'

Después para pesentarlo en la forma:

Edit1.Text:= Formatfloat('#,##0.00', query1.fieldbyname('SUM (costo)').AsFloat)

Para el caso deL rango entre dos fechas debes utilizar predicate BETWEEN

Lo que he escrito es al vuelo pero te vale de punto de partida.
Saludos y suerte
Responder Con Cita
  #3  
Antiguo 22-09-2003
click click is offline
Miembro
 
Registrado: ago 2003
Posts: 34
Poder: 0
click Va por buen camino
muy bien, la idea ya la tengo, lo que ahora no eh logrado es como hacer para que en lugar de hacer una sola consulta fija todo el tiempo, hacer que sea variable osea que dependa del contenido de un edit, al escribir X fecha se realize la busqueda dependiendo de la fecha que escriba en el edit.

La otra es como hacer que el efecto de la busqueda se refleje en un dbgrid


__________________
Saludos.
Responder Con Cita
  #4  
Antiguo 22-09-2003
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
Supongamos que el Edit donde pones la fecha es "Fecha"

Código:
  Query1.SQL.Add('select SUM (costo)');
  Query1.SQL.Add('from tutabla');
  Query1.SQL.Add('where fecha=:f');
  Query.ParamByName('f').AsDateTime := StrToDate(Fecha.Text);
Query.Open;
Si en lugar de utilizar un TEdit utilizas un componente de fechas estilo al TDateTimePicker o TDateEdit (de las RX y que personalmente me gusta más), la asignación sería algo así

Código:
  Query.ParamByName('f').AsDateTime := Fecha.Date;
Para el tema de coger un rango de fechas, utiliza el between dentro de la consulta SQL
Código:
  Query1.SQL.Add('select SUM (costo)');
  Query1.SQL.Add('from tutabla');
  Query1.SQL.Add('where fecha between :fini and :ffin');
  Query.ParamByName('f').AsDateTime := StrToDate(FechaIni.Text);
  Query.ParamByName('f').AsDateTime := StrToDate(FechaFin.Text);
Query.Open;
Por cierto, los parámetros también puedes escribirlos directamente en la consulta SQL
Código:
  Query1.SQL.Add('select SUM (costo)');
  Query1.SQL.Add('from tutabla');
  Query1.SQL.Add('where fecha =' + 
          QuotedStr(FormatDateTime('mm/dd/yyyy', FechaIni.Date)));
Tu eliges el método, pero yo suelo utilizar el primero para evitar esas transformaciones de fecha,....

Para el tema de visualizarlo en un TDbGrid, éste tiene la propiedad Datasource donde le puedes asignar un TDataSource, el cual, a su vez tiene la propiedad Dataset a la que le puedes asignar el TQuery (o el componente que utilices para lanzar SQLs)

Última edición por __cadetill fecha: 22-09-2003 a las 10:23:58.
Responder Con Cita
  #5  
Antiguo 10-10-2003
click click is offline
Miembro
 
Registrado: ago 2003
Posts: 34
Poder: 0
click Va por buen camino
ya logre realizar las consultas que necesito, pero ahora mi problema es que no eh logrado ver como paso el valor del sql osea la suma de toda la columna.

select sum(costo) from registro

quiero pasarlo a un edit.


agradezco sus comentarios
__________________
Saludos.
Responder Con Cita
  #6  
Antiguo 10-10-2003
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
La consulta te regresará un único registro con un único campo de manera que puedes acceder a él con;

Edit1.Text := Query1.Fields[0].AsString;

// Saludos
Responder Con Cita
  #7  
Antiguo 17-01-2005
click click is offline
Miembro
 
Registrado: ago 2003
Posts: 34
Poder: 0
click Va por buen camino
cadetill, aqui reviviendo este hilo

Hace ya año y medio me hechaste la mano con esta pregunta, pero eh perdido mi codigo y ahora toy rehaciendo mi programa, pero no recuerdo como lo solucione, pues con tu codigo expuesto aqui no me funciona hoy es decir, no logro hacer que en el dbgrid aparezca la informacion consultada y otra en el codigo utilizas en las ultimas lineas query me imagino que es query1.

Help...
__________________
Saludos.
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 19:44:04.


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