PDA

Ver la Versión Completa : Problemas para mostrar campo calculado en Grid


whatson
10-03-2008, 21:43:15
Buen dia,
Estoy utilizando 2 tablas de MySql llamadas Zprods y ZProdsPaso.
con los campos de clave,descrip,precio
Estoy utilizando Delphi 7 y componentes Zeos.
Lo primero que hago es compararlas para filtrar los registros que no contiene la tabla de prods con estos parametros dentro del Zquery:

SELECT * FROM prodspaso LEFT JOIN prods
ON prodspaso.articulo = prods.articulo
WHERE prods.articulo IS NULL ;

Me funciona bien y lo despliego a un Grid para su posterior exportacion a excel.
Lo que no he podido lograr es poner una columna mas en el grid con el campo de precio * 1.15.

La conexion es la siguiente DataSorce1-Zquery1-DBGrid.

Hice en la ZtablaProdsPaso un campo calculado para que atravez de la conexion de mis componentes me pueda mostrar la columna con este valor calculado. Pero no logro hacer que Me aparezca el campo para agregarlo en el grid.

El desplegado de la informacion en el grid, logicamente se hace unicamente abriendo el Query ( ZQueryNuevos.Open).

No he podido localizar informacion para hacer esto. Les agradeceria que me pudieran ayudar. Si Me hace falta algun dato mas , con gusto Lo puedo proporcionar.

Gracias.

eduarcol
10-03-2008, 21:51:02
A ver, si logre entender deberia funcionar algo asi:

SELECT clave,descrip,precio, precio * 1.15 as preconimp FROM prodspaso LEFT JOIN prods
ON prodspaso.articulo = prods.articulo
WHERE prods.articulo IS NULL ;

whatson
11-03-2008, 00:21:33
Gracias por responder eduarcol.

En realidad si es el resultado que estoy buscando, pero Me manda un error:
SQL error column:'articulo' in field list is ambiguous.

Tengo este mismo campo en las dos tablas son indice principal en ambas.

eduarcol
11-03-2008, 01:06:02
y estas utilizando la instruccion tal cual esta arriba???, o le hicistes alguna modificacion??

whatson
11-03-2008, 01:37:37
Mira , este es el codigo que puse en el Query:


SELECT clave,descrip,precio, precio * 1.15 as precioventa FROM prodspaso
LEFT JOIN prods ON prodspaso.articulo = prods.articulo
WHERE prods.articulo IS NULL ;

mas o menos como Me lo dejaste, pero cambié preconimppor PRECIOVENTA que es un campo calculado en mi ZtableProdsPasoGracias por tu atension.

whatson
11-03-2008, 02:01:21
Muchas gracias por Tu ayuda.

Ya funciona.

Lo que hice fue utilizar en el query

<DIV class=frame_codigo_sql>Código SQL [-] (http://www.clubdelphi.com/foros/#)<DIV class=texto_codigo_sql id=sql_div_47d5d9b5b5f80>

eduarcol
11-03-2008, 02:01:55
Pero ya el error que mencionas viene dado por la setencia del JOIN, y alli no estoy muy puesto, asi que si otro compañero puede ayudarte :D

whatson
11-03-2008, 02:08:24
Muchas gracias por Tu ayuda.

Ya funciona.



Lo que hice fue utilizar en el query



SELECT * FROM prodspaso LEFT JOIN prods

ON prodspaso.articulo = prods.articulo

WHERE prods.articulo IS NULL



y le agregue a este mismo query un campo calculado.

y en el evento OnCalcFields puse :



ZQueryNuevosPRECIOVENTA.Value := ZQueryNuevosCOSTO_U.Value * 1.15;



y Me funciono.

Lo que estaba haciendo mal, creo, es de que hacia el campo calculado en la

ztableProsdsPaso.



Gracias de nuevo.

whatson
11-03-2008, 02:10:32
Disculpen que no le coloque las etiquetas para la sintaxis, Me da algunos errores.