Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Error al poner TClienTDataSet en estado de edicion (https://www.clubdelphi.com/foros/showthread.php?t=86332)

frandigo77 22-07-2014 10:34:35

Error al poner TClienTDataSet en estado de edicion
 
Hola buenas desarrollando en Delphi XE5.. ma ha surgido un problema con el siguiente codigo:
Código Delphi [-]
try
      D.Append;
      Result:= FEditor.Ejecutar(Owner) = mrOk;
finally

D es un TClientDataSet que apunta a un TDataSetField de Otro TClienTDataSet, cuando la linea de ejecución llega a D.Append, delphi lanza el siguiente error.' EDataBaseError 'cdsESPersonal: DataSet not in edfit or Insert Mode'. D apunta a cdsESPersonal.

Gracis.

ozsWizzard 22-07-2014 11:58:12

Parece que le mensaje dice que lo que vas a hacer afecta a cdsEPersonal y este debería estar en modo Edit o insert.

La verdad es que con un mensaje tan claro, no sé en qué o cómo puede confundirte ésto.

No se qué significa hacer append en un campo, no sé si quieres asignar un valor o insertar un registro, pero deberías hacerlo sobre cdsEPersonal, creo...

frandigo77 22-07-2014 12:03:43

...D es un ClientDataSet que apunta a cdsESPersona. La propiedad datasetfield de cdsESPersona apunta a otro TClientDataSet (cdsPersonalLab), es decir cdsESPersona es detalle de cdsPersonaLab...

ozsWizzard 22-07-2014 12:09:25

Pues entonces es cdsPersonalLab, que entiendo que es la tabla, la que debe estar en modo de edición/inserción.

ozsWizzard 22-07-2014 12:17:30

y si es D el TClientDataSet, porque me he liado un poco diciéndome que apunta a cdsEPersonal, pon Insert en lugar de append, a ver si fuera eso.

ozsWizzard 22-07-2014 12:36:35

A ver, entonces D es un TCLientDataSet que apuntan a un TDataSetField (que no sé lo que es, sé lo que es un TFIeld) que a su vez apunta a otro TClientDataSet que es cdsPersonalLab...

Algo raro veo en D.

frandigo77 22-07-2014 15:59:13

He probado a poner iNsert y sale el mismo error....
Al abrir cdsPersonaLab el proveedor asociado tb trae los registros de cdsESPersona, la tabal maesra se graba bien en caeche..falla la de detalle

orodriguezca 22-07-2014 18:57:59

Cuando se trabaja maestro-detalle usando un TDataSetField (en un TClientDataset), la tabla maestra tiene que estar en modo de edición para poder modificar el detalle. Recuerda que finalmente la tabla hija es simplemente un campo de la tabla maestra.

Código Delphi [-]
  if M.state = dsBrowse then 
    M.Edit; 

  try
      D.Append;
      Result:= FEditor.Ejecutar(Owner) = mrOk;
  finally
     .
     .
     .

frandigo77 24-07-2014 08:50:46

Problema solucionado, hay que poner la tabla de detalle en modo de inserción, el sistema maestro detalle no la pone cuando se activa la maestra para inserción/edición ..Gracias.

ozsWizzard 25-07-2014 08:11:05

Cita:

Empezado por frandigo77 (Mensaje 479322)
Problema solucionado, hay que poner la tabla de detalle en modo de inserción, el sistema maestro detalle no la pone cuando se activa la maestra para inserción/edición ..Gracias.

O sea, lo primero que te dije...


La franja horaria es GMT +2. Ahora son las 00:52:31.

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