Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Actualizar campo con dblookupcombobox (https://www.clubdelphi.com/foros/showthread.php?t=74303)

MLROJO 10-06-2011 16:01:14

Actualizar campo con dblookupcombobox
 
Hola a todos,

Os comento, estoy intentando hacer algo que pensaba que era simple y veo que se me atranca..

Tengo tres TQuerys con sus respectivos TDataSource, cada uno hace referencia a una tabla (categorias, codigos, gestionDocumental).

He creado un formulario para crear registros que se guardarán en la tabla gestionDocumental donde mediante un dblookupcombobox puedo alimentar tanto el código como la categoria, y mediante TDBEdits los demas campos.

Cuando creo un nuevo registro, selecciono en los dblookupcombobox el valor que quiero, es decir, la categoria y codigo donde quiero asignar el registro, informo los demás campos y guardo sin problema.

El problema lo tengo cuando intento modificar uno de estos campos (categoria o codigo), ya que cuando selecciono otro registro en el dblookupcombobox, cancela la edición del que estoy editando y crea un nuevo registro.

Supongo que se me estará escapando algun parámetro o alguna opción, porque aunque hasta ahora nunca habia usado el dblookupcombox supongo que permitirá hacer lo que comento, pero como digo, en algo fallo.

Los parámetros que he configurado en cada dblookupcombox son:

DataField : Campo de la tabla gestionDocumental, es decir, de la tabla donde quiero guardar el registro
Datasource : Datasource que hace referencia a la tabla de gestión documental.

KeyField : Clave del campo que quiero mostrar, es decir, lo que se guardará realmente en la base de datos en la tabla de gestionDocumental
ListField : Campo que quiero mostrar de la tabla (codigos, categorias)
ListSource : DataSource que hace referencia al campo del cual quiero mostrar los registros existentes (categoria, codigos)

¿Alguna idea?

Muchas gracias,

Saludos.

Chris 10-06-2011 18:57:02

Parece cómo que el problema que tienes es en los ListDatasource, o mejor dicho, las tablas de dónde los TDBLookupCombo's obtienen sus datos. Revisa si hay alguna relación maestro detalle en ellas o algo por el estilo. Además revisa los eventos OnAfterScroll, OnBeforeScroll o algo similar. A cómo lo muestras, las configuraciones del Datasource y ListSource están a cómo deben ser.

Saludos,
Chris

MLROJO 10-06-2011 19:47:00

Hola de nuevo,

Como bien dices, la query está con maestro detalle con otra ya que son las que uso en toda la aplicación. Suponía que valían las mismas, pero parece que no, probaré creando consultas independientes a ver si ese es el problema.

Ya os diré que tal.

Gracias,

Saludos.

MLROJO 12-06-2011 03:15:01

Hola de nuevo,

Finalmente creé los lookups con consultas que no tienen ninguna vinculación y así funciona correctamente.

Gracias,

Saludos.

waly2k1 18-06-2011 10:37:00

Controles enlazados a datos
 
Yo personalmente trabajo y sugiero trabajar con controles NO enlazados a
datos, los dblockupcombobox uso solo con las propiedades de listsource y
no datasource y usando keyvalue para posicionar el elemento, los cuadros
de textos son edit comunes o equivalente en otros componentes y no DBEdit.
La inserción, actualización y eliminación las realizo por SQL siempre, ya sea
ejecutando consultas con parametros o Stored Procedures.
Mas de una vez te generan problemas las actualizaciones con controles
enlazados sobre todo en base de datos "profesionales".
Es preferible llevar uno el control de la aplicación y no depender de ciertos
objetos, manejar las transacciones y si todo sale bien commit sino rollback
y no que queden actualizaciones a medias y/o registros huérfanos.

En fin, es mi humilde opinión y sugerencia.
Saludos y exitos!
Walter


La franja horaria es GMT +2. Ahora son las 09:51:35.

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