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 |
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. |
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! |
Cita:
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:02:45. |
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