Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-12-2009
ehdez82 ehdez82 is offline
Miembro
 
Registrado: dic 2009
Posts: 13
Poder: 0
ehdez82 Va por buen camino
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, []);
Es error sigue la ruta siguiente:

Código:
TCustomClientDataSet.MasterChanged
    TCustomClientDataSet.CheckDetailRecords
        TCustomClientDataSet.AddDataPacket
            TCustomClientDataSet.Check
Es decir en el maestro se localiza bien el registro pero cuando se va a actualizar el CDS detalle hay algún conflicto con la llave.

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.
Responder Con Cita
  #2  
Antiguo 14-12-2009
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
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.
Responder Con Cita
  #3  
Antiguo 18-12-2009
ehdez82 ehdez82 is offline
Miembro
 
Registrado: dic 2009
Posts: 13
Poder: 0
ehdez82 Va por buen camino
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;
El error sigue la ruta:
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',???)
Es la primera vez que trabajo con un CDS que conecte a una consulta y no a una tabla.
Cualquier sugerencia o foro donde se maneje este tema.

Gracias de antemano.
salu2.
Responder Con Cita
  #4  
Antiguo 18-12-2009
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Cita:
Empezado por ehdez82 Ver Mensaje
Gracias Al Gonzalez por tu respuesta y disculpa por la demora en responder.

Busqué pero no encontré ninguna llave repetida en la tabla master...
Pues es normal, jamás mencioné que la llave repetida estuviera en la tabla maestra.
Responder Con Cita
  #5  
Antiguo 18-12-2009
ehdez82 ehdez82 is offline
Miembro
 
Registrado: dic 2009
Posts: 13
Poder: 0
ehdez82 Va por buen camino
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.
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
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


La franja horaria es GMT +2. Ahora son las 11:34:53.


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