Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   sumatoria de una tabla mientras se cumpla una condicion (https://www.clubdelphi.com/foros/showthread.php?t=49739)

douglas 29-10-2007 04:53:46

sumatoria de una tabla mientras se cumpla una condicion
 
buenas chicos del foro, aqui miren como siempre molestandolos, necesito la ayuda a realizar lo siguiente:

1) quiero sumar todas las cantidades que tengo en un campo monto que concuerden con la fecha que el usuario desee saber, por favor chicos, loes agradecere mucho toda la ayuda que sea posible.

utilizo una tabla plana, con la cual conecto con un table de la pestaña BDE y un data source, intente conectar un query pero no me dejo, la tabla esta hecha en el database desktop en paradox 7, segun las indicaciones del programa que utilice.

de antemano muchas gracias.

marcoszorrilla 29-10-2007 07:02:15

Código SQL [-]
Sum(Monto)
From MiTabla
Where Fecha Between FechaIni and Fechafin

Un Saludo.

enecumene 29-10-2007 14:50:16

Cita:

Empezado por marcoszorrilla (Mensaje 241874)
Código SQL [-]Sum(Monto)
From MiTabla
Where Fecha Between FechaIni and Fechafin


Un Saludo.

Mejor respuesta que esta no puede haber.:p

douglas 29-10-2007 15:18:27

[IMG]file:///C:/DOCUME%7E1/douglas/CONFIG%7E1/Temp/moz-screenshot.jpg[/IMG]hey utilice el siguiente codigo:

Código Delphi [-]
procedure TForm3.Button1Click(Sender: TObject);
begin
query1.Active:=false;
query1.SQL.Text:='sum(monto)';
query1.SQL.Text:='from control del internet';
query1.SQL.Text:='where fecha betwen dbedit1.Text and dbedit1.Text';
query1.Active:=true;
end;
pero me tira este error

project cibereador.exe rised exception class edbengineerror with message 'invalid use for keyword token: where.

chicos es como la segunda ves que utilizo sql, perdon pero no se mucho sobre esto, asi que los molesto de nuevo con ayuda, de antemano les agradesco un monton.

enecumene 29-10-2007 15:24:52

Hola Douglas, intenta:

Código Delphi [-]
procedure TForm3.Button1Click(Sender: TObject);
begin
query1.Close;
query1.SQL.Text:='select sum(monto)';
query1.SQL.Text:='from Tabla';
query1.SQL.Text:='where fecha between :FechaIn and :FechaFin';
query1.parambyname('FechaIn').Value:=edit1.text;
query1.parambyname('FechaFin').Value:=edit2.text;
query1.Open;
end;

me imagino que "Control del internet" es el nombre de la tabla:confused::confused:.

Saludos

douglas 29-10-2007 16:04:26

oye perdon tanta molestadera pero me devuelve otro error es el mismo emnsaje que el anterio solo que ahora dice
query1: parameter fecha in not found;

eduarcol 29-10-2007 16:08:26

Tienes un error que es el nombre de la tabla, esta no deberia tener espacios, pero como esto sucede debes entonces encerrarla entre las comillas simples.

El error del parametro es porq no es lo mismo FechaIn a Fecha In, trata de n outilizar los espacios en nombre de tablas ni de variables.

douglas 29-10-2007 16:10:47

perdon lo escribi mal aqui en el foro, pero fechain lo tengo junto, mmm ahora probare con lo de la tabla, y lo comento por aqui, gracias eduardo col

eduarcol 29-10-2007 16:14:15

Cita:

Empezado por douglas (Mensaje 241952)
perdon lo escribi mal aqui en el foro, pero fechain lo tengo junto, mmm ahora probare con lo de la tabla, y lo comento por aqui, gracias eduardo col

Si lo tienes junto verifica que este escrito tal como lo escribio Enecumene

douglas 29-10-2007 16:18:00

sip asi lo tengo, y me tira erro en el where, sabes realmente lo que debo de hacer es, introducir una fecha, y luego que me tire el total de los montos en esa fecha, peron que te molete tanto, pero te agradezco mucho que me puedas ayudar

eduarcol 29-10-2007 16:20:19

copia el codigo que estas utilizando y pegalo aqui, estoy muy seguro que hay un error en la sentencia vamos a ver cual es

enecumene 29-10-2007 16:21:55

Hola Douglas, fijate me he dado cuenta que en el Where falta un espacio delante, asi:

Código Delphi [-]
query1.SQL.Text:=' where fecha between :FechaIn and :FechaFin';

porque sin el espacio la consulta queda junta asi:

