PDA

Ver la Versión Completa : error con mas de dos querys en un boton


douglas
28-07-2008, 17:29:30
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:

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?


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

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;