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)
-   -   ¿Cómo expecificarle a un ClientDataSet que no actualize determinado campo en la BD? (https://www.clubdelphi.com/foros/showthread.php?t=79249)

d3nz1g 19-06-2012 01:36:39

¿Cómo expecificarle a un ClientDataSet que no actualize determinado campo en la BD?
 
Saludos a todos, les comento mi problema:

Tengo un ClientDataSet ligado a un grid que muestra información almacenada en la base de datos, realizo inserciones, borrados y actualizaciones a traves del clientdataset y aplico esos cambios en la base de datos mediante el método applyupdates.

Esto funciona de maravilla cuando trabajo con el clientdataset ligado a una sola tabla en la base de datos, sin embargo al realizar una consulta más compleja para llenar el clientdataset las actualizaciones me estan produciendo un error.

La consulta con la que lleno la tabla es la siguiente:

Código SQL [-]
SELECT  A.CODIGO,  A.CODIGO_FORANEO,  B.DESCRIPCION AS DESCRIPCION_FORANEA  FROM  Tabla1 A LEFT OUTER JOIN Tabla2 B ON A.CODIGO_FORANEO = B.CODIGO  ORDER BY CODIGO ASC;

La carga de datos en el grid se realiza correctamente, pero al modificar la columna del grid ligada a CODIGO_FORANEO e intentar aplicar un applyupdates me muestra el siguiente error:

Cita:

Invalid column name 'DESCRIPCION_FORANEA'
Mi pregunta es la siguiente:

¿Cómo puedo definir un campo en un clientdataset de manera que este no se tome encuenta durante las actualizaciones realizadas mediante el metodo applyupdates? ¿Existe alguna propiedad que pueda utilizar para especificarle al clientdataset que columnas no se deben actualizar en la base de datos?

fjcg02 19-06-2012 08:50:08

Sí , en la propiedad providerFlags del campo le pones pfInUpdate = False

Saludos

d3nz1g 19-06-2012 19:29:19

Sí, esa es la propiedad que buscaba, muchas gracias! Sin embargo no parece estar teniendo efecto en mi código, al aplicar el applyupdates me sigue dando el mismo error...

Según entiendo por lo que leí, sería cuestion de definirle la propiedad ProviderFlags como vacía para que no tenga la bandera pfInUpdate que trae por defecto, pero por alguna razón no me está funcionando, este es el código que estoy aplicando:

Código:

ClientDataSet.FieldByName('DESCRIPCION_FORANEA').ProviderFlags := [];
¿Será que habrá que definir algo más que se me esta escapando? ¿O será que esta propiedad hay que definirla en algún momento específico? (Yo la estoy definiendo despues de haber cargado el ClientDataSet...)


La franja horaria es GMT +2. Ahora son las 09:59:49.

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