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-05-2011
RedVenom RedVenom is offline
Miembro
 
Registrado: oct 2003
Ubicación: Tabasco, Mexico
Posts: 110
Poder: 21
RedVenom Va por buen camino
saber el valor de un campo lookup de un dataset

Tengo un problemita, tengo un dataset en el que cree un campo LookUp y el cual agregue a un DBGrid ahora deseo saber cuando cambian el valor del campo lookup osea en un LookUpComboBox lo obtendria con LookUpComboBox.KeyValue en el caso del campo LookUp como puedo obtener el valor del LookUpKeyFields.
Espero Poder haberme expresado correctamente.
Gracias de antemano por su orientacion.
Responder Con Cita
  #2  
Antiguo 24-05-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola RedVenom.

No sé si estoy entendiendo bién lo que buscas obtener, por lo que te pongo un código de ejemplo donde se obtienen diferentes valores del campo Lookup que has creado en el DataSet.

Suponiendo que el campo se llame 'Lookup' sería:
Código Delphi [-]
begin
 if DataSet.FieldByName('Lookup').Lookup then
  with Memo1.Lines do
  begin
    Add('Nombre: '+DataSet.FieldByName('Lookup').Name);
    Add('Valor : '+DataSet.FieldByName('Lookup').AsString);
    Add('Tabla Lookup: '+DataSet.FieldByName('Lookup').LookupDataSet.Name);
    Add('Campo Lookup: '+DataSet.FieldByName('Lookup').LookupKeyFields);
    Add('Lookup result: '+DataSet.FieldByName('Lookup').LookupResultField);
    if DataSet.FieldByName('Lookup').LookupCache then
      Add('Lockup Cache: Activada')
    else
      Add('Lookup Cache: Desactivada');
  end;
end;

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 24-05-2011
RedVenom RedVenom is offline
Miembro
 
Registrado: oct 2003
Ubicación: Tabasco, Mexico
Posts: 110
Poder: 21
RedVenom Va por buen camino
No el campo no se llama LookUp desde el editor de campos del DataSet cree un campo tipo LookUp y quier extraer el valor en el DBGrid Como si se tratara de un DBLookUpComboBox.
Responder Con Cita
  #4  
Antiguo 24-05-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.
Cita:
No el campo no se llama LookUp
Era de esperar...

Es por eso que dije:
Cita:
Suponiendo que el campo se llame 'Lookup'
La información obtenible de ese campo está en el mensaje anterior.

En cuanto a la aparición del valor en el DBGrid, cuando creas el campo lookup aparece automáticamente.
Pero no es así, si como comentas arriba, creaste los campos con el editor de columnas. En ese caso, desde el editor de columnas, sólo tenés que poner 'NombreDelCampoLookup' a la propiedad FieldName de la colúmna que agregaste para ese campo. (También podés elegirlo haciendo click como si fuese un ComboBox)

O por código, por ejemplo:
Código Delphi [-]
// Suponiendo que el campo Lookup corresponda a la última columna creada:
  DBGrid1.Columns[DBGrid1.Columns.Count-1].FieldName:= 'NombreDelCampoLookup';

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 24-05-2011 a las 05:14:15.
Responder Con Cita
  #5  
Antiguo 24-05-2011
RedVenom RedVenom is offline
Miembro
 
Registrado: oct 2003
Ubicación: Tabasco, Mexico
Posts: 110
Poder: 21
RedVenom Va por buen camino
Disculpen, creo que no me estoy dando a entender, ahi va de nuevo tengo un dataset1 y en ese dataset1 cree un campo calculado de tipo LookUp que alimenta sus propiedades LookUpKeyFields y LookUpResultField desde el dataset2 y luego el campo calculado que cree lo muestro a traves de un DBGrid y efectivamente el campo em lo muestra como un ComboBox hasta ahi todo bien el problema que tengo es que cuando en el DBGrid desplieguen el ComboBox y pongan o cambien el valor yo quiero obtener el valor real que se va a guardar en el campo no el que se muestra ya que ese es para que el usuario sepa lo que esta agregand a la base de datos, entonces en el caso de un DBLookUpComboBox lo obtengo con KeyValue pero en este caso con el campo calculado que esta en el DBGrid no se como obtenerlo.
Espero haberme explicado mejor.
Responder Con Cita
  #6  
