Bonjour à tous,
J'ai développé un formulaire qui sert à importer les données provenant d'une table ACCESS de factures provenant d'un ancien système et qui redistribue les données vers les tables de factures d'un nouveau système. Dans la table d'origine, les données formant l'entête de la factue se retrouve dans le même enregistrement de la table d'importation. Par contre, plusieurs enregistrements de la table d'importation peuvent représenter plusieurs lignes de détails d'une même facture. Dans le nouveau système, la facture est répartie sous 2 tables (une d'entête et l'autre des lignes de détails de facture). J'ai aussi une table des rejets qui me sert à inscrire les anomalies que je pourrais retrouver lors de l'importation des données (ex: le prix est manquant, #de facture manquant, etc). Lors de l'inscription d'un rejet, il peut arriver que la création de la facture soit annulée ou que l'on importe tout de même les données car le rejet ne cause pas vraiment un problème dans l'intégrité de données mais sert plutôt de warning à l'usager. La sévérité du rejet peut donc entrainer ou non l'annulation de la création de factures.
Ma procédure qui importe les données fonctionne bien. J'utilise une trasactions (avec BeginTrans, Commit, Rollback) avant d'importer les données de la table d'importation.
Par contre je rencontre un problème. Ma question : est-il possible de faire un rollback mais qu'il ne s'appliquent pas à toutes les modifications qui ont été faites à la base de données depuis le BeginTrans ? Voici la raison : Lorsque j'importe les données, je commence à créer l'entête de facture (si toutes les informations sont OK) et je passe ensuite aux lignes de détails. Si je découvre des anomalies dans la ligne de détails de facture, je voudrais être en mesure de faire un rollback pour annuler la création de mon entête de facture que je viens de créer (celà fonctionne correctement) ET que les enregistrements incrits précédemment dans la table de rejets soient conservées. Car présentement, si j'annule la création de la facture, les rejets qui auraient pu être inscrits depuis le Begin Trans sont annulées. Comment puis-je éviter cela ?
Merci à l'avance pour vos réponses.
Partager