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)
-   -   error con mas de dos querys en un boton (https://www.clubdelphi.com/foros/showthread.php?t=58680)

douglas 28-07-2008 17:29:30

error con mas de dos querys en un boton
 
hola chicos miren aqui con una duda, estaba creando unas consultas para mi programa, basicamente son sumatorias de las tablas, pero al crear la sumatoria de mi tercer tabla me da el siguient error

error de sintaxis falta operador en sum(imp)

el codigo es el siguiente:
Código Delphi [-]

adoquery1.Close;
     adoquery1.SQL.Clear;
     adoquery1.SQL.Add('select sum(ganancia) from diario');
     adoquery1.SQL.Add('where fecha between :Fechain and :Fechafin');
     adoquery1.Parameters.ParamByName('Fechain').Value:=datetimepicker1.DateTime;
     adoquery1.Parameters.ParamByName('Fechafin').Value:=datetimepicker2.DateTime;
     adoquery1.Open;
     a:=adoquery1.Fields[0].AsFloat;
     adoquery1.Close;
     edit1.Text:=floattostr(a);

     adoquery1.Close;
     adoquery1.SQL.Clear;
     adoquery1.SQL.Add('select sum(capital) from diario');
     adoquery1.SQL.Add('where fecha between :Fechain and :Fechafin');
     adoquery1.Parameters.ParamByName('Fechain').Value:=datetimepicker1.DateTime;
     adoquery1.Parameters.ParamByName('Fechafin').Value:=datetimepicker2.DateTime;
     adoquery1.Open;
     b:=adoquery1.Fields[0].AsFloat;
     adoquery1.Close;
     edit2.Text:=floattostr(b);

     adoquery1.Close;
     adoquery1.SQL.Clear;
     adoquery1.SQL.Add('select sum(imp) from diario');
     adoquery1.SQL.Add('where fecha between :Fechain and :Fechafin');
     adoquery1.Parameters.ParamByName('Fechain').Value:=datetimepicker1.DateTime;
     adoquery1.Parameters.ParamByName('Fechafin').Value:=datetimepicker2.DateTime;
     adoquery1.Open;
     c:=adoquery1.Fields[0].AsFloat;
     adoquery1.Close;
     edit3.Text:=floattostr(c);

ContraVeneno 28-07-2008 18:43:23

¿por qué no lo haces en una sola consulta?

Código Delphi [-]
with adoquery1 do begin
 If active then close; 
 SQL.Clear;
 SQL.Add('select sum(ganancia) as ganancia, sum(capital) as capital, sum(imp) as imp from diario');
 SQL.Add('where fecha between :Fechain and :Fechafin');
 Parameters.ParamByName('Fechain').Value:=datetimepicker1.DateTime;
 Parameters.ParamByName('Fechafin').Value:=datetimepicker2.DateTime;
 Open;
 edtGanacia.Text:=floattostr(FieldByName('Ganacia').AsFloat);
 //edtganacia.Text := FieldByname('Ganacia').AsString;
 edtCapital.Text:=floattostr(FieldByName('Capital').AsFloat);
 edtImp.Text:=floattostr(FieldByName('Imp').AsFloat);
 Close;
end; //with

douglas 28-07-2008 18:45:25

gracias contraveneno lo aplico y te cuento enseguida amigo, gracias por responder amigo

douglas 28-07-2008 18:49:29

perdon contraveneno pero me sigue tirando el mismo error

falta operador en la consulta sum(imp) e imp es el nombre de uno de mis campos de mi tabla de la base de datos, mira que ya le di vuelta y pues la verdad no encuentro el error

douglas 28-07-2008 18:58:23

hola perdon, fijate que probe consultar las demas tablas y me las suma, el unico inconveniente es con el campo imp, podra ser el nombre, y revise los demas campos de mi tabla y pues, estan todos con las mismas propiedas, incluso imp, no entiendo porque me da el error?¿?¿? gracias por la ayuda

marcoszorrilla 28-07-2008 18:58:43

Prueba poniendo Imp entre corchetes Sum([IMP])

Un Saludo.

douglas 28-07-2008 19:02:11

gracias amigos del foro, funciono muy bien eso de los corchetes marcozorrilla gracias, de verdad gracias no sben del apuro que me han salvado, hey y como siempre dejo el codigo final, para que otro cualquier forista, ingrese encuentre medio detallado el problema y la solucion, gracias amigos gracias
Código Delphi [-]
   with adoquery1 do begin
 If active then close;
 SQL.Clear;
 SQL.Add('select sum(ganancia) as ganancia, sum(capital) as capital, sum([imp]) as imp, sum(gas) as gas from diario');
 SQL.Add('where fecha between :Fechain and :Fechafin');
 Parameters.ParamByName('Fechain').Value:=datetimepicker1.DateTime;
 Parameters.ParamByName('Fechafin').Value:=datetimepicker2.DateTime;
 Open;
 edit1.Text:=floattostr(FieldByName('Ganancia').AsFloat);
 edit2.Text:=floattostr(FieldByName('Capital').AsFloat);
 edit3.Text:=floattostr(FieldByName('imp').AsFloat);
 edit4.Text:=floattostr(FieldByName('gas').AsFloat);
 Close;


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

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