Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Tablas planas (https://www.clubdelphi.com/foros/forumdisplay.php?f=20)
-   -   Sumar Columnas (https://www.clubdelphi.com/foros/showthread.php?t=35883)

leodelca23 25-09-2006 19:02:27

Sumar Columnas
 
Hola a todos, Tengo un problema tengo una tabla Código SQL [-]CREATE TABLE "TELAS" ( "CLIENTE" VARCHAR(30) NOT NULL, "PO" VARCHAR(20) NOT NULL, "FECHA_EMISION" DATE NOT NULL, "DESCRIPCION1" VARCHAR(55) NOT NULL, "DESCRIPCION2" VARCHAR(55), "CANTIDADES_PEDIDAS" INTEGER NOT NULL, "CANTIDADES_HECHAS" INTEGER NOT NULL, "FECHA_PROMETIDA" DATE NOT NULL );

a esa le agrege un campo un campo total tipo calculated en delphi que me obtiene la diferencia entre cantidades pedidas y cantidades hechas y funciona bien.

Cantidades_faltantes = Cantidades_Pedidas - Cantidades_Hechas;

Bueno hago consultas a traves de un query y quiero que este query me muestre la sumatoria en un dbedit o un edit de las cantidades faltantes

lei por ahi que se utiliza algo asi
Código SQL [-]
Select *  sum(Cantidades_faltantes)
from Telas

No se como hago para asignarle la sumatoria a total o se puede poner directamente en el dbedit
Gracias a todos

Saludos

Caral 25-09-2006 19:21:50

Hola
Es muy simple el dbedit enlazalo al datasorce que a su vez se enlaza al query y ya, veras este dato en el dbedit.
Saludos

leodelca23 25-09-2006 19:23:17

si pero como hago para hacer la suma y todo eso y al dbedit le asigno el campo total ??

Caral 25-09-2006 19:29:23

Creo que asi:
Código SQL [-]
Select *  sum(Cantidades_faltantes) as Total
from Telas
Si es lo que me preguntas, no entiendo bien lo que quieres hacer
Saludos

Caral 25-09-2006 19:33:04

Perdona creo que es asi:
Código SQL [-]
Select sum(Cantidades_faltantes) as Total
from Telas
Sin el asterisco
Saludos

leodelca23 25-09-2006 19:48:26

mira no me funciona
 
Mira caral ahi te pongo mas datos a ver si te ayuda:

tengo un query para hacer la consulta dentro del query tengo
Código SQL [-]
SELECT Telas.*, Descripcion.*
FROM Telas INNER JOIN Descripcion
ON Telas.Descripcion1 = Descripcion.Descripcion;
esta es la tabla telas

Código SQL [-]
CREATE TABLE "TELAS" 
(
  "CLIENTE"    VARCHAR(30) NOT NULL,
  "PO"    VARCHAR(20) NOT NULL,
  "FECHA_EMISION"    DATE NOT NULL,
  "DESCRIPCION1"    VARCHAR(55) NOT NULL,
  "DESCRIPCION2"    VARCHAR(55),
  "CANTIDADES_PEDIDAS"    INTEGER NOT NULL,
  "CANTIDADES_HECHAS"    INTEGER NOT NULL,
  "FECHA_PROMETIDA"    DATE NOT NULL
);
tabla descrpicion
Código SQL [-]
CREATE TABLE "DESCRIPCION" 
(
  "DESCRIPCION"    VARCHAR(50),
  "ESTILO"    VARCHAR(25),
  "COLOR1"    VARCHAR(25),
  "COLOR2"    VARCHAR(25),
  "COLOR3"    VARCHAR(25),
  "COLOR4"    VARCHAR(25),
  "COLOR5"    VARCHAR(25),
  "FOLDLINE"    VARCHAR(25)
);

Bueno la cosa es asi como no cree el dato de Cantidades_Faltantes lo agrege en el query el campo tipo calculate y en el evento oncalcfields hice que me calculara lso datos y lo hace perfectamente.
Código SQL [-]
With DataSet do
  begin
   Fieldbyname('Cantidades_Faltantes').Asinteger:=FieldByName
          ('Cantidades_Pedidas').Asinteger - FieldByName('Cantidades_Hechas').Asinteger;
  end;

Lo que yo quiero hacer que me de la sumatoria de las cantidades_faltantes que la ponga en el dbedit. No se si asi quedo mas claro sino me preguntas y te pongo mas info creo que eso es suficiente.

Caral 25-09-2006 19:57:05

Le pides peras al olmo: Esto se llama de aprendiz a aprendiz, haber que sale:
Código SQL [-]
With DataSet do
  begin
   Fieldbyname('Cantidades_Faltantes').Asinteger:=FieldByName
          ('Cantidades_Pedidas').Asinteger - FieldByName('Cantidades_Hechas').Asinteger;
DBEdit1.Text:= FieldByName('Cantidades_Hechas').Asinteger;
  end;
o
Código SQL [-]
With DataSet do
  begin
   Fieldbyname('Cantidades_Faltantes').Asinteger:=FieldByName
          ('Cantidades_Pedidas').Asinteger - FieldByName('Cantidades_Hechas').Asinteger;
Edit1.Text:= FieldByName('Cantidades_Hechas').Asinteger;
  end;
Asi te pondra en ese evento el valor del dato en el dbedit o en el edit.
Veamos y me cuentas
saludos

leodelca23 25-09-2006 20:07:59

mira pero lo que quiero poner es las sumatoria de cantidades_faltantes . y con lo que me diste vos si lo modifico asi me muestra la ultima cantidad_hechas
Código SQL [-]
With DataSet do
  begin
   Fieldbyname('Cantidades_Faltantes').Asinteger:=FieldByName
          ('Cantidades_Pedidas').Asinteger - FieldByName('Cantidades_Hechas').Asinteger;
   DBEdit1.Text:= FieldByName('Cantidades_Hechas').Asstring;
  end;

end;
pero como te digo quiero la suma de eso gracias,
Saludos

Caral 25-09-2006 20:17:29

Bueno quiere decir que te da esa:
Bueno pon la otra y ya:
Código SQL [-]
With DataSet do
  begin
   Fieldbyname('Cantidades_Faltantes').Asinteger:=FieldByName
          ('Cantidades_Pedidas').Asinteger - FieldByName('Cantidades_Hechas').Asinteger;
   Edit1.Text:= Fieldbyname('Cantidades_Faltantes').Asinteger;
  end;
La verdad el dato yo lo pondria en un edit no en un dbedit ya que confunde
Saludos

leodelca23 25-09-2006 20:20:35

mira si pero de esa forma me muestra nada mas el ultimo dato no la sumatoria de todos, he ledio por ahi de lo de sum pero no me funciona.

Caral 25-09-2006 20:24:34

Perdona que motor de base de datos usas?

leodelca23 25-09-2006 20:26:16

Uso interbase

Caral 25-09-2006 20:42:04

Pueba:
Código SQL [-]
AdoQuery1.Close;
AdoQuery1.Clear;
AdoQuery.Sql.Add('Select sum(Cantidades_Pedidas - Cantidades_Hechas) as Cantidades_faltantes');
AdoQuery.Sql.Add('from Telas');
AdoQuery1.Open;
Edit.text:= (Cantidades_Faltantes).Asinteger;
Esto hace lo mismo que el evento calculate solo que sql y lo pones en donde quieras hasta en un boton o en oncreate, pruebalo
Saludos

leodelca23 25-09-2006 20:51:05

mira no se puede porque de esa forma pierdo el join con la tabla descripcion , gracias saludos

Caral 25-09-2006 20:53:30

o Esto:
Código SQL [-]
SELECT ALL sum(Cantidades_Pedidas - Cantidades_Hechas) as Cantidades_faltantes 
FROM Telas INNER JOIN Descripcion
ON Telas.Descripcion1 = Descripcion.Descripcion;
o
Código SQL [-]
SELECT * sum(Cantidades_Pedidas - Cantidades_Hechas) as Cantidades_faltantes 
FROM Telas INNER JOIN Descripcion
ON Telas.Descripcion1 = Descripcion.Descripcion;
Prueba
Saludos

leodelca23 25-09-2006 21:12:49

mira lo probe y no funciono que hago?

Caral 25-09-2006 21:14:19

Esto es practicamente lo mismo:
En el Query1 que tienes pon:
Código SQL [-]
SELECT Telas.* sum(Cantidades_Pedidas - Cantidades_Hechas) as Cantidades_faltantes, Descripcion.*
FROM Telas INNER JOIN Descripcion
ON Telas.Descripcion1 = Descripcion.Descripcion;
Con un edit y un boton, pon en el evento on click del boton:
Código Delphi [-]
Edit1.Text := Query1.FieldByName('Cantidades_faltantes').AsInteger;
Asi funciona
Saludos

leodelca23 25-09-2006 22:05:48

mira lo solucione
 
Cree otro query y puse
Código SQL [-]
IBQ.Close;
IBQ.Sql.Clear;
IBQ.SQL.Add('SELECT sum(Cantidades_Pedidas - Cantidades_Hechas) as total FROM Telas INNER JOIN Descripcion ON Telas.Descripcion1 = Descripcion.Descripcion where Telas.descripcion1 ='+quotedstr(Edit2.text));
IBQ.Open;
dbedit1.Visible:=true;

muchas gracias por toda la ayuda de todos.


La franja horaria es GMT +2. Ahora son las 02:37:45.

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