FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Locate problemas con master/detail
Hola, estoy utilizando el método locate para buscar un registro en un clientdataset que es maestro y me está arrojando un error de "Key violation".
Maestro: cds_Embalajes/idEmbalaje Detalle: cds_VentaItems/embalajeId El código es el siguiente: Código:
dm_Embalajes.cds_Embalajes.Locate('idEmbalaje', dm_Ventas.cds_VentasembalajeId.AsInteger, []); Código:
TCustomClientDataSet.MasterChanged TCustomClientDataSet.CheckDetailRecords TCustomClientDataSet.AddDataPacket TCustomClientDataSet.Check He buscado en los foros pero no he encontrado nada parecido. Puede ser problema de configuración de los CDS pero he revisado y provado un montón de variantes y nada. Cualquier sugerencia será agradecida. Gracias de antemano. salu2. |
#2
|
||||
|
||||
Hola
Da gusto ver preguntas como la tuya, que contienen un mínimo de claridad para facilitar la comprensión. Al parecer la relación establecida hace que un mismo registro detalle pueda pertenecer a dos o más registros maestros (relación muchos a muchos). Te aconsejo leer este hilo, donde se trata un problema similar: http://www.clubdelphi.com/foros/showthread.php?t=64935 Saludos. Al González. |
#3
|
|||
|
|||
Gracias Al Gonzales por tu respuesta y disculpa por la demora en responder.
Busqué pero no encontré ninguna llave repetida en la tabla master. En ese cds maestro utilizo el evento onFilterRecord, quizás pudo causar el conflicto. En definitiva cambié el ADODataSet que conectaba con el CDS del problema y lo puse en cmdText con una consulta con parámetros. Pero aqui tropezé con otro error. Cuando trato de modificar en el CDS me tira un error 'Unable to find record. No key specified'. Tengo puesto en el campo llave el pfInKey seleccionado y en el DataSetProvider el evento onGetTableName como sigue: Código:
procedure Tdm_Ventas.dsp_VentaItemsGetTableName(Sender: TObject; DataSet: TDataSet; var TableName: WideString); begin TableName := 'embalaje_item'; end; Código:
Provider.TSQLResolver.DoUpdate(???) Provider.TSQLResolver.InternalDoUpdate($5733D0,ukModify) Provider.TSQLResolver.GenUpdateSQL($1AF0680,$1ACFF40,$3FEBFE8,'') Provider.TSQLResolver.GenWhereSQL($1AF0680,$1ACFF40,$3FEBFE8,upWhereKeyOnly,'') DB.DatabaseError('Unable to find record. No key specified',???) Cualquier sugerencia o foro donde se maneje este tema. Gracias de antemano. salu2. |
#4
|
||||
|
||||
Pues es normal, jamás mencioné que la llave repetida estuviera en la tabla maestra.
|
#5
|
|||
|
|||
Tienes toda la razón, por lo visto ayer estaba un bastante saturado. Ahora vuelvo a leer el hilo que me aconsejaste y lo veo claramente. Si la tabla detalle tiene una relación de muchos a muchos habrá en memoria varios registros con la llave repetida.
Sin embargo mi relación no es N:N. Y ahora con los cambios que hice me sigue arrojando errores sobre la llave. Si pudieras darme alguna sugerencia. Gracias de antemano. salu2. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Problemas de Master-Detail con BD FireBird | Ingeniero | Conexión con bases de datos | 2 | 11-08-2008 15:42:58 |
Problemas con el Master - Detail | Wanderer | Conexión con bases de datos | 9 | 29-02-2004 19:26:18 |
Problemas de actualizacion Master-Detail | Hidalgo | Conexión con bases de datos | 2 | 05-09-2003 22:58:46 |
Problemas de actualizacion Master-Detail | Hidalgo | Firebird e Interbase | 2 | 05-09-2003 16:45:57 |
Problemas master detail | rafadrover | Conexión con bases de datos | 3 | 26-08-2003 14:13:14 |
|