Código SQL [-]
select sum(monto) from Tablawhere fecha between :FechaIn and :FechaFin

en vez de:

Código SQL [-]
select sum(monto) from Tabla where fecha between :FechaIn and :FechaFin

espero que te ayude.

Saludos

douglas 29-10-2007 16:26:01

ya lo aplique y me sigue tirando el erro te priject cibereador .exe y token where,

el codigo que estoy trabajando es este:
Código Delphi [-]
 
procedure TForm3.Button1Click(Sender: TObject);
var
FechaIn,FechaFin:string;
begin
query1.Close;
query1.SQL.Text:='select sum(monto)';
query1.SQL.Text:='from control del internet';
query1.SQL.Text:='where fecha between :FechaIn and :FechaFin';
query1.parambyname('FechaIn').Value:=edit1.text;
query1.parambyname('FechaFin').Value:=edit2.text;
query1.Open;
end;

enecumene 29-10-2007 16:30:27

Hombre eso no es necesario, debes quitarlo:

Código Delphi [-]
var
FechaIn,FechaFin:string;

y segundo no le veo el espacio por delante del where como te propuse, aparte de eso no le veo el problema.

intenta quitar los variables y poner el espacio delante del where.

SAludos.

douglas 29-10-2007 16:32:53

Código Delphi [-]
procedure TForm3.Button1Click(Sender: TObject);
begin
query1.Close;
query1.SQL.Text:='select sum(monto)';
query1.SQL.Text:='from control del internet ';
query1.SQL.Text:=' where fecha between :FechaIn and :FechaFin';
query1.parambyname('FechaIn').Value:=edit1.text;
query1.parambyname('FechaFin').Value:=edit2.text;
query1.Open;
end;

aqui esta manix perdon por lo de las variables, pero ya probe y sigue dandome el mismo error, perdomn que te ponga tantas molestias

eduarcol 29-10-2007 16:33:19

jeje. el error esta que si tu modificas la propiedad TEXT modificas toda la sentencia, lo que tu quieres se logra con ADD

prueba esto

Código Delphi [-]
procedure TForm3.Button1Click(Sender: TObject);
begin
   query1.Close;
   query1.SQL.Add('select sum(monto)');
   query1.SQL.Add(' from ' + QuotedStr('control del internet'));
   query1.SQL.Add(' where fecha between :FechaIn and :FechaFin');
   query1.parambyname('FechaIn').Value:=edit1.text;
   query1.parambyname('FechaFin').Value:=edit2.text;
   query1.Open;
end;

lo de las variables tienes que quitarlo

enecumene 29-10-2007 16:36:56

Conchole, yo sabia que algo raro era, no me habia fijado que decia text en vez de Add, debo leer un poco mas o es que mi vista ya esta dando vestigios de vejez a mis 28 añitos?:(

Saludos.

douglas 29-10-2007 16:41:02

perdon chicos, pero ahora me da error en el select, les escribo el error, y perdon ya hasta verguenza me da molestarlo, es que deplano si los estoy molestando muchisimo, perdon, pero este es el error:

invalid use of keyword. token:select

como ven ahora es en el select
perdon les envio como tengo mi codigo ahora

Código Delphi [-]
procedure TForm3.Button1Click(Sender: TObject);
begin
   query1.Close;
   query1.SQL.Add('select sum(monto)');
   query1.SQL.Add(' from ' + QuotedStr('control del internet'));
   query1.SQL.Add(' where fecha between :FechaIn and :FechaFin');
   query1.parambyname('FechaIn').Value:=edit1.text;
   query1.parambyname('FechaFin').Value:=edit2.text;
   query1.Open;
end;

eduarcol 29-10-2007 16:48:09

debes limpiar la lista


Código Delphi [-]
procedure TForm3.Button1Click(Sender: TObject);
begin
   query1.Close;
   query1.SQL.Clear;
   query1.SQL.Add('select sum(monto)');
   query1.SQL.Add(' from ' + QuotedStr('control del internet'));
   query1.SQL.Add(' where fecha between :FechaIn and :FechaFin');
   query1.parambyname('FechaIn').Value:=edit1.text;
   query1.parambyname('FechaFin').Value:=edit2.text;
   query1.Open;
end;

Caral 29-10-2007 17:30:46

Hola
Con que estableces la fecha?, (datetimepicker o Edit)?
Donde la seleccionas de uno o de dos?
En la tabla existe el campo fecha o es texto?
Paradox permite el parambyname solo?
Por que no hacer la suma por separado?
Bueno, yo tengo esas dudas
Saludos


La franja horaria es GMT +2. Ahora son las 01:21:28.

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