Antiguo 24-05-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola RedVenom.

Lo que buscas obtener... ¿ Es el valor por el cuál están relacionadas las propiedades KeyFields y LookupKeyFields ?

Si es así sencillamente sería:
Código Delphi [-]
  DataSet1.FieldByName('Cpo_Referencia').Value;
O desde el DBGrid:
Código Delphi [-]
  DBGrid1.DataSource.DataSet1.FieldByName('Cpo_Referencia').Value;
Para el ejemplo le puse el nombre: 'Cpo_Referencia', al campo declarado como KeyFields.

Si no es eso, me doy .

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 24-05-2011 a las 11:15:18.
Responder Con Cita
  #7  
Antiguo 24-05-2011
RedVenom RedVenom is offline
Miembro
 
Registrado: oct 2003
Ubicación: Tabasco, Mexico
Posts: 110
Poder: 21
RedVenom Va por buen camino
De hecho asi es de ese modo puedo obtener el dato pero seria hasta de despues de hacer el Post antes el cambio que yo realize no se ve reflejado en la base de datos solo lo muestra el dbgrid solo lo vere hasta que afecte la base de datos y no deseo afectar la base de datos hasta antes de saber el valor. por eso hacia mencion al DBLookUpComboBox porque con ese se el valor sin afectar mi base de datos, pero no lo utilizo porque no aplica ya que son varios registros por eso pongo DBGrid.
Responder Con Cita
  #8  
Antiguo 26-05-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola RedVenom.
Cita:
el campo em lo muestra como un ComboBox hasta ahi todo bien el problema que tengo es que cuando en el DBGrid desplieguen el ComboBox y pongan o cambien el valor yo quiero obtener el valor real que se va a guardar en el campo...
Tengo una duda... no me queda en claro si usas la propiedad PickList de Columns o lo haces mediante un ComboBox que incorporas al DBGrid.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #9  
Antiguo 26-05-2011
RedVenom RedVenom is offline
Miembro
 
Registrado: oct 2003
Ubicación: Tabasco, Mexico
Posts: 110
Poder: 21
RedVenom Va por buen camino
Lo hago a traves de un campo calculado del dataset, solo creo el campo en el dataset y solo aparece en el DBGrid, no utilizo la propiedad PickList del DBGrid.
Responder Con Cita
  #10  
Antiguo 26-05-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Abrí el Field Editor y poné este código de ejemplo en el evento OnChange del campo Lookup que creaste:
Código Delphi [-]
procedure TForm1.DataSet2CampoLookupChange(Sender: TField);
begin
  DataSet1.Locate('CampoRefDataSet1',DBGrid2.SelectedField.AsString,[]);
  (* Aca realizas las acciones que te interesen.
     En el ejemplo muestra el campo y aborta la operación *)
  ShowMessage(DataSet1CampoRefDataSet1.AsString);
  Abort;
end;
Podés usar el ejemplo tranquilo ya que aborta toda operación.

'DataSet2CampoLookup' es el nombre del campo calculado, 'DBGrid2' está referenciando a 'DataSet2' y 'CampoRefDataSet1' es el campo que está declarado en la propiedad KeyFields del campo calculado del 'DataSet2' y corresponde al 'DataSet1'.

Toda esta parafernalia sobre los nombres es necesaria por que desconozco cuales usaste.


Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 26-05-2011 a las 15:56:52.
Responder Con Cita
  #11  
Antiguo 17-09-2011
RedVenom RedVenom is offline
Miembro
 
Registrado: oct 2003
Ubicación: Tabasco, Mexico
Posts: 110
Poder: 21
RedVenom Va por buen camino
No pude ejecutar tu codigo como que le hace falta algo en el showmessage
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
Saber el valor de un Dataset jocey Conexión con bases de datos 3 30-11-2007 21:37:05
Usar campo LookUp como indice en DataSet amadis Conexión con bases de datos 4 17-05-2007 04:01:57
Campo Lookup con ADO David Bazan Conexión con bases de datos 0 14-07-2006 02:40:57
Saber el campo con valor mas alto ilichhernandez Conexión con bases de datos 2 10-11-2005 02:00:44
Campo Lookup ¥0n1 SQL 1 03-12-2004 23:40:10


La franja horaria es GMT +2. Ahora son las 16:11:07.


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