Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 24-07-2003
Carlos A Ortega Carlos A Ortega is offline
Miembro
 
Registrado: jul 2003
Ubicación: Guadalajara de Buba
Posts: 17
Poder: 0
Carlos A Ortega Va por buen camino
Consulta sql sobre campos calculados

Hola amigos, como hago para filtrar un campo calculado de un query?

Ejm:
Query3.close;
Query3.sql.Clear;
Query3.sql.add('SELECT *');
Query3.sql.add('FROM PgmCosecha A, Suertes B, Fincas C, Variedades D, CalleVias E');
Query3.sql.add('WHERE A.CodFin = B.CodFin');
Query3.sql.add('AND A.CodSue = B.CodSue');
Query3.sql.add('AND A.CodFin = C.CodFin');
Query3.sql.add('AND B.CodFin = C.CodFin');
Query3.sql.add('AND B.CodVia = E.CodVia');



//Tch
if length(Edit12.text) > 0 then
Query3.sql.add('AND TCHSUE >= '''+Edit12.text+'''');
Query3.open

EL campo TCHSUE es un campo calculado y da el mensaje:

TCHSUE, columna desconocida
__________________
Carlos A. Ortega Rios
Responder Con Cita
  #2  
Antiguo 24-07-2003
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
No te va a funcionar porque no te puedes referir a un campo calculado, que se va a armar en tiempo de ejecución.

Código:
Select Nombre,cpostal+poblacion as nuevo
from Clientes
where cpostal+poblacion  = '33201GIJON'
Prueba con este ejemplo y adáptalo, es decir de la misma forma que obtienes el campo calculado en la propia consulta te tienes que referir a él.

Un Saludo.
Responder Con Cita
  #3  
Antiguo 24-07-2003
Avatar de __marcsc
__marcsc __marcsc is offline
Miembro
 
Registrado: may 2003
Ubicación: Girona
Posts: 577
Poder: 22
__marcsc Va por buen camino
Hola,

si por campo calculado entiendes un campo calculado de la VCL que toma su valor en un evento OnCalcFields de un descendiente de TDataSet, lamento decirte que lo que quieres hacer es imposible, dado que en un Query solo puedes hacer referencia a campos físicos. Es lógico, pues piensa que los campos calculados se calculan después de ejecutar la sentencia SQL y a partir de los valores que se obtienen puedes calcularlos.

De todos modos si tu campo calculado es simple puedes hacer una cosa...

Imaginate que tienes una tabla de facturas. El total de la factura se obtiene de sumar la suma de los conceptos más los impuestos. Pues bien, eso se podría hacer en un CalcFields:

Código:
FieldByName('Total').AsFloat:= FieldByName('SumaConceptos').AsFloat + FieldByName('Impuestos').AsFloat
Sin embargo este es un campo calculado muy simple, que no seria necesario calcular en un calcFields dado que puedes calcularlo al vuelo en el propio SQL:

Código:
SELECT F.*, (SumaConceptos + Impuestos) AS Total
FROM Facturas F
WHERE SumaConceptos + Impuestos >= 1000
Por poner un ejemplo muy simple. En este caso estarías filtrando un campo calculado al vuelo en el SQL. De todos modos no siempre se podrá hacer de este modo ya que a veces hay campos calculados que no pueden hacerse así como así en un SQL.

Espero que te haya servido de ayuda.

Saludos.

EDIT: Marcos, te me has adelantado por muy poco
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 03:08:45.


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
Copyright 1996-2007 Club Delphi