Buenas noches,
estamos dando soporte a un sistema ERP hecho en vfp 7.0 y con bd sql server 2005.
actualmente se presentan muchos inconvenientes al guardar la información por concurrencia de usuarios y errores del sistema, lo que ocasiona que queden encabezados sin detalle mezcla de información etc etc.
para evitar esto, decidimos implementar un esquema de transacciones manuales a través de la propiedad sqlsetprop y los comandos sqlcommit y sql rollback, para garantizar integridad en la información. Por ejemplo en la opción GUARDAR PEDIDO, se modifican alrededor de 6 a 8 tablas, entonces durante ese proceso las transacciones se pasan a forma manual sqlsetprop = 2 (manual) y cuando teermina de ejecutar el crud sobre la última tabla, se efectúa el sqlcommit ó si hubo algún error, se ejecuta sql rollback, finalmente se ejecuta sqlsetprop = 1 (automática).
Funciona bien con uno o dos usuarios, pero a partir de ahí, en ocasiones se genera el error adjunto de interbloqueo (interbloqueo.png). Al parecer realiza toda la tarea, pero no se si se quede algo sin ejecutar, por otra parte ese error es bien molesto al usuario final y causa demasiada confusión.
un dato importante es que existe una rutina para controlar errores ON ERROR MiError, pero no se porqué los errores de BD no llegan a esa rutina, ni siquiera cuando salen errores del tipo can not acces the selected table. se revisó donde más se llamaba on error y no se encontró, además otros tipos de errores si los captura la rutina.
por favor me pueden indicar como reducir o quitar el tipo de error adjunto (interbloqueo) usando transacciones manuales? no se si la opción set reprocess en automatic evite ue se genere este error, aunque viene directamente de sql server.
cualquier ayuda es muy bien recibida
de nuevo muchas gracias, salu2