Ver Mensaje Individual
  #16  
Antiguo 14-01-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Reputación: 31
Lepe Va por buen camino
Yo no he trabajado con ADO, por eso mismo no he dejado ningun mensaje en este hilo, aunque lo he visitado mucho. Puede me equivoque en las siguientes afirmaciones.

Según veo, has llegado al límite de ADO. Quiero decir, estás intentando hacer algo para lo que ADO no está preparado, así que lo más fácil es:
- Cambiar de componentes. Igual no es viable.
- hacer las cosas como ADO espera, si para ello necesitas un ClientDataset y otra parafernalia... pues ajo y agua. Como sugerencia, crea un frame que ya tenga todos esos componentes y te quite trabajo en la repetición de código.

En cuanto a la nueva pregunta, espero que los ADO tengan un evento OnPostError, lugar donde podrás capturar el error y actuar en consecuencia, pero vamos, no es lo óptimo hacer saltar un error sabiendo que siempre ocurrirá para después parchearlo.

Otra opción es usar el evento BeforePost, allí siempre harías lo mismo:
- capturar los nuevos valores que el usuario ha editado.
- Cancelar el guardado (Dataset.Cancel);
- Ejecutar tu AdoCommand.
- Hacer un refresh del registro.

Quizás lo más complejo de todo, pero "más eficiente", sea usar un StringGrid, o un control no enlazado a datos, de esa forma tendrás total libertad para moverte entre columnas del StringGrid y hacer las actualizaciones. Ésto por supuesto, necesitará mucho más código delphi.

El no tener claves primarias, es un error grave de diseño.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita