Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   como sumo una columan de una BD (https://www.clubdelphi.com/foros/showthread.php?t=3836)

click 22-09-2003 06:34:39

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
:confused:

Ruben_Cu 22-09-2003 07:02:32

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

click 22-09-2003 08:43:05

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


:)

__cadetill 22-09-2003 10:21:00

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)

click 10-10-2003 01:41:23

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

roman 10-10-2003 01:53:38

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

click 17-01-2005 04:07:55

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 :confused: 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...


La franja horaria es GMT +2. Ahora son las 06:58:57.

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