Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Problema con ClientDataset y provider (https://www.clubdelphi.com/foros/showthread.php?t=76694)

Fita 18-11-2011 20:06:47

Problema con ClientDataset y provider
 
Hola a todos...

Estoy migrando un sistema de facturación de Delphi7 a Delphi 2010.
Uso Firebird con las FibPlus
El sistema funciona perfecto en Delphi 7 pero en 2010 el clientdadaset no funciona correctamente.
Cuando se carga el pedido la cosa funciona bien. Digamos que cargo 5 items.
Hasta aquí todo bien, ahora si modifico un item o cambio alguno al hacer el applyupdates se pierden registros o repite el primer item en todos los registros del pedido.

Alguna idea?

Saludos

guillotmarc 18-11-2011 20:20:13

Hola.

Se ve muy raro.

Revisa la configuración de como se deben hacer las actualizaciones. Personalmente te recomiendo que el UpdateMode del Provider lo tengas en upWhereKeyOnly (o sinó en upWhereChanged). Y después, en los campos persistentes del FibDataset (no en los del ClientDataset), tienes que activar el pfInKey dentro de los ProviderFlags del campo persistente correspondiente a la clave primaria de la tabla.

Saludos.

Fita 23-11-2011 18:03:16

Hola... gracias por tu respuesta.

Hasta ahora tenía entendido que los campos persistentes se activaban el el ClientDataset y no en el FIBDataset.

Esto es así..?, porque de serlo cambia toda la historia (y el programa).

No obstante he probado lo que me aconsejas y no funcionó.

Espero tu respuesta, gracias nuevamente!

guillotmarc 23-11-2011 18:42:14

Cita:

Empezado por Fita (Mensaje 419245)
Hola... gracias por tu respuesta.

Hasta ahora tenía entendido que los campos persistentes se activaban el el ClientDataset y no en el FIBDataset.

Esto es así..?, porque de serlo cambia toda la historia (y el programa).

No obstante he probado lo que me aconsejas y no funcionó.

Espero tu respuesta, gracias nuevamente!

Tienes que generar los campos persistentes tanto en el ClientDataset como en el FIBDataset.

En los campos persistentes del ClientDataset es donde configuras como quieres que se comporte el campo en tu formulario (disparo de eventos, formato de presentación, DisplayLabel, etc. ...).

En los campos persistentes del FIBDataset es donde configuras como se actualiza ese campo en la base de datos (que campos forman la clave primaria, que campos se deben actualizar y que campos no se deben actualizar, etc. ...).

Asegúrate de haber seguido estos dos pasos :

a) En el TDatasetProvider cambia la propiedad UpdateMode a upWhereKeyOnly

b) En los campos persistentes del TFIBDataset cambia la propiedad ProviderFlags del campo correspondiente a la clave primaria, y activa el Flag pfInKey

Esto es lo que le indica al ClientDataset como identificar correctamente los registros para poder hacer las modificaciones.

Si aún así las actualizaciones hacen cosas extrañas, entonces habrá que buscar otros motivos, como que por ejemplo podrías tener algún trigger en la tabla que no funciona correctamente.

Saludos.


La franja horaria es GMT +2. Ahora son las 16:22:13.

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