PDA

Ver la Versión Completa : campo calculado (sum) no existe


anubis
18-10-2011, 13:49:19
Hola de nuevo,

Tengo las siguientes lineas y no se que esta mal porque al ejecutar me dice que no existe el campo suma11

ZQUERY1.sql.clear;
ZQUERY1.SQL.Text:='select sum(cmonto) as suma11 FROM tcheques';
ZQUERY1.active:=true;
LABEL2.CAPTION:=FloatToStrF((ZQUERY1.fieldbyname('suma11').asfloat),ffcurrency,8,2);

Ya estuve investigando en el foro respecto a esto y al parecer es la misma estructura.

Lo había usado en otro programa y si funcionaba.

Uso sqlite3.

saludos y gracias

marcoszorrilla
18-10-2011, 15:28:59
Prueba esto a ver.

Var
n: Double;
ZQUERY1.sql.clear; ZQUERY1.SQL.Text:='select sum(cmonto) as suma11 FROM tcheques'; ZQUERY1.active:=true;
N:=ZQUERY1.fieldbyname('suma11').asfloat;
LABEL2.CAPTION:=FloatToStrF(n,ffcurrency,8,2);


Un Saludo.

anubis
18-10-2011, 16:28:17
Gracias por el interes.

La verdad es que he probado de varias formas y no hay manera que me lo reconozca como campo.
Estoy probando con un form nuevo y solo he puesto lo necesario para probar,

lo raro es que en otra aplicacion (que en su dia pregunte) me funcionaba sin problema.

algo me falta o me sobra o nose.

No creo que sea cosa del sqlite3 o si, inclusive he quitado el autocalcfields pero nada, asi que lo volvi a dejar como estaba.

que cosas me pasan!!!!!!

marcoszorrilla
18-10-2011, 16:31:04
A ver si va a ser sensible a mayúsculas, prueba SUMA11.

Un Saludo.

anubis
18-10-2011, 17:04:58
Ya lo probe pero seguia igual.

Ya averigue lo que paso realmente:

Si no edito los campos en el zquery1, si me lo reconoce el campo "extra", pero si los edito, al no figurar el campo extra pues da error.

lo que no entiendo entonces:
ZQUERY1.sql.clear;
ZQUERY1.SQL.Text:='select sum(cmonto) as suma11 FROM tcheques';
ZQUERY1.open;
LABEL2.CAPTION:=FloatToStrF(zquery1.Fieldbyname('suma11').asfloat,ffcurrency,8,2);
ZQUERY1.SQL.Clear;
ZQUERY1.SQL.TEXT:='select * from tcheques';
zquery1.active:=true;


porque despues de asignar el campo suma, tengo que volver a poner todo el select para ver todos los registros.

oscarac
18-10-2011, 17:12:26
has una cosa

dale doble click al componente del query y agregale el campo suma11
luego comentas

ecfisa
18-10-2011, 19:13:12
Hola.

Una manera que desligará cualquier problema con la consulta de tu query (ZQUERY1) es hacerte una función y dentro de ella crear una consulta al vuelo.
No conozco los componentes Zeos de modo que te hago un ejemplo con IBX. Quizá debas reemplazar el nombre de alguna propiedad, pero creo que en líneas generales da la idea:

function SumarCheques: Double;
begin
with TIBQuery.Create(nil) do // aca iría TZQuery.Create(nil)
try
Database:= DataModule1.IBDatabase; // aca iría tu componente database
SQL.Text:= 'SELECT SUM(CMONTO) AS MONTOTOTAL FROM TCHEQUES';
Open;
Result:= FieldByName('MONTOTOTAL').AsFloat;
finally
Free;
end;
end;


Ejemplo de llamada:

ShowMessage(FloatToStr(SumarCheques));


Un saludo.

anubis
18-10-2011, 20:59:02
Amigos, ya esta solucionado,

la solucion estriba, como me comentais, en añadirle un campo al query, y con eso ya esta.

La pregunta es si esto mismo, de añadir y ligar campos se pueda hacer directamente por codigo en vez de usar el dobleclick en el query.

gracias a todos por vuestras prontas respuestas