Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-04-2006
Mauro.NET Mauro.NET is offline
Miembro
 
Registrado: mar 2005
Posts: 70
Poder: 20
Mauro.NET Va por buen camino
Claves compuestas en DBLookupComboBox

Hola amigos, como andan. Lo que planteo es un problema de flexibilidad sobre la programacion del componente DBLookupComboBox ante claves compuestas en el KeyField y DataField. Estas propiedades permiten especificar un solo campo nada más?. Intenté escribir los campos involucrados separados con coma pero no funciona. Parece que la única forma de hacerlo es programar sobre el evento OnChange del componente para guardar los campos clave del dataset origen en el data set destino, pero dificulta un poco el mantenimiento cuando esta situación se repite en varias instancias del sistema. Tal vez es mi costumbre de programar con objetos DataAware.

Para que entiendan la situacion, les ejemplifico las tablas:

FamiliaCta
ID_Rubro [CP]
ID_Familia [CP]
Descripcion

SubFamiliaCta
ID_Rubro [CP]
ID_Familia [CP]
ID_SubFamilia [CP]
Descripcion

Entonces las propiedades del componente desearía que fueran asi:

ListSource = dsFamilia
ListField = Descripcion
KeyField = ID_Rubro, ID_Familia
DataSource = dsSubFamilia
DataField = ID_Rubro, ID_Familia

También hice la prueba con el RxDBLookupCombo pero no tampoco pude.
En síntesis, necesito saber si es posible establecer más de un campo sobre las propiedades KeyField y DataField.

Mucha s Gracias
Responder Con Cita
  #2  
Antiguo 03-04-2006
Avatar de Chente(rMan)
Chente(rMan) Chente(rMan) is offline
Miembro
 
Registrado: ago 2005
Posts: 89
Poder: 19
Chente(rMan) Va por buen camino
Cita:
Que bueno que ya esta arriba el club de nuevo.
Bueno Mauro, que yo sepa eso no se puede hacer, aunque no lo he intentado, lo que si puedes hacer es mostrar en tu DBLookupComboBox, mas de un campo por ejemplo, a la propiedad ListField ponle esto ID_Rubro; ID_Familia; Descripcion y veras lo que pasa.



Saludos.
Responder Con Cita
  #3  
Antiguo 03-04-2006
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Saludos

1ro no pudes usar DataSource y ListSource al mismo tiempo es uno o otro. Y creo que para el caso es mejor usar ListSource.

KeyField no puede usar campos compuestos, pero si ListField separandolos por punto y coma ( ; ) .
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #4  
Antiguo 03-04-2006
Mauro.NET Mauro.NET is offline
Miembro
 
Registrado: mar 2005
Posts: 70
Poder: 20
Mauro.NET Va por buen camino
Perfecto amigos! me sacaron una gran duda de encima, y gracias por la calidad y la rapidés de sus respuestas... sigan asi.

Un saludo
Responder Con Cita
  #5  
Antiguo 03-04-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por vtdeleon
no pudes usar DataSource y ListSource al mismo tiempo es uno o otro.
Disculpa Van Troi, pero esto es incorrecto o no entiendo lo que quieres decir. Un DBLookupCombobox sirve, como cualquier otro control de datos, para editar el campo indicado por DataSource y DataField. ListSource corresponde al dataset que provee los valores a mostrar y cuyo KeyValue será el que se asigne al DataField. Lo cierto es que en ocasiones no nos interesa realmente editar un campo sino sólo mostrar los valores provenientes de un dataset. Entonces podemos prescindir de DataSource, pero no son opciones exclusivas una de otra.

// Saludos
Responder Con Cita
  #6  
Antiguo 03-04-2006
Avatar de Chente(rMan)
Chente(rMan) Chente(rMan) is offline
Miembro
 
Registrado: ago 2005
Posts: 89
Poder: 19
Chente(rMan) Va por buen camino
Cita:
Empezado por vtdeleon
Saludos
1ro no pudes usar DataSource y ListSource al mismo tiempo es uno o otro. Y creo que para el caso es mejor usar ListSource.
De hecho si se puedo, y es muy funcional, prueba a hacer unas pruebitas y te encantará.


Saludos.
Responder Con Cita
  #7  
Antiguo 04-04-2006
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Saludos

Cita:
De hecho si se puedo, y es muy funcional, prueba a hacer unas pruebitas y te encantará.
De que se puede, se puede.
Quizas me expresé mal, me referia a usar el mismo datasource para las propiedades ListSource y DataSource; no se ustedes pero a mi me da un error de "Circular datalink...", al momento de asignar el campo necesario.
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #8  
Antiguo 05-04-2006
Avatar de Jonnathan
Jonnathan Jonnathan is offline
Miembro
 
Registrado: may 2005
Ubicación: Isla de Margarita, Venezuela
Posts: 64
Poder: 19
Jonnathan Va por buen camino
Les comento que esto de usar claves compuestas hubiese sido muy util si lo hubiesen colocado directamente pero no fue asi, el lookup solo admite un campo para relacionar ambas tablas. Sin embargo estoy trabajando en una aplicación donde necesitaba algo asi, así que la alternativa que tuve fue crear un campo especial concatenando los valores de las claves compuestas en un TQuery. Por ejemplo:

Código:
SELECT
*, (ID_Rubro || ID_Familia) as RUBRO_FAMILIA
FROM FamiliaCta

SELECT
*, (ID_Rubro || ID_Familia) as RUBRO_FAMILIA
FROM SubFamiliaCta
Usas el campo RUBRO_FAMILIA como KeyField en el LookupCombo y listo, una clave compuesta . La única desventaja es que para actualizar esta consulta deberas usar objetos TUpdateSQL y llamadas a ApplyUpdates, pero ese es otro cuento, saludos.
__________________
"En el siglo de la estupidez todas las casas comienzan por la fachada" (Fuckowsky)
Planeta Insólito, La Pluma Inspirada
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
DBGrid columnas compuestas. chileno OOP 9 04-04-2006 00:31:42
Se puede hacer llaves compuestas en mysql.... uper MySQL 3 11-10-2005 22:26:37
Manipular claves con UDF jwmoreira Firebird e Interbase 1 28-07-2005 22:52:48
claves en tablas no paradox soloriv Tablas planas 0 25-03-2005 14:26:21
ComboBox y claves compuestas Roy Varios 4 04-07-2003 11:36:23


La franja horaria es GMT +2. Ahora son las 22:27:29.


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