PDA

Ver la Versión Completa : Error al poner TClienTDataSet en estado de edicion


frandigo77
22-07-2014, 10:34:35
Hola buenas desarrollando en Delphi XE5.. ma ha surgido un problema con el siguiente codigo:
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.


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
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...