Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 24-10-2008
andresenlared andresenlared is offline
Miembro
 
Registrado: oct 2003
Posts: 153
Poder: 21
andresenlared Va por buen camino
Crear campo calculado en tiempo de ejecucion-Ibquery

Saludos amigos...

El problema es el siguiente.

Tengo almacenado en un campo de base de datos un SQL que luedo es cargado a un Ibquery para ser usado como fuente de datos para un reporte.

Dependiendo de un parametro que uso en la tabla que almacena el SQL necesito crear dos campos calculados informacion que es traida desde otras bases de datos.

he esdo buscando pero no encuentro la forma de hacerlo.

Me pueden ayudar ???...muchas garcias.
__________________
Popayán-Colombia
Responder Con Cita
  #2  
Antiguo 24-10-2008
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 29
jhonny Va camino a la famajhonny Va camino a la fama
Sinceramente en lo personal no entendi muy bien el asunto, ¿Podrias ponerlo mas claro?
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #3  
Antiguo 24-10-2008
andresenlared andresenlared is offline
Miembro
 
Registrado: oct 2003
Posts: 153
Poder: 21
andresenlared Va por buen camino
Gracias por contestar.

la idea es que al crear un sql en tiempo de ejecucion y se le asigna a un Ibquery. Los campos del sql pueden variar, pero necesito poner dos campos calculados sobre el Ibquery tambien en tiempo de ejecucion.

Gracias.
__________________
Popayán-Colombia
Responder Con Cita
  #4  
Antiguo 24-10-2008
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 29
jhonny Va camino a la famajhonny Va camino a la fama
Para crear un campo calculado en ejecución en un DataSet, puedes hacer lo siguiente... donde DataSet1 es tu Dataset...

Código Delphi [-]
var
  Campo :TFloatField;
begin
  Campo                 := TFloatField.Create(DataSet1);
  Campo.FieldName       := 'MiCampoCalculado';
  Campo.FieldKind       := fkCalculated;
  Campo.DataSet         := DataSet1;
end;
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #5  
Antiguo 24-10-2008
andresenlared andresenlared is offline
Miembro
 
Registrado: oct 2003
Posts: 153
Poder: 21
andresenlared Va por buen camino
Gracias....

Tu solucion me funciono, y crea el campo calculado pero si tengo cargados todos los campos del query, como son querys que se crean en tiempo de ejecucion tendria que cargar los campos en tiempo de ejecucion...como puedo hacer esta parte ??

y de nuevo gracias por tu ayuda.
__________________
Popayán-Colombia
Responder Con Cita
  #6  
Antiguo 24-10-2008
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 29
jhonny Va camino a la famajhonny Va camino a la fama
Pues al abrir la consulta tu TQuery cargara todos esos campos automaticamente... en el orden de ideas sera despues de esto cuando puedes crear el campo calculado.
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #7  
Antiguo 18-06-2014
Avatar de anubis
anubis anubis is offline
Miembro
 
Registrado: mar 2007
Posts: 863
Poder: 18
anubis Va por buen camino
Perdonad que reabra esta consulta,

Exactamente donde se crea el campo calculado, en el evento oncalcfields del query?.

Antes lo hacia directamente en el query en tiempo de diseño, era mas facil desde el mismo query pero por codigo se me complica.

Perdon yo uso los componentes zeos pero imagino que es lo mismo.
Responder Con Cita
  #8  
Antiguo 18-06-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.039
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Lo crea donde quieras.
Se calcula en el oncalcfields
Responder Con Cita
  #9  
Antiguo 18-06-2014
Avatar de anubis
anubis anubis is offline
Miembro
 
Registrado: mar 2007
Posts: 863
Poder: 18
anubis Va por buen camino
gracias por contestar,

si aplico la creacion de un campocalculado como esta arriba, y llamo al procedimiento, antes claro de activar el dataset, el resto de campos del query me da error porque no los encuentra.

Quiere decir que tengo que cargar cada campo entonces?.

de todas formas haciendolo:
Código Delphi [-]
Campo                          := TstringtField.Create(zquery1);  
Campo.FieldName        := 'nombreproducto';  
Campo.FieldKind          := fkdata;   
Campo.DataSet           := zquery1;

me da error que el nombreproducto no existe en el query

Última edición por anubis fecha: 18-06-2014 a las 22:30:40.
Responder Con Cita
  #10  
Antiguo 18-06-2014
Avatar de anubis
anubis anubis is offline
Miembro
 
Registrado: mar 2007
Posts: 863
Poder: 18
anubis Va por buen camino
Perdon,

Efectivamente, si creo por codigo un calculado, tengo que cargar todos los campos del query primero.

Y, ya puestos.

Si tengo el codigo de un producto por ejemplo en un query y lo quiero mostrar en otro dbgrid pero por el nombre, tambien es un campo calculado no?.
Responder Con Cita
  #11  
Antiguo 18-06-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.039
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Un campo calculado es, por ejemplo, si tienes los campos "cantidad" y "precio" y quieres presentar el resultado de multiplicar ambos. Es un campo que no existe en la base de datos.
Responder Con Cita
  #12  
Antiguo 19-06-2014
Avatar de anubis
anubis anubis is offline
Miembro
 
Registrado: mar 2007
Posts: 863
Poder: 18
anubis Va por buen camino
sí perdón me lie solo. el enlace de un query con otro es meter un campo calculado para poder usarlo en dbgrid
Responder Con Cita
  #13  
Antiguo 19-06-2014
Avatar de anubis
anubis anubis is offline
Miembro
 
Registrado: mar 2007
Posts: 863
Poder: 18
anubis Va por buen camino
Como no puedo editar, me respondo, para enlazar dos querys he creado un campo fklookup

Código Delphi [-]
procedure tform1.crearenlaceenquery;
var
campo:tstringfield;
begin
 Campo                    := TstringField.Create(fmodulo.zqcompras);
   Campo.FieldName          := 'nombres';
   Campo.FieldKind          := fklookup;
   campo.KeyFields          :='id_producto';
   campo.LookupDataSet      :=fmodulo.zqproductos;
   campo.LookupKeyFields    :='id_producto';
   campo.LookupResultField  :='nombreproducto';
   Campo.DataSet            := fmodulo.zqcompras;
end;

nombres es el campo de busqueda,
id_producto en el keyfields es el campo con el que se relaciona compras con productos
id_producto en el lookupkeyfields es el campo primary key donde busca en productos
nombreproducto es el resultante.

para poder ver el nombre del producto en vez del id_producto en el dbgrid, asignamos el campo nombres.

No se si a alguien le ayude esto, pero lo comparto por si sirve.

Gracias a todos por vuestra ayuda.
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
añadir un campo calculado a un ibquery eduardo360 Conexión con bases de datos 2 18-02-2008 23:39:34
crear campo calculado en dbgrid tesorillo3 MySQL 0 01-02-2007 00:36:29
Crear Campo Calculado yusnerqui Varios 2 13-04-2004 16:54:58
Filtrar un campo calculado de un IBQUERY plmperez Conexión con bases de datos 1 18-02-2004 09:43:43


La franja horaria es GMT +2. Ahora son las 03:13:05.


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